struct objc_method_description {
SEL name;
char *types;
}
typedef struct {
const char *name;
const char *value;
} objc_property_attribute_t;
id object_copy(id obj, size_t size);
id object_dispose(id obj);
Class object_getClass(id obj);
Class object_setClass(id obj, Class cls);
BOOL object_isClass(id obj);
const char *object_getClassName(id obj);
id object_getIvar(id obj, Ivar ivar)
void object_setIvar(id obj, Ivar ivar, id value);
void object_setIvarWithStrongDefault(id obj, Ivar ivar, id value);
Class objc_getClass(const char *name);
Class objc_getMetaClass(const char *name);
Class objc_lookUpClass(const char *name);
Class objc_getRequiredClass(const char *name);
int objc_getClassList(Class *buffer, int bufferCount);
Class *objc_copyClassList(unsigned int *outCount);
const char *class_getName(Class cls);
Bool class_isMetaClass(Class cls);
int class_getVersion(Class cls);
void class_setVersion(Class cls, int version);
size_t class_getInstanceSize(Class cls);
Ivar class_getInstanceVariable(Class cls, const char *name);
Ivar class_getClassVariable(Class cls, const char *name);
Ivar *class_copyIvarList(Class cls, unsigned int *outCount);
Method class_getInstanceMethod(Class cls, SEL name);
Method class_getClassMethod(Class cls, SEL name);
IMP class_getMethodImplementation(Class cls, SEL name);
BOOL class_respondsToSelector(Class cls, SEL sel);
Method *class_copyMethodList(Class cls, unsigned int *outCount);
BOOL class_conformsToProtool(Class cls, Protocol *protocol);
Protocol * __unsafe_unretained *class_copyProtocolList(Class cls, unsigned int *outCount);
objc_property_t class_getProperty(Class cls, const char *name);
objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount);
const uint8_t *class_getIvarLayout(Class cls);
const uint8_t *class_getWeakIvarLayout(Class cls);
BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *name);
IMP class_replaceMethod(Class cls, SEL name, IMP imp, const char *types);
BOOL class_addIvar(Class cls, const char *name, sizet_t size, uint8_t alignment, const char *types);
BOOL class_addProtocol(Class cls ,Protocol *protocol);
BOOL class_addProperty(Class cls, const char *name, const objc_propety_attrbute_t *attributes, unsigned int attributeCount);
void class_repalceProperty(Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount);
void class_setIvarLayout(Class cls, const uint8_t *layout);
void class_setWeakIvarLayout(Class cls, const uint8_t *layout);
Class objc_allocateClassPair(Class superclass, const char *name, size_t sxtraBytes);
void objc_registerClassPair(Class cls);
Class objc_duplicateClass(Class original, const char *name, size_t extraBypes);
void objc_disposeClassPair(Class cls);
SEL method_getName(Method m);
IMP method_getImplementation(Method m);
const char *method_getTypeEncoding(Method m);
unsigned int method_getNumberOfArguments(Method m);
char *method_copyReturnType(Method m);
char *method_copyArgumentType(Method m, unsigned int index);
void method_getReturnType(Method m, char *dst, size_t dst_len);
void method_getArgumentType(Method m, unsigned int index, char *dst, size_t dst_len);
struct objc_method_description *method_getDescription(Method m);
IMP method_setImplementation(Method m, IMP imp);
void method_exchangeImplementations(Method m1, Method m2);
const char *ivar_getName(Ivar v);
const char *ivar_getTypeEncoding(Ivar v);
ptrdiff_t ivar_getOffset(Ivar v);
const char *property_getName(objc_property_t property);
const char *property_getAttributes(objc_property_t property);
objc_property_attribute_t *property_copyAttributeList(objc_property_t property, unsigned int *outCount);
char *property_copyAttributeValue(objc_property_t property, const char *attributeName);
Protocol *objc_getProtocol(const char *name);
Protocol * __unsafe_unretained *objc_copyProtocolList(unsigned int *outCount);
BOOL protocol_conformsToProtocol(Protocol *proto, Protocol *other);
BOOL protocol_isEqual(Protocol *proto, Protocol *other);
const char *protocol_getName(Protocol *p);
struct objc_method_description protocol_getMethodDescription(Protocol *p, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod);
struct objc_method_description *protocol_copyMethodDescriptionList(Protocol *p, BOOL isRequiredMethod, BOOL inInstanceMethod, unsigned int *outCount);
objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty);
objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount);
objc_property_t *protocol_copyPropertyList2(Protocol *proto, unsigned int *outCount, BOOL isRequiredProperty, BOOL isInstanceProperty);
Protocol * __unsafe_unretained *protocol_copyProtocolList(Protocol *proto, unsigned int *outCount);
Protocol *objc_allocateProtocol(const char *name);
void objc_registerProtocol(Protocol *proto);
void protocol_addMethodDescription(Protocol *proto, SEL name, const char *types, BOOL isRequiredMethod, BOOL isInstanceMethod);
void protocol_addProtocol(Protocol *proto, Protocol *addition);
void protocol_addProperty(Protocol *proto, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount, BOOL isRequiredProperty, BOOL isInstanceProperty);
const char **objc_copyImageNames(unsigned int *outCount);
const char *class_getImageName(Class cls);
const char **objc_copyClassNameForImage(const char *image, unsigned int *outCount);
const char *sel_getName(SEL sel);
SEL sel_getUid(const char *str);
SEL sel_registerName(const char *str);
BOOL sel_isEqual(SEL lhs, SEL rhs);
void objc_enumerationMutation(id obj);
void objc_setEnumerationMutationHandler(void (*handler)(id));
void objc_setForwardHandler(void *fwd, void *fwd_stret);
IMP imp_implementationWithBlock(id block);
id imp_getBlock(IMP anImp);
BOOL imp_removeBlock(IMP anImp);
id objc_loadWeak(id *location);
id objc_storeWeak(id *location, id obj);
void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);
id objc_getAssociatedObject(id object, const void *key);
void objc_removeAssociatedObjects(id object);