#ifndef COMPILER_OBJC_H #define COMPILER_OBJC_H #include "compiler/common.h" #ifdef __MWERKS__ #pragma options align=mac68k #endif struct ObjCMethodArg { // bigger in v7 (0x20 vs 0x14) ObjCMethodArg *next; HashNameNode *selector; HashNameNode *name; Type *type; UInt32 qual; //UInt32 unk14; //UInt32 unk18; //UInt32 unk1C; }; struct ObjCMethodList { // verified via CPrec ObjCMethodList *next; ObjCMethod *method; }; struct ObjCSelector { // verified via CPrec ObjCSelector *next; Object *selobject; HashNameNode *name; ObjCMethodList *methods; }; struct ObjCMethod { // verified via CPrec ObjCMethod *next; Object *object; TypeFunc *functype; ObjCSelector *selector; Type *return_type; UInt32 return_qual; ObjCMethodArg *selector_args; Boolean has_valist; Boolean is_class_method; Boolean is_defined; }; struct ObjCProtocol { // verified via CPrec ObjCProtocol *next; HashNameNode *name; ObjCProtocolList *protocols; ObjCMethod *methods; Object *object; }; struct ObjCProtocolList { // verified via CPrec ObjCProtocolList *next; ObjCProtocol *protocol; }; struct ObjCCategory { // verified via CPrec ObjCCategory *next; HashNameNode *name; ObjCProtocolList *protocols; ObjCMethod *methods; }; struct ObjCInfo { // verified via CPrec Object *classobject; Object *metaobject; Object *classrefobj; ObjCMethod *methods; ObjCProtocolList *protocols; ObjCCategory *categories; Boolean is_implemented; }; struct ObjCNamedArg { ObjCNamedArg *next; HashNameNode *name; ENode *expr; }; #ifdef __MWERKS__ #pragma options align=reset #endif #endif