00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #import "objfw-defs.h"
00018
00019 #ifndef __STDC_LIMIT_MACROS
00020 # define __STDC_LIMIT_MACROS
00021 #endif
00022 #ifndef __STDC_CONSTANT_MACROS
00023 # define __STDC_CONSTANT_MACROS
00024 #endif
00025
00026 #include <stddef.h>
00027 #include <stdint.h>
00028 #include <limits.h>
00029
00030 #ifdef OF_OBJFW_RUNTIME
00031 # import <objfw-rt.h>
00032 #else
00033 # import <objc/objc.h>
00034 #endif
00035
00036 #define OF_RETAIN_COUNT_MAX UINT_MAX
00037 #define OF_INVALID_INDEX SIZE_MAX
00038
00042 typedef enum of_comparison_result_t {
00044 OF_ORDERED_ASCENDING = -1,
00046 OF_ORDERED_SAME = 0,
00048 OF_ORDERED_DESCENDING = 1
00049 } of_comparison_result_t;
00050
00054 typedef struct of_range_t {
00056 size_t start;
00058 size_t length;
00059 } of_range_t;
00060
00061 @class OFString;
00062
00066 @protocol OFObject
00070 - (Class)class;
00071
00076 - (BOOL)isKindOfClass: (Class)class_;
00077
00082 - (BOOL)respondsToSelector: (SEL)selector;
00083
00090 - (id)performSelector: (SEL)selector;
00091
00099 - (id)performSelector: (SEL)selector
00100 withObject: (id)obj;
00101
00112 - (id)performSelector: (SEL)selector
00113 withObject: (id)obj1
00114 withObject: (id)obj2;
00115
00125 - (BOOL)isEqual: (id)obj;
00126
00135 - (uint32_t)hash;
00136
00143 - retain;
00144
00148 - (unsigned int)retainCount;
00149
00156 - (void)release;
00157
00162 - autorelease;
00163 @end
00164
00168 @interface OFObject <OFObject>
00169 {
00170 @public
00172 Class isa;
00173 }
00174
00181 + (void)load;
00182
00190 + (void)initialize;
00191
00201 + alloc;
00202
00206 + (Class)class;
00207
00211 + (OFString*)className;
00212
00218 + (BOOL)isSubclassOfClass: (Class)class_;
00219
00223 + (Class)superclass;
00224
00232 + (BOOL)instancesRespondToSelector: (SEL)selector;
00233
00240 + (BOOL)conformsToProtocol: (Protocol*)protocol;
00241
00247 + (IMP)instanceMethodForSelector: (SEL)selector;
00248
00253 + (const char*)typeEncodingForInstanceSelector: (SEL)selector;
00254
00260 + (OFString*)description;
00261
00269 + (IMP)setImplementation: (IMP)newimp
00270 forClassMethod: (SEL)selector;
00271
00279 + (IMP)replaceClassMethod: (SEL)selector
00280 withMethodFromClass: (Class)class_;
00281
00289 + (IMP)setImplementation: (IMP)newimp
00290 forInstanceMethod: (SEL)selector;
00291
00299 + (IMP)replaceInstanceMethod: (SEL)selector
00300 withMethodFromClass: (Class)class_;
00301
00311 - init;
00312
00316 - (OFString*)className;
00317
00322 - (BOOL)conformsToProtocol: (Protocol*)protocol;
00323
00329 - (IMP)methodForSelector: (SEL)selector;
00330
00336 - (const char*)typeEncodingForSelector: (SEL)selector;
00337
00343 - (OFString*)description;
00344
00353 - (void)addMemoryToPool: (void*)ptr;
00354
00362 - (void*)allocMemoryWithSize: (size_t)size;
00363
00373 - (void*)allocMemoryForNItems: (size_t)nitems
00374 withSize: (size_t)size;
00375
00383 - (void*)resizeMemory: (void*)ptr
00384 toSize: (size_t)size;
00385
00395 - (void*)resizeMemory: (void*)ptr
00396 toNItems: (size_t)nitems
00397 withSize: (size_t)size;
00398
00405 - (void)freeMemory: (void*)ptr;
00406
00412 - (void)dealloc;
00413 @end
00414
00418 @protocol OFCopying
00422 - copy;
00423 @end
00424
00431 @protocol OFMutableCopying
00435 - mutableCopy;
00436 @end
00437
00443 @protocol OFComparing
00450 - (of_comparison_result_t)compare: (id)obj;
00451 @end
00452
00453 #ifdef __cplusplus
00454 extern "C" {
00455 #endif
00456 extern id objc_getProperty(id, SEL, ptrdiff_t, BOOL);
00457 extern void objc_setProperty(id, SEL, ptrdiff_t, id, BOOL, BOOL);
00458 extern size_t of_pagesize;
00459 #ifdef __cplusplus
00460 }
00461 #endif