diff --git a/Source/NSData.m b/Source/NSData.m new file mode 100644 index 000000000..48ad54ac9 --- /dev/null +++ b/Source/NSData.m @@ -0,0 +1,224 @@ +/* Stream of bytes class for serialization and persistance in GNUStep + Copyright (C) 1995 Free Software Foundation, Inc. + + Written by: R. Andrew McCallum + Date: March 1995 + + This file is part of the GNU Objective C Class Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include + +@class NSGNUData; /* xxx Needs to be #included. */ + +@implementation NSData + +// Allocating and Initializing a Data Object + ++ (id) data +{ + return [[[NSGNUData alloc] init] + autorelease]; +} + ++ (id) dataWithBytes: (const void*)bytes + length: (unsigned int)length +{ + return [[[NSGNUData alloc] initWithBytes:bytes length:length] + autorelease]; +} + ++ (id) dataWithBytesNoCopy: (void*)bytes + length: (unsigned int)length +{ + return [[[self alloc] initWithBytesNoCopy:bytes length:length] + autorelease]; +} + ++ (id)dataWithContentsOfFile: (NSString*)path +{ + return [self notImplemented:_cmd]; +} + ++ (id) dataWithContentsOfMappedFile: (NSString*)path +{ + return [self notImplemented:_cmd]; +} + +- (id) initWithBytes: (const void*)bytes + length: (unsigned int)length +{ + /* xxx Eventually we'll have to be aware of malloc'ed memory + vs vm_allocate'd memory, etc. */ + void *buf = NSZoneMalloc([self zone], length); + memcpy(buf, bytes, length); + return [self initWithBytesNoCopy:buf length:length]; +} + +/* This is one of the designated initializer for NSData */ +- (id) initWithBytesNoCopy: (void*)bytes + length: (unsigned int)length +{ + /* xxx Eventually we'll have to be aware of malloc'ed memory + vs vm_allocate'd memory, etc. */ + [self notImplemented:_cmd]; + return nil; +} + +- (id) initWithContentsOfFile: (NSString*)path +{ + return [self notImplemented:_cmd]; +} + +- (id) initWithContentsOfMappedFile: (NSString*)path; +{ + return [self notImplemented:_cmd]; +} + +- (id) initWithData: (NSData*)data +{ + return [self initWithBytes:[data bytes] length:[data length]]; +} + + +// Accessing Data + +- (const void*) bytes +{ + [self notImplemented:_cmd]; + return NULL; +} + +- (NSString*) description +{ + /* xxx worry about escaping, NSString does that? */ + return [NSString stringWithBytes:[self bytes] length:[self length]]; +} + +- (void)getBytes: (void*)buffer +{ + [self getBytes:buffer length:[self length]]; +} + +- (void)getBytes: (void*)buffer + length: (unsigned int)length +{ + [self getBytes:buffer range:((NSRange){0, length})]; +} + +- (void)getBytes: (void*)buffer + range: (NSRange)aRange +{ + [self notImplemented:_cmd]; +} + +- (NSData*) subdataWithRange: (NSRange)aRange +{ + [self notImplemented:_cmd]; + return nil; +} + + +// Querying a Data Object +- (BOOL) isEqualToData: (NSData*)other; +{ + int len; + if ((len = [self length]) != [other length]) + return NO; + return (memcmp([self bytes], [other bytes], len) ? NO : YES); +} + +- (unsigned int)length; +{ + [self notImplemented:_cmd]; + return 0; +} + + +// Storing Data + +- (BOOL) writeToFile: (NSString*)path + atomically: (BOOL)useAuxiliaryFile +{ + [self notImplemented:_cmd]; + return NO; +} + + +// Deserializing Data + +- (unsigned int) deserializeAlignedBytesLengthAtCursor: (unsigned int*)cursor +{ + [self notImplemented:_cmd]; + return 0; +} + +- (void)deserializeBytes: (void*)buffer + length: (unsigned int)bytes + atCursor: (unsigned int*)cursor +{ + [self notImplemented:_cmd]; +} + +- (void)deserializeDataAt: (void*)data + ofObjCType: (const char*)type + atCursor: (unsigned int*)cursor + context: (id )callback +{ + return; +} + + +- (int) deserializeIntAtCursor: (unsigned int*)cursor +{ + [self notImplemented:_cmd]; + return 0; +} + +- (int) deserializeIntAtLocation: (unsigned int)location +{ + [self notImplemented:_cmd]; + return 0; +} + +- (void)deserializeInts: (int*)intBuffer + count: (unsigned int)numInts + atCursor: (unsigned int*)cursor +{ + [self notImplemented:_cmd]; +} + +- (void)deserializeInts: (int*)intBuffer +{ + [self notImplemented:_cmd]; +} + +- (id) copyWithZone: (NSZone*)zone +{ + [self notImplemented:_cmd]; + return nil; +} + +- (id) mutableCopyWithZone: (NSZone*)zone +{ + [self notImplemented:_cmd]; + return nil; +} + +@end