17 #import "objfw-defs.h"
19 #ifndef __STDC_LIMIT_MACROS
20 # define __STDC_LIMIT_MACROS
22 #ifndef __STDC_CONSTANT_MACROS
23 # define __STDC_CONSTANT_MACROS
30 #ifdef OF_OBJFW_RUNTIME
33 # import <objc/objc.h>
36 #ifdef OF_APPLE_RUNTIME
37 # import <objc/runtime.h>
41 # define restrict __restrict__
42 #elif __STDC_VERSION__ < 199901L
47 # define __has_feature(x) 0
51 # define __GCC_VERSION__ (__GNUC__ * 100 + __GNUC_MINOR__)
53 # define __GCC_VERSION__ 0
56 #if defined(__clang__)
57 # define OF_HAVE_PROPERTIES
58 # define OF_HAVE_OPTIONAL_PROTOCOLS
59 # define OF_HAVE_FAST_ENUMERATION
60 #elif __GCC_VERSION__ >= 406
61 # define OF_HAVE_PROPERTIES
62 # define OF_HAVE_OPTIONAL_PROTOCOLS
63 # define OF_HAVE_FAST_ENUMERATION
66 #if !__has_feature(objc_instancetype)
67 # define instancetype id
70 #if __has_feature(blocks)
71 # define OF_HAVE_BLOCKS
74 #if __has_feature(objc_bool)
76 # define YES __objc_yes
81 #if defined(__clang__) || __GCC_VERSION__ >= 406
82 # define OF_SENTINEL __attribute__((sentinel))
87 #if __has_feature(objc_arc)
88 # define OF_RETURNS_RETAINED __attribute__((ns_returns_retained))
89 # define OF_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
90 # define OF_RETURNS_INNER_POINTER __attribute__((objc_returns_inner_pointer))
91 # define OF_CONSUMED __attribute__((ns_consumed))
92 # define OF_WEAK_UNAVAILABLE __attribute__((objc_arc_weak_unavailable))
94 # define OF_RETURNS_RETAINED
95 # define OF_RETURNS_NOT_RETAINED
96 # define OF_RETURNS_INNER_POINTER
98 # define OF_WEAK_UNAVAILABLE
99 # define __unsafe_unretained
101 # define __autoreleasing
104 #define OF_RETAIN_COUNT_MAX UINT_MAX
105 #define OF_NOT_FOUND SIZE_MAX
110 typedef enum of_comparison_result_t {
112 OF_ORDERED_ASCENDING = -1,
116 OF_ORDERED_DESCENDING = 1
117 } of_comparison_result_t;
122 typedef enum of_byte_order_t {
124 OF_BYTE_ORDER_BIG_ENDIAN,
126 OF_BYTE_ORDER_LITTLE_ENDIAN
190 - (BOOL)isKindOfClass: (Class)class_;
199 - (BOOL)isMemberOfClass: (Class)class_;
208 - (BOOL)respondsToSelector: (
SEL)selector;
216 - (BOOL)conformsToProtocol: (Protocol*)protocol;
224 - (IMP)methodForSelector: (
SEL)selector;
232 - (const char*)typeEncodingForSelector: (
SEL)selector;
240 - (id)performSelector: (
SEL)selector;
250 - (id)performSelector: (
SEL)selector
251 withObject: (
id)object;
263 - (id)performSelector: (
SEL)selector
264 withObject: (
id)object1
265 withObject: (
id)object2;
276 - (BOOL)isEqual: (
id)object;
401 + (BOOL)isSubclassOfClass: (Class)class_;
417 + (BOOL)instancesRespondToSelector: (
SEL)selector;
425 + (BOOL)conformsToProtocol: (Protocol*)protocol;
435 + (IMP)instanceMethodForSelector: (
SEL)selector;
444 + (const char*)typeEncodingForInstanceSelector: (
SEL)selector;
462 + (IMP)replaceClassMethod: (
SEL)selector
463 withMethodFromClass: (Class)class_;
473 + (IMP)replaceInstanceMethod: (
SEL)selector
474 withMethodFromClass: (Class)class_;
488 + (IMP)replaceClassMethod: (
SEL)selector
489 withImplementation: (IMP)implementation
490 typeEncoding: (const
char*)typeEncoding;
504 + (IMP)replaceInstanceMethod: (
SEL)selector
505 withImplementation: (IMP)implementation
506 typeEncoding: (const
char*)typeEncoding;
526 + (void)inheritMethodsFromClass: (Class)class_;
536 + (BOOL)resolveClassMethod: (
SEL)selector;
546 + (BOOL)resolveInstanceMethod: (
SEL)selector;
587 - (void*)allocMemoryWithSize: (
size_t)size;
599 - (void*)allocMemoryWithSize: (
size_t)size
600 count: (
size_t)count;
612 - (void*)resizeMemory: (
void*)pointer
627 - (void*)resizeMemory: (
void*)pointer
629 count: (
size_t)count;
638 - (void)freeMemory: (
void*)pointer;
655 - (void)performSelector: (
SEL)selector
656 afterDelay: (
double)delay;
667 - (void)performSelector: (
SEL)selector
668 withObject: (
id)object
669 afterDelay: (
double)delay;
682 - (void)performSelector: (
SEL)selector
683 withObject: (
id)object1
684 withObject: (
id)object2
685 afterDelay: (
double)delay;
694 - (void)performSelector: (
SEL)selector
696 waitUntilDone: (BOOL)waitUntilDone;
708 - (void)performSelector: (
SEL)selector
710 withObject: (
id)object
711 waitUntilDone: (BOOL)waitUntilDone;
725 - (void)performSelector: (
SEL)selector
727 withObject: (
id)object1
728 withObject: (
id)object2
729 waitUntilDone: (BOOL)waitUntilDone;
737 - (void)performSelectorOnMainThread: (
SEL)selector
738 waitUntilDone: (BOOL)waitUntilDone;
749 - (void)performSelectorOnMainThread: (
SEL)selector
750 withObject: (
id)object
751 waitUntilDone: (BOOL)waitUntilDone;
764 - (void)performSelectorOnMainThread: (
SEL)selector
765 withObject: (
id)object1
766 withObject: (
id)object2
767 waitUntilDone: (BOOL)waitUntilDone;
777 - (void)performSelector: (
SEL)selector
779 afterDelay: (
double)delay;
791 - (void)performSelector: (
SEL)selector
793 withObject: (
id)object
794 afterDelay: (
double)delay;
808 - (void)performSelector: (
SEL)selector
810 withObject: (
id)object1
811 withObject: (
id)object2
812 afterDelay: (
double)delay;
858 - (of_comparison_result_t)compare: (
id <
OFComparing>)object;
861 #import "OFObject+Serialization.h"
866 extern size_t of_pagesize;
867 extern size_t of_num_cpus;
868 extern id of_alloc_object(Class class_,
size_t extraSize,
size_t extraAlignment,