quakeforge/ruamoko/include/Object.h
Jeff Teunissen 4bd37e7b64 Switch to C-style function declarations.
Doxygen hates the QuakeC-style function prototypes we use, so switch to the
C-style prototypes.
2010-12-11 20:31:59 -05:00

155 lines
4.5 KiB
Objective-C

#ifndef __ruamoko_Object_h
#define __ruamoko_Object_h
/**
Standard boolean type
*/
typedef enum {
NO, ///< false
YES, ///< true
} BOOL;
@extern void obj_error (id object, integer code, string fmt, ...);
@extern void obj_verror (id object, integer code, string fmt, @va_list args);
//obj_error_handler obj_set_error_handler (objc_error_handler func);
@extern IMP obj_msg_lookup (id receiver, SEL op);
@extern IMP obj_msg_lookup_super (Super class, SEL op);
@extern @param obj_msg_sendv (id receiver, SEL op, @va_list args);
@extern (void []) obj_malloc (integer size);
@extern (void []) obj_atomic_malloc (integer size);
@extern (void []) obj_valloc (integer size);
@extern (void []) obj_realloc (void [] mem, integer size);
@extern (void []) obj_calloc (integer nelem, integer size);
@extern void obj_free (void [] mem);
//(void []) obj_get_uninstalled_dtable (void);
@extern Class obj_get_class (string name);
@extern Class obj_lookup_class (string name);
//Class obj_next_class (void [][] enum_stage);
@extern string sel_get_name (SEL selector);
@extern string sel_get_type (SEL selector);
@extern SEL sel_get_uid (string name);
//@extern SEL sel_get_any_uid (string name);
//@extern SEL sel_get_any_typed_uid (string name);
//@extern SEL sel_get_typed_uid (string name, string type);
@extern SEL sel_register_name (string name);
//@extern SEL sel_register_typed_name (string name, string type);
@extern BOOL sel_is_mapped (SEL aSel);
@extern Method class_get_class_method (Class class, SEL aSel);
@extern Method class_get_instance_method (Class class, SEL aSel);
@extern Class class_pose_as (Class imposter, Class superclass);
@extern id class_create_instance (Class class);
@extern string class_get_class_name (Class class);
@extern integer class_get_instance_size (Class class);
@extern Class class_get_meta_class (Class class);
@extern Class class_get_super_class (Class class);
@extern integer class_get_version (Class class);
@extern BOOL class_is_class (Class class);
@extern BOOL class_is_meta_class (Class class);
@extern void class_set_version (Class class, integer version);
@extern (void []) class_get_gc_object_type (Class class);
@extern void class_ivar_set_gcinvisible (Class class, string ivarname, BOOL gcInvisible);
@extern IMP method_get_imp (Method method);
@extern IMP get_imp (Class class, SEL sel);
@extern id object_copy (id object);
@extern id object_dispose (id object);
@extern Class object_get_class (id object);
@extern string object_get_class_name (id object);
@extern Class object_get_meta_class (id object);
@extern Class object_get_super_class (id object);
@extern BOOL object_is_class (id object);
@extern BOOL object_is_instance (id object);
@extern BOOL object_is_meta_class (id object);
@class Protocol;
@protocol Object
- (Class) class;
- (Class) superclass;
- (BOOL) isEqual: (id)anObject;
- (BOOL) isKindOfClass: (Class)aClass;
- (BOOL) isMemberOfClass: (Class)aClass;
#if 0
- (BOOL) isProxy;
#endif // proxies
- (unsigned) hash;
- (id) self;
- (string) description;
- (id) performSelector: (SEL)aSelector;
- (id) performSelector: (SEL)aSelector
withObject: (id)anObject;
- (id) performSelector: (SEL)aSelector
withObject: (id)anObject
withObject: (id)anotherObject;
- (BOOL) respondsToSelector: (SEL)aSelector;
- (BOOL) conformsToProtocol: (Protocol)aProtocol;
- (id) retain;
- (id) autorelease;
- (/*oneway*/ void) release;
- (unsigned) retainCount;
@end
@protocol Copying
/**
Returns a copy of the receiver.
*/
- copy;
@end
/**
The Ruamoko root class
*/
@interface Object <Object>
{
Class isa;
unsigned retainCount;
}
+ (id) alloc;
+ (id) new;
+ (Class) class;
+ (string) description;
+ (void) initialize;
+ (IMP) instanceMethodForSelector: (SEL)aSelector;
#if 0
+ (MethodSignature) instanceMethodSignatureForSelector: (SEL)aSelector;
#endif // invocations
+ (BOOL) instancesRespondToSelector: (SEL)aSelector;
+ (BOOL) respondsToSelector: (SEL)aSelector;
+ (BOOL) conformsToProtocol: (Protocol)aProtocol;
+ (BOOL) isKindOfClass: (Class)aClass;
+ (void) poseAsClass: (Class)aClass;
+ (Class) superclass;
- (id) init;
- (void) dealloc;
- (void) doesNotRecognizeSelector: (SEL)aSelector;
#if 0
- (void) forwardInvocation: (Invocation)anInvocation;
#endif // invocations
#if 0
- (BOOL) isProxy;
#endif // proxies
- (IMP) methodForSelector: (SEL)aSelector;
#if 0
- (MethodSignature) methodSignatureForSelector: (SEL)aSelector;
#endif // invocations
- (id) copy;
- (id) mutableCopy;
@end
@interface Object (error)
- (void) error: (string)formatString, ...;
@end
#endif //__ruamoko_Object_h