Allow easy user-modification of concrete class.

([NSData +_setConcreteClass:]): New method.
([NSData +_setMutableConcreteClass:]): New method.
([NSData +_concreteClass]): New method.
([NSData +_mutableConcreteClass]): New method.
([NSData +initialize]): New method.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@489 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
mccallum 1995-07-03 22:10:49 +00:00
parent 14d7b1e14c
commit b1fe8f95a0

View file

@ -31,25 +31,55 @@
@implementation NSData @implementation NSData
static Class NSData_concrete_class;
static Class NSMutableData_concrete_class;
+ (void) _setConcreteClass: (Class)c
{
NSData_concrete_class = c;
}
+ (void) _setMutableConcreteClass: (Class)c
{
NSMutableData_concrete_class = c;
}
+ (Class) _concreteClass
{
return NSData_concrete_class;
}
+ (Class) _mutableConcreteClass
{
return NSMutableData_concrete_class;
}
+ (void) initialize
{
NSData_concrete_class = [NSGData class];
NSMutableData_concrete_class = [NSGMutableData class];
}
// Allocating and Initializing a Data Object // Allocating and Initializing a Data Object
+ (id) data + (id) data
{ {
return [[[NSGData alloc] init] return [[[[self _concreteClass] alloc] init]
autorelease]; autorelease];
} }
+ (id) dataWithBytes: (const void*)bytes + (id) dataWithBytes: (const void*)bytes
length: (unsigned int)length length: (unsigned int)length
{ {
return [[[NSGData alloc] initWithBytes:bytes length:length] return [[[[self _concreteClass] alloc] initWithBytes:bytes length:length]
autorelease]; autorelease];
} }
+ (id) dataWithBytesNoCopy: (void*)bytes + (id) dataWithBytesNoCopy: (void*)bytes
length: (unsigned int)length length: (unsigned int)length
{ {
return [[[NSGData alloc] initWithBytesNoCopy:bytes length:length] return [[[[self _concreteClass] alloc]
initWithBytesNoCopy:bytes length:length]
autorelease]; autorelease];
} }
@ -58,13 +88,13 @@
* though. */ * though. */
+ (id)dataWithContentsOfFile: (NSString*)path + (id)dataWithContentsOfFile: (NSString*)path
{ {
return [[[NSGData alloc] initWithContentsOfFile:path] return [[[[self _concreteClass] alloc] initWithContentsOfFile:path]
autorelease]; autorelease];
} }
+ (id) dataWithContentsOfMappedFile: (NSString*)path + (id) dataWithContentsOfMappedFile: (NSString*)path
{ {
return [[[NSGData alloc] initWithContentsOfMappedFile:path] return [[[[self _concreteClass] alloc] initWithContentsOfMappedFile:path]
autorelease]; autorelease];
} }
@ -442,13 +472,14 @@
+ (id) dataWithCapacity: (unsigned int)numBytes + (id) dataWithCapacity: (unsigned int)numBytes
{ {
return [[[[NSGMutableData class] alloc] initWithCapacity:numBytes] return [[[[[self _mutableConcreteClass] class] alloc]
initWithCapacity:numBytes]
autorelease]; autorelease];
} }
+ (id) dataWithLength: (unsigned int)length + (id) dataWithLength: (unsigned int)length
{ {
return [[[[NSGMutableData class] alloc] initWithLength:length] return [[[[[self _mutableConcreteClass] class] alloc] initWithLength:length]
autorelease]; autorelease];
} }