summaryrefslogtreecommitdiff
path: root/includes/compiler/CObjC.h
blob: 30a16bbb2f94b09a426b323a982ce8db41703550 (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
#ifndef COMPILER_COBJC_H
#define COMPILER_COBJC_H

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

extern Type *cobjc_type_class;
extern Type *cobjc_type_id;
extern Type *cobjc_type_sel;
extern TypeClass *cobjc_currentclass;
extern ObjCSelector **cobjc_selhashtable;
extern BClassList *cobjc_classdefs;
extern ObjCProtocol *cobjc_protocols;
extern long cobjc_selrefcount;
extern long cobjc_classrefcount;
extern long cobjc_stringcount;
extern Boolean cobjc_encodemethod;

extern void CObjC_Setup(void);
extern void CObjC_Cleanup(void);
extern void CObjC_GenerateModule(void);
extern Type *CObjC_GetObjCType_id(Boolean flag);
extern Boolean CObjC_IsType_id(Type *type);
extern Boolean CObjC_IsCompatibleType(Type *a, Type *b);
extern void CObjC_TranslateSelectorToken(void);
extern void CObjC_ParseDefs(TypeStruct *tstruct);
extern Type *CObjC_ParseID(void);
extern Type *CObjC_ParseTypeProtocol(TypeClass *tclass);
extern void CObjC_ParseInterface(void);
extern void CObjC_ParseImplementation(void);
extern void CObjC_ParseProtocol(void);
extern void CObjC_ParseClassDeclaration(void);
extern void *CObjC_ParseIdentifier(/* unknown args */);
extern ENode *CObjC_MakeSendMsgExpr(ENode *objexpr, TypeClass *tclass, ObjCNamedArg *namedArgs, ENodeList *unnamedArgs, UInt8 calltype, Boolean isSuper);
extern ENode *CObjC_ParseMessageExpression(void);
extern ENode *CObjC_ParseEncodeExpression(void);
extern ENode *CObjC_ParseAtExpression(void);
extern ENode *CObjC_ParseProtocolExpression(void);
extern ENode *CObjC_ParseSelectorExpression(void);

#endif