mirror of https://git.wuffs.org/MWCC
81 lines
1.8 KiB
C
81 lines
1.8 KiB
C
|
#ifndef COMPILER_OBJC_H
|
||
|
#define COMPILER_OBJC_H
|
||
|
|
||
|
#include "compiler/common.h"
|
||
|
|
||
|
#ifdef __MWERKS__
|
||
|
#pragma options align=mac68k
|
||
|
#endif
|
||
|
|
||
|
typedef struct ObjCMethodArg { // bigger in v7 (0x20 vs 0x14)
|
||
|
struct ObjCMethodArg *next;
|
||
|
HashNameNode *selector;
|
||
|
HashNameNode *name;
|
||
|
Type *type;
|
||
|
UInt32 qual;
|
||
|
UInt32 unk14;
|
||
|
UInt32 unk18;
|
||
|
UInt32 unk1C;
|
||
|
} ObjCMethodArg;
|
||
|
|
||
|
typedef struct ObjCMethodList { // verified via CPrec
|
||
|
struct ObjCMethodList *next;
|
||
|
struct ObjCMethod *method;
|
||
|
} ObjCMethodList;
|
||
|
|
||
|
typedef struct ObjCSelector { // verified via CPrec
|
||
|
struct ObjCSelector *next;
|
||
|
Object *selobject;
|
||
|
HashNameNode *name;
|
||
|
struct ObjCMethodList *methods;
|
||
|
} ObjCSelector;
|
||
|
|
||
|
typedef struct ObjCMethod { // verified via CPrec
|
||
|
struct 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;
|
||
|
} ObjCMethod;
|
||
|
|
||
|
typedef struct ObjCProtocol { // verified via CPrec
|
||
|
struct ObjCProtocol *next;
|
||
|
HashNameNode *name;
|
||
|
struct ObjCProtocolList *protocols;
|
||
|
ObjCMethod *methods;
|
||
|
Object *object;
|
||
|
} ObjCProtocol;
|
||
|
|
||
|
typedef struct ObjCProtocolList { // verified via CPrec
|
||
|
struct ObjCProtocolList *next;
|
||
|
ObjCProtocol *protocol;
|
||
|
} ObjCProtocolList;
|
||
|
|
||
|
typedef struct ObjCCategory { // verified via CPrec
|
||
|
struct ObjCCategory *next;
|
||
|
HashNameNode *name;
|
||
|
ObjCProtocolList *protocols;
|
||
|
ObjCMethod *methods;
|
||
|
} ObjCCategory;
|
||
|
|
||
|
struct ObjCInfo { // verified via CPrec
|
||
|
Object *classobject;
|
||
|
Object *metaobject;
|
||
|
Object *classrefobj;
|
||
|
ObjCMethod *methods;
|
||
|
ObjCProtocolList *protocols;
|
||
|
ObjCCategory *categories;
|
||
|
Boolean is_implemented;
|
||
|
};
|
||
|
|
||
|
#ifdef __MWERKS__
|
||
|
#pragma options align=reset
|
||
|
#endif
|
||
|
|
||
|
#endif
|