#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(); 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