objc-runtime-new.h [plain text]
#define RO_META (1<<0)
#define RO_ROOT (1<<1)
#define RO_HAS_CXX_STRUCTORS (1<<2)
#define RO_HIDDEN (1<<4)
#define RO_EXCEPTION (1<<5)
#define RO_FROM_BUNDLE (1<<29)
#define RO_FUTURE (1<<30)
#define RO_REALIZED (1<<31)
#define RW_REALIZED (1<<31)
#define RW_FUTURE (1<<30)
#define RW_INITIALIZED (1<<29)
#define RW_INITIALIZING (1<<28)
#define RW_COPIED_RO (1<<27)
#define RW_CONSTRUCTING (1<<26)
#define RW_CONSTRUCTED (1<<25)
#define RW_FINALIZE_ON_MAIN_THREAD (1<<24)
#define RW_LOADED (1<<23)
#define RW_SPECIALIZED_VTABLE (1<<22)
#define RW_INSTANCES_HAVE_ASSOCIATED_OBJECTS (1<<21)
typedef struct method_t {
SEL name;
const char *types;
IMP imp;
} method_t;
typedef struct method_list_t {
uint32_t entsize_NEVER_USE; uint32_t count;
struct method_t first;
} method_list_t;
typedef struct ivar_t {
uintptr_t *offset;
const char *name;
const char *type;
uint32_t alignment __attribute__((deprecated));
uint32_t size;
} ivar_t;
typedef struct ivar_list_t {
uint32_t entsize;
uint32_t count;
struct ivar_t first;
} ivar_list_t;
typedef uintptr_t protocol_ref_t;
typedef struct protocol_t {
id isa;
const char *name;
struct protocol_list_t *protocols;
method_list_t *instanceMethods;
method_list_t *classMethods;
method_list_t *optionalInstanceMethods;
method_list_t *optionalClassMethods;
struct objc_property_list *instanceProperties;
} protocol_t;
typedef struct protocol_list_t {
uintptr_t count;
protocol_ref_t list[0]; } protocol_list_t;
typedef struct class_ro_t {
uint32_t flags;
uint32_t instanceStart;
uint32_t instanceSize;
#ifdef __LP64__
uint32_t reserved;
#endif
const uint8_t * ivarLayout;
const char * name;
const method_list_t * baseMethods;
const protocol_list_t * baseProtocols;
const ivar_list_t * ivars;
const uint8_t * weakIvarLayout;
const struct objc_property_list *baseProperties;
} class_ro_t;
typedef struct class_rw_t {
uint32_t flags;
uint32_t version;
const class_ro_t *ro;
struct method_list_t **methods;
struct chained_property_list *properties;
struct protocol_list_t ** protocols;
struct class_t *firstSubclass;
struct class_t *nextSiblingClass;
} class_rw_t;
typedef struct class_t {
struct class_t *isa;
struct class_t *superclass;
Cache cache;
IMP *vtable;
class_rw_t *data;
} class_t;
typedef struct category_t {
const char *name;
struct class_t *cls;
struct method_list_t *instanceMethods;
struct method_list_t *classMethods;
struct protocol_list_t *protocols;
struct objc_property_list *instanceProperties;
} category_t;
struct objc_super2 {
id receiver;
Class current_class;
};