31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
|
struct objc_abi_class {
struct objc_abi_class *_Nonnull metaclass;
const char *_Nullable superclass;
const char *_Nonnull name;
unsigned long version;
unsigned long info;
long instance_size;
void *_Nullable ivars;
struct objc_abi_method_list *_Nullable methodlist;
void *_Nullable dtable;
void *_Nullable subclass_list;
void *_Nullable sibling_class;
long instanceSize;
void *_Nullable iVars;
struct objc_abi_method_list *_Nullable methodList;
void *_Nullable DTable;
void *_Nullable subclassList;
void *_Nullable siblingClass;
void *_Nullable protocols;
void *_Nullable gc_object_type;
long abi_version;
int32_t *_Nonnull *_Nullable ivar_offsets;
void *_Nullable GCObjectType;
long ABIVersion;
int32_t *_Nonnull *_Nullable iVarOffsets;
void *_Nullable properties;
};
struct objc_abi_selector {
const char *_Nonnull name;
const char *_Nullable types;
const char *_Nullable typeEncoding;
};
struct objc_abi_method {
struct objc_abi_selector sel;
IMP _Nonnull imp;
struct objc_abi_selector selector;
IMP _Nonnull implementation;
};
struct objc_abi_method_list {
struct objc_abi_method_list *_Nullable next;
unsigned int count;
struct objc_abi_method methods[1];
};
struct objc_abi_category {
const char *_Nonnull category_name;
const char *_Nonnull class_name;
struct objc_abi_method_list *_Nullable instance_methods;
struct objc_abi_method_list *_Nullable class_methods;
const char *_Nonnull categoryName;
const char *_Nonnull className;
struct objc_abi_method_list *_Nullable instanceMethods;
struct objc_abi_method_list *_Nullable classMethods;
struct objc_protocol_list *_Nullable protocols;
};
struct objc_abi_method_description {
const char *_Nonnull name;
const char *_Nonnull types;
const char *_Nonnull typeEncoding;
};
struct objc_abi_method_description_list {
int count;
struct objc_abi_method_description list[1];
};
struct objc_abi_static_instances {
const char *_Nonnull class_name;
const char *_Nonnull className;
id _Nullable instances[1];
};
struct objc_abi_symtab {
unsigned long unknown;
struct objc_abi_selector *_Nullable sel_refs;
uint16_t cls_def_cnt;
uint16_t cat_def_cnt;
struct objc_abi_selector *_Nullable selectorRefs;
uint16_t classDefsCount;
uint16_t categoryDefsCount;
void *_Nonnull defs[1];
};
struct objc_abi_module {
unsigned long version; /* 9 = non-fragile */
unsigned long size;
const char *_Nullable name;
struct objc_abi_symtab *_Nonnull symtab;
};
struct objc_hashtable_bucket {
const void *_Nonnull key, *_Nonnull obj;
const void *_Nonnull key, *_Nonnull object;
uint32_t hash;
};
struct objc_hashtable {
uint32_t (*_Nonnull hash)(const void *_Nonnull key);
bool (*_Nonnull equal)(const void *_Nonnull key1,
const void *_Nonnull key2);
uint32_t count, size;
struct objc_hashtable_bucket *_Nonnull *_Nullable data;
};
struct objc_sparsearray {
struct objc_sparsearray_data {
void *_Nullable next[256];
} *_Nonnull data;
uint8_t index_size;
uint8_t indexSize;
};
struct objc_dtable {
struct objc_dtable_level2 {
#ifdef OF_SELUID24
struct objc_dtable_level3 {
IMP _Nullable buckets[256];
|