summaryrefslogtreecommitdiff
path: root/includes/compiler/CSOM.h
blob: 36c3ae79ae942ca6b24aeb23577abe01e99bb1e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef COMPILER_CSOM_H
#define COMPILER_CSOM_H

#include "compiler/common.h"
#include "compiler/som.h"

#ifdef __MWERKS__
#pragma options align=mac68k
#endif
typedef struct CSOMStub {
    struct CSOMStub *next;
    Object *object;
    TypeClass *tclass;
    SInt32 offset;
    UInt8 x10;
} CSOMStub;
#ifdef __MWERKS__
#pragma options align=reset
#endif

extern CSOMStub *csom_stubs;

extern void CSOM_Setup(Boolean flag);
extern void CSOM_Cleanup(void);
extern void CSOM_CheckFuncType(TypeFunc *tfunc);
extern void CSOM_MakeSOMClass(TypeClass *tclass);
extern void CSOM_ClassComplete(TypeClass *tclass);
extern void CSOM_GenerateClassStructures(TypeClass *tclass);
extern void CSOM_PragmaReleaseOrder(void);
extern void CSOM_PragmaClassVersion(void);
extern void CSOM_PragmaMetaClass(void);
extern void CSOM_PragmaCallStyle(void);
extern void CSOM_FixNewDeleteFunctype(TypeFunc *tfunc);
extern ENode *CSOM_New(TypeClass *tclass);
extern ENode *CSOM_Delete(TypeClass *tclass, ENode *objExpr);
extern void CSOM_InitAutoClass(Object *object);
extern ENode *CSOM_SOMSelfObjectExpr(TypeClass *tclass);
extern void CSOM_InitSOMSelf(TypeClass *tclass, Statement *stmt);
extern ENode *CSOM_EnvCheck(ENode *funccall, ENodeList *checkArg);
extern ENode *CSOM_MemberVarAccess(BClassList *path, ObjMemberVar *ivar, ENode *thisExpr);
extern ENode *CSOM_MethodAccess(BClassList *path, Object *func, Boolean flag);

#endif