This is SimpleString.m in view mode; [Download] [Up]
/* -*-C-*- ******************************************************************************* * * File: SimpleString.m * RCS: $Header: /usr/local/lib/cvs/EnhanceMail/SimpleString.m,v 1.1.1.4 1996/06/23 16:10:11 cedman Exp $ * Description: * Author: Carl Edman * Created: Tue Oct 17 23:45:45 1995 * Modified: Sat Jun 22 19:10:45 1996 (Carl Edman) cedman@capitalist.princeton.edu * Language: C * Package: N/A * Status: Experimental (Do Not Distribute) * * (C) Copyright 1995, but otherwise this file is perfect freeware. * ******************************************************************************* */ #import "SimpleString.h" #define START 64 @implementation SimpleString - init { cur=data=malloc(START); *cur='\0'; return [super init]; } - free { free(data); return [super free]; } - grow { int pos=cur-data; data=realloc(data,malloc_size(data)*2); cur=data+pos; return self; } - (char *)string { return data; } - (int)length { return cur-data; } - empty { cur=data; *cur='\0'; return self; } - (int)appendChar:(char)c { while (cur+1>=data+malloc_size(data)) [self grow]; *cur++=c; *cur='\0'; return cur-data; } - (int)appendString:(const char *)str { return [self appendString:str length:strlen(str)]; } - (int)appendString:(const char *)str length:(int)len { while (cur+len>=data+malloc_size(data)) [self grow]; while(len>0) { *cur++=*str++; len--; } *cur='\0'; return cur-data; } - (int)appendStream:(NXStream *)s { int c; while ((c=NXRead(s,cur,data+malloc_size(data)-cur))>0) { cur+=c; if (cur>=data+malloc_size(data)) [self grow]; } *cur='\0'; return cur-data; } - (int)appendFile:(int)fd { int c; while ((c=read(fd,cur,data+malloc_size(data)-cur))>0) { cur+=c; if (cur>=data+malloc_size(data)) [self grow]; } *cur='\0'; return cur-data; } - (int)writeFile:(int)fd { char *pos; int c; for(pos=data;pos<cur;) { c=write(fd,pos,cur-pos); if (c<0) return c; pos+=c; } return cur-data; } - (int)appendSimpleString:(id)sstr { char *d=[sstr string]; int l=[sstr length]; return [self appendString:d length:l]; } - (int)includeSimpleString:(id)sstr { int ret; ret=[self appendSimpleString:sstr]; [sstr free]; return ret; } - (int)lastChar { return (cur>data) ? *(cur-1) : -1; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.