This is BufferClass.m in view mode; [Download] [Up]
// Copyright H. Giesen, University of Koblenz-Landau 1996 #import "BufferClass.h" @implementation BufferClass - (char*)buffer; { return buffer; } - (void) clear { if( buffer ) buffer[0] = '\0'; } - (void) setLength:(int)len { if( buffer==NULL ) return; buffer[ (len<size-1) ? len : size-1 ] = '\0'; } - free { if( buffer ) free( buffer ); return [super free]; } - init { buffer = NULL; size = 0; return [super init]; } - initBufferSize:(int)aSize { buffer = (unsigned char *)malloc( aSize ); size = aSize; return [super init]; } - (unsigned int)size { return size; } - (void) validateBuffer:(int)aSize { int newSize = ((aSize + 511)/512)*512; if( newSize==0 ) newSize = 512; // this can happen ! if( buffer ){ if( size >= aSize ) return; buffer = realloc( buffer, newSize ); size = newSize; } else{ buffer = (unsigned char *)malloc( newSize ); size = newSize; } } - setMinSizeTo:(int)minSize { [self validateBuffer:minSize]; return self; } - setText:(const char *)aString { int len = strlen( aString ); [self validateBuffer:len]; strcpy( buffer, aString ); return self; } - setText:(const char *)aString length:(int)len { return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.