53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
};
struct objc_abi_category {
const char *category_name;
const char *class_name;
struct objc_abi_method_list *instance_methods;
struct objc_abi_method_list *class_methods;
struct objc_abi_protocol_list *protocols;
};
struct objc_abi_super {
id self;
Class class;
};
struct objc_abi_method_description {
const char *name;
const char *types;
};
struct objc_abi_method_description_list {
int count;
struct objc_abi_method_description list[1];
};
struct objc_abi_protocol_list {
struct objc_abi_protocol_list *next;
long count;
Protocol *list[1];
};
struct objc_abi_static_instances {
const char *class_name;
id instances[1];
};
struct objc_abi_symtab {
unsigned long unknown;
|
|
<
<
<
<
<
<
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
};
struct objc_abi_category {
const char *category_name;
const char *class_name;
struct objc_abi_method_list *instance_methods;
struct objc_abi_method_list *class_methods;
struct objc_protocol_list *protocols;
};
struct objc_abi_super {
id self;
Class class;
};
struct objc_abi_method_description {
const char *name;
const char *types;
};
struct objc_abi_method_description_list {
int count;
struct objc_abi_method_description list[1];
};
struct objc_abi_static_instances {
const char *class_name;
id instances[1];
};
struct objc_abi_symtab {
unsigned long unknown;
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
BOOL empty;
};
struct objc_sparsearray_level3 {
const void *buckets[256];
BOOL empty;
};
typedef struct {
of_mutex_t mutex;
of_thread_t owner;
int count;
} objc_mutex_t;
extern void objc_register_all_categories(struct objc_abi_symtab*);
extern struct objc_abi_category** objc_categories_for_class(Class);
extern void objc_free_all_categories(void);
extern void objc_update_dtable(Class);
extern void objc_register_all_classes(struct objc_abi_symtab*);
extern Class objc_classname_to_class(const char*);
extern void objc_free_all_classes(void);
extern uint32_t objc_hash_string(const char*);
extern struct objc_hashtable* objc_hashtable_alloc(uint32_t);
|
>
>
>
>
>
>
|
|
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
BOOL empty;
};
struct objc_sparsearray_level3 {
const void *buckets[256];
BOOL empty;
};
enum objc_abi_class_info {
OBJC_CLASS_INFO_CLASS = 0x01,
OBJC_CLASS_INFO_METACLASS = 0x02,
OBJC_CLASS_INFO_INITIALIZED = 0x04
};
typedef struct {
of_mutex_t mutex;
of_thread_t owner;
int count;
} objc_mutex_t;
extern void objc_register_all_categories(struct objc_abi_symtab*);
extern struct objc_category** objc_categories_for_class(Class);
extern void objc_free_all_categories(void);
extern void objc_update_dtable(Class);
extern void objc_register_all_classes(struct objc_abi_symtab*);
extern Class objc_classname_to_class(const char*);
extern void objc_free_all_classes(void);
extern uint32_t objc_hash_string(const char*);
extern struct objc_hashtable* objc_hashtable_alloc(uint32_t);
|