2022-10-25 19:30:28 +00:00
|
|
|
#ifndef COMPILER_OBJC_H
|
|
|
|
#define COMPILER_OBJC_H
|
|
|
|
|
|
|
|
#include "compiler/common.h"
|
|
|
|
|
|
|
|
#ifdef __MWERKS__
|
|
|
|
#pragma options align=mac68k
|
|
|
|
#endif
|
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCMethodArg { // bigger in v7 (0x20 vs 0x14)
|
|
|
|
ObjCMethodArg *next;
|
2022-10-25 19:30:28 +00:00
|
|
|
HashNameNode *selector;
|
|
|
|
HashNameNode *name;
|
|
|
|
Type *type;
|
|
|
|
UInt32 qual;
|
2022-12-29 12:32:55 +00:00
|
|
|
//UInt32 unk14;
|
|
|
|
//UInt32 unk18;
|
|
|
|
//UInt32 unk1C;
|
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCMethodList { // verified via CPrec
|
|
|
|
ObjCMethodList *next;
|
|
|
|
ObjCMethod *method;
|
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCSelector { // verified via CPrec
|
|
|
|
ObjCSelector *next;
|
2022-10-25 19:30:28 +00:00
|
|
|
Object *selobject;
|
|
|
|
HashNameNode *name;
|
2022-12-29 12:32:55 +00:00
|
|
|
ObjCMethodList *methods;
|
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCMethod { // verified via CPrec
|
|
|
|
ObjCMethod *next;
|
2022-10-25 19:30:28 +00:00
|
|
|
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;
|
2022-12-29 12:32:55 +00:00
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCProtocol { // verified via CPrec
|
|
|
|
ObjCProtocol *next;
|
2022-10-25 19:30:28 +00:00
|
|
|
HashNameNode *name;
|
2022-12-29 12:32:55 +00:00
|
|
|
ObjCProtocolList *protocols;
|
2022-10-25 19:30:28 +00:00
|
|
|
ObjCMethod *methods;
|
|
|
|
Object *object;
|
2022-12-29 12:32:55 +00:00
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCProtocolList { // verified via CPrec
|
|
|
|
ObjCProtocolList *next;
|
2022-10-25 19:30:28 +00:00
|
|
|
ObjCProtocol *protocol;
|
2022-12-29 12:32:55 +00:00
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCCategory { // verified via CPrec
|
|
|
|
ObjCCategory *next;
|
2022-10-25 19:30:28 +00:00
|
|
|
HashNameNode *name;
|
|
|
|
ObjCProtocolList *protocols;
|
|
|
|
ObjCMethod *methods;
|
2022-12-29 12:32:55 +00:00
|
|
|
};
|
2022-10-25 19:30:28 +00:00
|
|
|
|
|
|
|
struct ObjCInfo { // verified via CPrec
|
|
|
|
Object *classobject;
|
|
|
|
Object *metaobject;
|
|
|
|
Object *classrefobj;
|
|
|
|
ObjCMethod *methods;
|
|
|
|
ObjCProtocolList *protocols;
|
|
|
|
ObjCCategory *categories;
|
|
|
|
Boolean is_implemented;
|
|
|
|
};
|
|
|
|
|
2022-12-29 12:32:55 +00:00
|
|
|
struct ObjCNamedArg {
|
|
|
|
ObjCNamedArg *next;
|
|
|
|
HashNameNode *name;
|
|
|
|
ENode *expr;
|
|
|
|
};
|
|
|
|
|
2022-10-25 19:30:28 +00:00
|
|
|
#ifdef __MWERKS__
|
|
|
|
#pragma options align=reset
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|