home *** CD-ROM | disk | FTP | other *** search
-
- /* Generated by Interface Builder */
-
- #import "String.h"
- #import <strings.h>
- #import <stdlib.h>
- #import <stdio.h>
- #import <NXCType.h>
- #import <c.h>
-
- @implementation String
-
- - setString:(char *)AString
- {
- // If it's outta bounds theres nothing to do
- if(!AString)
- return self;
-
- // First see if we have to allocate space to the string
- [self preAlloc :strlen(AString)+1];
- strcpy(buffer,AString); /* Copy in string */
-
- return self;
- }
-
- - (char *)string
- {
- return buffer;
- }
-
- - freeString
- {
- if(!buffer)
- return self; /* Get out if nothing to free */
-
- /* Free up string here */
- free(buffer);
- /* Blank buffer and length so we know it's blank */
- buffer = 0;
- length = 0;
-
- return self;
- }
-
- - (BOOL)writeString :(NXStream *)MyStream
- {
- if(length)
- {
- int strlength = strlen(buffer);
-
- if(NXWrite(MyStream,buffer,strlength) != strlength)
- return FALSE; /* A Problem */
- }
-
- return TRUE;
- }
-
- - (BOOL)writeWithTerminator :(NXStream *)MyStream :(char)terminator
- {
- return [self writeWithTerminator :MyStream :&terminator :1];
- }
-
- - (BOOL)writeWithTerminator :(NXStream *)MyStream :(char *)terminator :(int)mylength
- {
- if(![self writeString :MyStream])
- return FALSE;
-
- if(NXWrite(MyStream,terminator,mylength) != mylength)
- return FALSE;
-
- return TRUE;
- }
-
- - (int)readString: (NXStream *)MyStream
- {
- char TempBuffer[2024];
- int mylength;
-
- mylength = 0;
-
- do
- {
- if(NXRead(MyStream,&TempBuffer[mylength],1) != 1)
- break; /* Problem!! */
- if((!NXIsPrint(TempBuffer[mylength])) && (TempBuffer[mylength] != 0xA))
- continue;
- mylength++;
- }
- while(TempBuffer[mylength-1] != 0xA);
-
- if(mylength == 0) // Didn't read anything
- return 0;
-
- TempBuffer[mylength-1] = 0; /* Strip off linefeed */
-
- /* Allocate some memory for our buffer */
- [self setString:TempBuffer];
-
- return strlen(TempBuffer)+1;
- }
-
- - (void)free
- {
- [self freeString];
- [super free];
- }
-
- - init
- {
- [super init];
-
- /* Do my initialisation */
- buffer = 0;
- length = 0;
-
- return self;
- }
-
- - preAlloc :(int)size
- {
- if(size <= length)
- return self; // we already have that size available
-
- [self freeString];
- buffer = malloc(size);
- buffer[0] = 0;
- length = size;
-
- return self;
- }
-
- @end
-