(-read:, -write:): added

Stripped anything added by
kane@cc.purdue.edu which is not considered "minor changes"

From-SVN: r4090
This commit is contained in:
Kresten Krab Thorup 1993-04-12 15:41:52 +00:00
parent 5375a2043d
commit e9dce16126

View File

@ -38,148 +38,101 @@ extern int errno;
@implementation Object
// Initialize a class
// often overridden by subclasses
+ initialize
{
return self;
}
// Initialize an instance
// this method does not apply to class objects
// often overridden by subclasses (should call superclass version)
- init
{
return self;
}
// Create and initialize an instance of a class
// not usually overridden by subclasses (should call superclass version)
+ new
{
return [[self alloc] init];
}
// Creates an instance of a class
// should NOT be overridden by subclasses
+ alloc
{
return class_create_instance(self);
}
// Free an instance
// this method does not apply to class objects
// often overridden by subclasses (should call superclass version)
- free
{
return object_dispose(self);
}
// Create a copy of the receiving instance
// this method does not apply to class objects
// not usually overridden by subclasses
- copy
{
return [[self shallowCopy] deepen];
}
// Creates a copy of only the receiving instance
// this method does not apply to class objects
// should NOT be overridden by subclasses
- shallowCopy
{
return object_copy(self);
}
// Deepens a shallow copy of an instance
// this method does not apply to class objects
// often overridden by subclasses (should call superclass version)
- deepen
{
return self;
}
// Creates a recursive copy of the receiving instance
// this method does not apply to class objects
// may be overridden by subclasses
// Not correct, but included for compatibility with Stepstone
- deepCopy
{
return [self copy];
}
// Return the class object or the class of an instance
// not usually overridden by subclasses
- (Class_t)class
{
return object_get_class(self);
}
// Return the superclass of a class or instance
// not usually overridden by subclasses
- (Class_t)superClass
{
return object_get_super_class(self);
}
// Return the metaclass of a class or instance
// not usually overridden by subclasses
- (MetaClass_t)metaClass
{
return object_get_meta_class(self);
}
// Return the character string name of a class or an instance's class
// not usually overridden by subclasses
- (const char *)name
{
return object_get_class_name(self);
}
// Return the receiving class or instance object
// not usually overridden by subclasses
- self
{
return self;
}
// Return a hash value for a class or instance object
// not usually overridden by subclasses
- (unsigned int)hash
{
return (unsigned int)self;
}
// Indicates if anObject is the receiving class or instance object
// not usually overridden by subclasses
- (BOOL)isEqual:anObject
{
return self==anObject;
}
// Indicates if the receiver is a metaclass object
// should NOT be overridden by subclasses
- (BOOL)isMetaClass
{
return NO;
}
// Indicates if the receiver is a class object
// should NOT be overridden by subclasses
- (BOOL)isClass
{
return object_is_class(self);
}
// Indicates if the receiver is an instance object
// should NOT be overridden by subclasses
- (BOOL)isInstance
{
return object_is_instance(self);
}
// Indicates if the receiver is a type of aClassObject
// not usually overridden by subclasses
- (BOOL)isKindOf:(Class_t)aClassObject
{
Class_t class;
@ -190,15 +143,11 @@ extern int errno;
return NO;
}
// Indicates if the receiver is a member of the aClassObject class
// not usually overridden by subclasses
- (BOOL)isMemberOf:(Class_t)aClassObject
{
return self->isa==aClassObject;
}
// Indicates if the receiver is a type of the class named aClassName
// not usually overridden by subclasses
- (BOOL)isKindOfClassNamed:(const char *)aClassName
{
Class_t class;
@ -210,23 +159,17 @@ extern int errno;
return NO;
}
// Indicates if the receiver is a member of the class named aClassName
// not usually overridden by subclasses
- (BOOL)isMemberOfClassNamed:(const char *)aClassName
{
return ((aClassName!=NULL)
&&!strcmp(class_get_class_name(self->isa), aClassName));
}
// Indicates if instances of a class respond to the message aSel
// not usually overridden by subclasses
+ (BOOL)instancesRespondTo:(SEL)aSel
{
return class_get_instance_method(self, aSel)!=METHOD_NULL;
}
// Indicates if the receiving class or instance responds to the message aSel
// not usually overridden by subclasses
- (BOOL)respondsTo:(SEL)aSel
{
return ((object_is_instance(self)
@ -234,8 +177,6 @@ extern int errno;
:class_get_class_method(self->isa, aSel))!=METHOD_NULL);
}
// Returns the address of a class's instance method
// not usually overridden by subclasses
+ (IMP)instanceMethodFor:(SEL)aSel
{
return method_get_imp(class_get_instance_method(self, aSel));
@ -261,9 +202,6 @@ extern int errno;
return NO;
}
// Returns the address of a class's class or an instance's instance method
// not usually overridden by subclasses
- (IMP)methodFor:(SEL)aSel
{
return (method_get_imp(object_is_instance(self)
@ -271,16 +209,12 @@ extern int errno;
:class_get_class_method(self->isa, aSel)));
}
// Returns a method description for a class's instance method aSel
// not usually overridden by subclasses
+ (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel
{
return ((struct objc_method_description *)
class_get_instance_method(self, aSel));
}
// Returns a description for a class's class or an instance's instance method
// not usually overridden by subclasses
- (struct objc_method_description *)descriptionForMethod:(SEL)aSel
{
return ((struct objc_method_description *)
@ -289,8 +223,6 @@ extern int errno;
:class_get_class_method(self->isa, aSel)));
}
// Sends the message aSel, which takes no parameters, to the receiver
// not usually overridden by subclasses
- perform:(SEL)aSel
{
IMP msg = objc_msg_lookup(self, aSel);
@ -299,8 +231,6 @@ extern int errno;
return (*msg)(self, aSel);
}
// Sends the message aSel, which takes one id parameter, to the receiver
// not usually overridden by subclasses
- perform:(SEL)aSel with:anObject
{
IMP msg = objc_msg_lookup(self, aSel);
@ -309,8 +239,6 @@ extern int errno;
return (*msg)(self, aSel, anObject);
}
// Sends the message aSel, which takes two id parameters, to the receiver
// not usually overridden by subclasses
- perform:(SEL)aSel with:anObject1 with:anObject2
{
IMP msg = objc_msg_lookup(self, aSel);
@ -319,30 +247,21 @@ extern int errno;
return (*msg)(self, aSel, anObject1, anObject2);
}
// Forwards a message to which a class or instance object does not respond
// may be overridden by subclasses
- forward:(SEL)aSel :(arglist_t)argFrame
{
return [self doesNotRecognize: aSel];
}
// Sends a message aSel, of arbitrary arguments, to the receiver
// should NOT be overridden by subclasses
- performv:(SEL)aSel :(arglist_t)argFrame
{
return objc_msg_sendv(self, aSel, method_get_argsize(0), argFrame);
}
// Instructs the runtime system that the receiver is to pose for aClassObject
// not usually overridden by subclasses
+ poseAs:(Class_t)aClassObject
{
return class_pose_as(self, aClassObject);
}
// Changes the receiver's class to be aClassObject
// this method does not apply to class objects
// not usually overridden by subclasses
- (Class_t)transmuteClassTo:(Class_t)aClassObject
{
if (object_is_instance(self))
@ -357,31 +276,22 @@ extern int errno;
return nil;
}
// Indicates that a subclass did not override a class or instance message
// it was supposed to have overridden
// not usually overridden by subclasses
- subclassResponsibility:(SEL)aSel
{
return [self error:"subclass should override %s", sel_get_name(aSel)];
}
// Indicates that a class or instance method has not been implemented
// may be overridden by subclasses
- notImplemented:(SEL)aSel
{
return [self error:"method %s not implemented", sel_get_name(aSel)];
}
// Reports that a class or instance does not recognize the message aSel
// not usually overridden by subclasses
- doesNotRecognize:(SEL)aSel
{
return [self error:"%s does not recognize %s",
object_get_class_name(self), sel_get_name(aSel)];
}
// Reports an error
// not usually overridden by subclasses
- error:(const char *)aString, ...
{
#define FMT "error: %s (%s)\n%s\n"
@ -399,15 +309,11 @@ extern int errno;
#undef FMT
}
// Returns the class's version number
// not usually overridden by subclasses
+ (int)version
{
return class_get_version(self);
}
// Sets the class's version number
// not usually overridden by subclasses
+ setVersion:(int)aVersion
{
class_set_version(self, aVersion);
@ -432,23 +338,10 @@ extern int errno;
return self;
}
// These are used to read or write class information, such as static
// variables used in that class. The version number of the class being
// read can be obtained from
// objc_typed_stream_class_version(stream, class_name)
+ write: (TypedStream*)aStream
- awake: (TypedStream*)aStream
{
// [super write: aStream];
// [super awake: aStream];
return self;
}
+ read: (TypedStream*)aStream
{
// [super read: aStream];
return self;
}
@end