1*c87b03e5Sespie /* Declarations for objc-act.c. 2*c87b03e5Sespie Copyright (C) 1990, 2000, 2001 Free Software Foundation, Inc. 3*c87b03e5Sespie 4*c87b03e5Sespie This file is part of GNU CC. 5*c87b03e5Sespie 6*c87b03e5Sespie GNU CC is free software; you can redistribute it and/or modify 7*c87b03e5Sespie it under the terms of the GNU General Public License as published by 8*c87b03e5Sespie the Free Software Foundation; either version 2, or (at your option) 9*c87b03e5Sespie any later version. 10*c87b03e5Sespie 11*c87b03e5Sespie GNU CC is distributed in the hope that it will be useful, 12*c87b03e5Sespie but WITHOUT ANY WARRANTY; without even the implied warranty of 13*c87b03e5Sespie MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*c87b03e5Sespie GNU General Public License for more details. 15*c87b03e5Sespie 16*c87b03e5Sespie You should have received a copy of the GNU General Public License 17*c87b03e5Sespie along with GNU CC; see the file COPYING. If not, write to 18*c87b03e5Sespie the Free Software Foundation, 59 Temple Place - Suite 330, 19*c87b03e5Sespie Boston, MA 02111-1307, USA. */ 20*c87b03e5Sespie 21*c87b03e5Sespie #ifndef GCC_OBJC_ACT_H 22*c87b03e5Sespie #define GCC_OBJC_ACT_H 23*c87b03e5Sespie 24*c87b03e5Sespie /*** Public Interface (procedures) ***/ 25*c87b03e5Sespie 26*c87b03e5Sespie const char *objc_init PARAMS ((const char *)); 27*c87b03e5Sespie const char *objc_printable_name PARAMS ((tree, int)); 28*c87b03e5Sespie 29*c87b03e5Sespie /* used by yyparse */ 30*c87b03e5Sespie 31*c87b03e5Sespie void finish_file PARAMS ((void)); 32*c87b03e5Sespie tree start_class PARAMS ((enum tree_code, tree, tree, tree)); 33*c87b03e5Sespie tree continue_class PARAMS ((tree)); 34*c87b03e5Sespie void finish_class PARAMS ((tree)); 35*c87b03e5Sespie void start_method_def PARAMS ((tree)); 36*c87b03e5Sespie void continue_method_def PARAMS ((void)); 37*c87b03e5Sespie void finish_method_def PARAMS ((void)); 38*c87b03e5Sespie tree start_protocol PARAMS ((enum tree_code, tree, tree)); 39*c87b03e5Sespie void finish_protocol PARAMS ((tree)); 40*c87b03e5Sespie void add_objc_decls PARAMS ((void)); 41*c87b03e5Sespie 42*c87b03e5Sespie tree is_ivar PARAMS ((tree, tree)); 43*c87b03e5Sespie int is_private PARAMS ((tree)); 44*c87b03e5Sespie int is_public PARAMS ((tree, tree)); 45*c87b03e5Sespie tree add_instance_variable PARAMS ((tree, int, tree, tree, tree)); 46*c87b03e5Sespie tree add_class_method PARAMS ((tree, tree)); 47*c87b03e5Sespie tree add_instance_method PARAMS ((tree, tree)); 48*c87b03e5Sespie tree get_super_receiver PARAMS ((void)); 49*c87b03e5Sespie tree get_class_ivars PARAMS ((tree)); 50*c87b03e5Sespie tree get_class_reference PARAMS ((tree)); 51*c87b03e5Sespie tree get_static_reference PARAMS ((tree, tree)); 52*c87b03e5Sespie tree get_object_reference PARAMS ((tree)); 53*c87b03e5Sespie tree build_message_expr PARAMS ((tree)); 54*c87b03e5Sespie tree finish_message_expr PARAMS ((tree, tree, tree)); 55*c87b03e5Sespie tree build_selector_expr PARAMS ((tree)); 56*c87b03e5Sespie tree build_ivar_reference PARAMS ((tree)); 57*c87b03e5Sespie tree build_keyword_decl PARAMS ((tree, tree, tree)); 58*c87b03e5Sespie tree build_method_decl PARAMS ((enum tree_code, tree, tree, tree)); 59*c87b03e5Sespie tree build_protocol_expr PARAMS ((tree)); 60*c87b03e5Sespie tree build_objc_string_object PARAMS ((tree)); 61*c87b03e5Sespie 62*c87b03e5Sespie void objc_declare_alias PARAMS ((tree, tree)); 63*c87b03e5Sespie void objc_declare_class PARAMS ((tree)); 64*c87b03e5Sespie void objc_declare_protocols PARAMS ((tree)); 65*c87b03e5Sespie 66*c87b03e5Sespie /* the following routines are used to implement statically typed objects */ 67*c87b03e5Sespie 68*c87b03e5Sespie int objc_comptypes PARAMS ((tree, tree, int)); 69*c87b03e5Sespie void objc_check_decl PARAMS ((tree)); 70*c87b03e5Sespie 71*c87b03e5Sespie /* NeXT extensions */ 72*c87b03e5Sespie 73*c87b03e5Sespie tree build_encode_expr PARAMS ((tree)); 74*c87b03e5Sespie 75*c87b03e5Sespie /* Objective-C structures */ 76*c87b03e5Sespie 77*c87b03e5Sespie /* KEYWORD_DECL */ 78*c87b03e5Sespie #define KEYWORD_KEY_NAME(DECL) ((DECL)->decl.name) 79*c87b03e5Sespie #define KEYWORD_ARG_NAME(DECL) ((DECL)->decl.arguments) 80*c87b03e5Sespie 81*c87b03e5Sespie /* INSTANCE_METHOD_DECL, CLASS_METHOD_DECL */ 82*c87b03e5Sespie #define METHOD_SEL_NAME(DECL) ((DECL)->decl.name) 83*c87b03e5Sespie #define METHOD_SEL_ARGS(DECL) ((DECL)->decl.arguments) 84*c87b03e5Sespie #define METHOD_ADD_ARGS(DECL) ((DECL)->decl.result) 85*c87b03e5Sespie #define METHOD_DEFINITION(DECL) ((DECL)->decl.initial) 86*c87b03e5Sespie #define METHOD_ENCODING(DECL) ((DECL)->decl.context) 87*c87b03e5Sespie 88*c87b03e5Sespie /* CLASS_INTERFACE_TYPE, CLASS_IMPLEMENTATION_TYPE, 89*c87b03e5Sespie CATEGORY_INTERFACE_TYPE, CATEGORY_IMPLEMENTATION_TYPE, 90*c87b03e5Sespie PROTOCOL_INTERFACE_TYPE */ 91*c87b03e5Sespie #define CLASS_NAME(CLASS) ((CLASS)->type.name) 92*c87b03e5Sespie #define CLASS_SUPER_NAME(CLASS) ((CLASS)->type.context) 93*c87b03e5Sespie #define CLASS_IVARS(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 0) 94*c87b03e5Sespie #define CLASS_RAW_IVARS(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 1) 95*c87b03e5Sespie #define CLASS_NST_METHODS(CLASS) ((CLASS)->type.minval) 96*c87b03e5Sespie #define CLASS_CLS_METHODS(CLASS) ((CLASS)->type.maxval) 97*c87b03e5Sespie #define CLASS_STATIC_TEMPLATE(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 2) 98*c87b03e5Sespie #define CLASS_CATEGORY_LIST(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 3) 99*c87b03e5Sespie #define CLASS_PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 4) 100*c87b03e5Sespie #define CLASS_OWN_IVARS(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 5) 101*c87b03e5Sespie #define PROTOCOL_NAME(CLASS) ((CLASS)->type.name) 102*c87b03e5Sespie #define PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 0) 103*c87b03e5Sespie #define PROTOCOL_NST_METHODS(CLASS) ((CLASS)->type.minval) 104*c87b03e5Sespie #define PROTOCOL_CLS_METHODS(CLASS) ((CLASS)->type.maxval) 105*c87b03e5Sespie #define PROTOCOL_FORWARD_DECL(CLASS) TREE_VEC_ELT (TYPE_BINFO (CLASS), 1) 106*c87b03e5Sespie #define PROTOCOL_DEFINED(CLASS) TREE_USED (CLASS) 107*c87b03e5Sespie #define TYPE_PROTOCOL_LIST(TYPE) ((TYPE)->type.context) 108*c87b03e5Sespie 109*c87b03e5Sespie /* Set by `continue_class' and checked by `is_public'. */ 110*c87b03e5Sespie 111*c87b03e5Sespie #define TREE_STATIC_TEMPLATE(record_type) (TREE_PUBLIC (record_type)) 112*c87b03e5Sespie #define TYPED_OBJECT(type) \ 113*c87b03e5Sespie (TREE_CODE (type) == RECORD_TYPE && TREE_STATIC_TEMPLATE (type)) 114*c87b03e5Sespie 115*c87b03e5Sespie /* Define the Objective-C or Objective-C++ language-specific tree codes. */ 116*c87b03e5Sespie 117*c87b03e5Sespie #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, 118*c87b03e5Sespie enum objc_tree_code { 119*c87b03e5Sespie #ifdef OBJCPLUS 120*c87b03e5Sespie LAST_BASE_TREE_CODE = LAST_CPLUS_TREE_CODE, 121*c87b03e5Sespie #else 122*c87b03e5Sespie LAST_BASE_TREE_CODE = LAST_C_TREE_CODE, 123*c87b03e5Sespie #endif 124*c87b03e5Sespie #include "objc-tree.def" 125*c87b03e5Sespie LAST_OBJC_TREE_CODE 126*c87b03e5Sespie }; 127*c87b03e5Sespie #undef DEFTREECODE 128*c87b03e5Sespie 129*c87b03e5Sespie /* Hash tables to manage the global pool of method prototypes. */ 130*c87b03e5Sespie 131*c87b03e5Sespie typedef struct hashed_entry *hash; 132*c87b03e5Sespie typedef struct hashed_attribute *attr; 133*c87b03e5Sespie 134*c87b03e5Sespie struct hashed_attribute GTY(()) 135*c87b03e5Sespie { 136*c87b03e5Sespie attr next; 137*c87b03e5Sespie tree value; 138*c87b03e5Sespie }; 139*c87b03e5Sespie struct hashed_entry GTY(()) 140*c87b03e5Sespie { 141*c87b03e5Sespie attr list; 142*c87b03e5Sespie hash next; 143*c87b03e5Sespie tree key; 144*c87b03e5Sespie }; 145*c87b03e5Sespie 146*c87b03e5Sespie extern GTY ((length ("SIZEHASHTABLE"))) hash *nst_method_hash_list; 147*c87b03e5Sespie extern GTY ((length ("SIZEHASHTABLE"))) hash *cls_method_hash_list; 148*c87b03e5Sespie 149*c87b03e5Sespie #define SIZEHASHTABLE 257 150*c87b03e5Sespie 151*c87b03e5Sespie /* Objective-C/Objective-C++ @implementation list. */ 152*c87b03e5Sespie 153*c87b03e5Sespie struct imp_entry GTY(()) 154*c87b03e5Sespie { 155*c87b03e5Sespie struct imp_entry *next; 156*c87b03e5Sespie tree imp_context; 157*c87b03e5Sespie tree imp_template; 158*c87b03e5Sespie tree class_decl; /* _OBJC_CLASS_<my_name>; */ 159*c87b03e5Sespie tree meta_decl; /* _OBJC_METACLASS_<my_name>; */ 160*c87b03e5Sespie }; 161*c87b03e5Sespie 162*c87b03e5Sespie extern GTY(()) struct imp_entry *imp_list; 163*c87b03e5Sespie extern int imp_count; /* `@implementation' */ 164*c87b03e5Sespie extern int cat_count; /* `@category' */ 165*c87b03e5Sespie 166*c87b03e5Sespie /* Objective-C/Objective-C++ global tree enumeration. */ 167*c87b03e5Sespie 168*c87b03e5Sespie enum objc_tree_index 169*c87b03e5Sespie { 170*c87b03e5Sespie OCTI_STATIC_NST, 171*c87b03e5Sespie OCTI_STATIC_NST_DECL, 172*c87b03e5Sespie OCTI_SELF_ID, 173*c87b03e5Sespie OCTI_UCMD_ID, 174*c87b03e5Sespie OCTI_UNUSED_LIST, 175*c87b03e5Sespie OCTI_ELLIPSIS_NODE, 176*c87b03e5Sespie 177*c87b03e5Sespie OCTI_SELF_DECL, 178*c87b03e5Sespie OCTI_UMSG_DECL, 179*c87b03e5Sespie OCTI_UMSG_SUPER_DECL, 180*c87b03e5Sespie OCTI_GET_CLASS_DECL, 181*c87b03e5Sespie OCTI_GET_MCLASS_DECL, 182*c87b03e5Sespie OCTI_SUPER_TYPE, 183*c87b03e5Sespie OCTI_SEL_TYPE, 184*c87b03e5Sespie OCTI_ID_TYPE, 185*c87b03e5Sespie OCTI_CLS_TYPE, 186*c87b03e5Sespie OCTI_NST_TYPE, 187*c87b03e5Sespie OCTI_PROTO_TYPE, 188*c87b03e5Sespie 189*c87b03e5Sespie OCTI_CLS_CHAIN, 190*c87b03e5Sespie OCTI_ALIAS_CHAIN, 191*c87b03e5Sespie OCTI_INTF_CHAIN, 192*c87b03e5Sespie OCTI_PROTO_CHAIN, 193*c87b03e5Sespie OCTI_IMPL_CHAIN, 194*c87b03e5Sespie OCTI_CLS_REF_CHAIN, 195*c87b03e5Sespie OCTI_SEL_REF_CHAIN, 196*c87b03e5Sespie OCTI_IVAR_CHAIN, 197*c87b03e5Sespie OCTI_CLS_NAMES_CHAIN, 198*c87b03e5Sespie OCTI_METH_VAR_NAMES_CHAIN, 199*c87b03e5Sespie OCTI_METH_VAR_TYPES_CHAIN, 200*c87b03e5Sespie 201*c87b03e5Sespie OCTI_SYMBOLS_DECL, 202*c87b03e5Sespie OCTI_NST_VAR_DECL, 203*c87b03e5Sespie OCTI_CLS_VAR_DECL, 204*c87b03e5Sespie OCTI_NST_METH_DECL, 205*c87b03e5Sespie OCTI_CLS_METH_DECL, 206*c87b03e5Sespie OCTI_CLS_DECL, 207*c87b03e5Sespie OCTI_MCLS_DECL, 208*c87b03e5Sespie OCTI_SEL_TABLE_DECL, 209*c87b03e5Sespie OCTI_MODULES_DECL, 210*c87b03e5Sespie OCTI_STRG_DECL, 211*c87b03e5Sespie 212*c87b03e5Sespie OCTI_INTF_CTX, 213*c87b03e5Sespie OCTI_IMPL_CTX, 214*c87b03e5Sespie OCTI_METH_CTX, 215*c87b03e5Sespie OCTI_IVAR_CTX, 216*c87b03e5Sespie 217*c87b03e5Sespie OCTI_IMPL_TEMPL, 218*c87b03e5Sespie OCTI_CLS_TEMPL, 219*c87b03e5Sespie OCTI_CAT_TEMPL, 220*c87b03e5Sespie OCTI_UPRIV_REC, 221*c87b03e5Sespie OCTI_PROTO_TEMPL, 222*c87b03e5Sespie OCTI_SEL_TEMPL, 223*c87b03e5Sespie OCTI_UCLS_SUPER_REF, 224*c87b03e5Sespie OCTI_UUCLS_SUPER_REF, 225*c87b03e5Sespie OCTI_METH_TEMPL, 226*c87b03e5Sespie OCTI_IVAR_TEMPL, 227*c87b03e5Sespie OCTI_SYMTAB_TEMPL, 228*c87b03e5Sespie OCTI_MODULE_TEMPL, 229*c87b03e5Sespie OCTI_SUPER_TEMPL, 230*c87b03e5Sespie OCTI_OBJ_REF, 231*c87b03e5Sespie OCTI_METH_PROTO_TEMPL, 232*c87b03e5Sespie OCTI_FUNCTION1_TEMPL, 233*c87b03e5Sespie OCTI_FUNCTION2_TEMPL, 234*c87b03e5Sespie 235*c87b03e5Sespie OCTI_OBJ_ID, 236*c87b03e5Sespie OCTI_CLS_ID, 237*c87b03e5Sespie OCTI_ID_ID, 238*c87b03e5Sespie OCTI_CNST_STR_ID, 239*c87b03e5Sespie OCTI_CNST_STR_TYPE, 240*c87b03e5Sespie OCTI_CNST_STR_GLOB_ID, 241*c87b03e5Sespie OCTI_STRING_CLASS_DECL, 242*c87b03e5Sespie OCTI_SUPER_DECL, 243*c87b03e5Sespie 244*c87b03e5Sespie OCTI_MAX 245*c87b03e5Sespie }; 246*c87b03e5Sespie 247*c87b03e5Sespie extern GTY(()) tree objc_global_trees[OCTI_MAX]; 248*c87b03e5Sespie 249*c87b03e5Sespie /* List of classes with list of their static instances. */ 250*c87b03e5Sespie #define objc_static_instances objc_global_trees[OCTI_STATIC_NST] 251*c87b03e5Sespie 252*c87b03e5Sespie /* The declaration of the array administrating the static instances. */ 253*c87b03e5Sespie #define static_instances_decl objc_global_trees[OCTI_STATIC_NST_DECL] 254*c87b03e5Sespie 255*c87b03e5Sespie /* Some commonly used instances of "identifier_node". */ 256*c87b03e5Sespie 257*c87b03e5Sespie #define self_id objc_global_trees[OCTI_SELF_ID] 258*c87b03e5Sespie #define ucmd_id objc_global_trees[OCTI_UCMD_ID] 259*c87b03e5Sespie #define unused_list objc_global_trees[OCTI_UNUSED_LIST] 260*c87b03e5Sespie #define objc_ellipsis_node objc_global_trees[OCTI_ELLIPSIS_NODE] 261*c87b03e5Sespie 262*c87b03e5Sespie #define self_decl objc_global_trees[OCTI_SELF_DECL] 263*c87b03e5Sespie #define umsg_decl objc_global_trees[OCTI_UMSG_DECL] 264*c87b03e5Sespie #define umsg_super_decl objc_global_trees[OCTI_UMSG_SUPER_DECL] 265*c87b03e5Sespie #define objc_get_class_decl objc_global_trees[OCTI_GET_CLASS_DECL] 266*c87b03e5Sespie #define objc_get_meta_class_decl \ 267*c87b03e5Sespie objc_global_trees[OCTI_GET_MCLASS_DECL] 268*c87b03e5Sespie 269*c87b03e5Sespie #define super_type objc_global_trees[OCTI_SUPER_TYPE] 270*c87b03e5Sespie #define selector_type objc_global_trees[OCTI_SEL_TYPE] 271*c87b03e5Sespie #define id_type objc_global_trees[OCTI_ID_TYPE] 272*c87b03e5Sespie #define objc_class_type objc_global_trees[OCTI_CLS_TYPE] 273*c87b03e5Sespie #define instance_type objc_global_trees[OCTI_NST_TYPE] 274*c87b03e5Sespie #define protocol_type objc_global_trees[OCTI_PROTO_TYPE] 275*c87b03e5Sespie 276*c87b03e5Sespie /* Type checking macros. */ 277*c87b03e5Sespie 278*c87b03e5Sespie #define IS_ID(TYPE) \ 279*c87b03e5Sespie (TYPE_MAIN_VARIANT (TYPE) == TYPE_MAIN_VARIANT (id_type)) 280*c87b03e5Sespie #define IS_PROTOCOL_QUALIFIED_ID(TYPE) \ 281*c87b03e5Sespie (IS_ID (TYPE) && TYPE_PROTOCOL_LIST (TYPE)) 282*c87b03e5Sespie #define IS_SUPER(TYPE) \ 283*c87b03e5Sespie (super_type && TYPE_MAIN_VARIANT (TYPE) == TYPE_MAIN_VARIANT (super_type)) 284*c87b03e5Sespie 285*c87b03e5Sespie #define class_chain objc_global_trees[OCTI_CLS_CHAIN] 286*c87b03e5Sespie #define alias_chain objc_global_trees[OCTI_ALIAS_CHAIN] 287*c87b03e5Sespie #define interface_chain objc_global_trees[OCTI_INTF_CHAIN] 288*c87b03e5Sespie #define protocol_chain objc_global_trees[OCTI_PROTO_CHAIN] 289*c87b03e5Sespie #define implemented_classes objc_global_trees[OCTI_IMPL_CHAIN] 290*c87b03e5Sespie 291*c87b03e5Sespie /* Chains to manage selectors that are referenced and defined in the 292*c87b03e5Sespie module. */ 293*c87b03e5Sespie 294*c87b03e5Sespie #define cls_ref_chain objc_global_trees[OCTI_CLS_REF_CHAIN] /* Classes referenced. */ 295*c87b03e5Sespie #define sel_ref_chain objc_global_trees[OCTI_SEL_REF_CHAIN] /* Selectors referenced. */ 296*c87b03e5Sespie #define objc_ivar_chain objc_global_trees[OCTI_IVAR_CHAIN] 297*c87b03e5Sespie 298*c87b03e5Sespie /* Chains to manage uniquing of strings. */ 299*c87b03e5Sespie 300*c87b03e5Sespie #define class_names_chain objc_global_trees[OCTI_CLS_NAMES_CHAIN] 301*c87b03e5Sespie #define meth_var_names_chain objc_global_trees[OCTI_METH_VAR_NAMES_CHAIN] 302*c87b03e5Sespie #define meth_var_types_chain objc_global_trees[OCTI_METH_VAR_TYPES_CHAIN] 303*c87b03e5Sespie 304*c87b03e5Sespie 305*c87b03e5Sespie /* Backend data declarations. */ 306*c87b03e5Sespie 307*c87b03e5Sespie #define UOBJC_SYMBOLS_decl objc_global_trees[OCTI_SYMBOLS_DECL] 308*c87b03e5Sespie #define UOBJC_INSTANCE_VARIABLES_decl objc_global_trees[OCTI_NST_VAR_DECL] 309*c87b03e5Sespie #define UOBJC_CLASS_VARIABLES_decl objc_global_trees[OCTI_CLS_VAR_DECL] 310*c87b03e5Sespie #define UOBJC_INSTANCE_METHODS_decl objc_global_trees[OCTI_NST_METH_DECL] 311*c87b03e5Sespie #define UOBJC_CLASS_METHODS_decl objc_global_trees[OCTI_CLS_METH_DECL] 312*c87b03e5Sespie #define UOBJC_CLASS_decl objc_global_trees[OCTI_CLS_DECL] 313*c87b03e5Sespie #define UOBJC_METACLASS_decl objc_global_trees[OCTI_MCLS_DECL] 314*c87b03e5Sespie #define UOBJC_SELECTOR_TABLE_decl objc_global_trees[OCTI_SEL_TABLE_DECL] 315*c87b03e5Sespie #define UOBJC_MODULES_decl objc_global_trees[OCTI_MODULES_DECL] 316*c87b03e5Sespie #define UOBJC_STRINGS_decl objc_global_trees[OCTI_STRG_DECL] 317*c87b03e5Sespie 318*c87b03e5Sespie /* The following are used when compiling a class implementation. 319*c87b03e5Sespie implementation_template will normally be an interface, however if 320*c87b03e5Sespie none exists this will be equal to objc_implementation_context...it is 321*c87b03e5Sespie set in start_class. */ 322*c87b03e5Sespie 323*c87b03e5Sespie #define objc_interface_context objc_global_trees[OCTI_INTF_CTX] 324*c87b03e5Sespie #define objc_implementation_context objc_global_trees[OCTI_IMPL_CTX] 325*c87b03e5Sespie #define objc_method_context objc_global_trees[OCTI_METH_CTX] 326*c87b03e5Sespie #define objc_ivar_context objc_global_trees[OCTI_IVAR_CTX] 327*c87b03e5Sespie 328*c87b03e5Sespie #define implementation_template objc_global_trees[OCTI_IMPL_TEMPL] 329*c87b03e5Sespie #define objc_class_template objc_global_trees[OCTI_CLS_TEMPL] 330*c87b03e5Sespie #define objc_category_template objc_global_trees[OCTI_CAT_TEMPL] 331*c87b03e5Sespie #define uprivate_record objc_global_trees[OCTI_UPRIV_REC] 332*c87b03e5Sespie #define objc_protocol_template objc_global_trees[OCTI_PROTO_TEMPL] 333*c87b03e5Sespie #define objc_selector_template objc_global_trees[OCTI_SEL_TEMPL] 334*c87b03e5Sespie #define ucls_super_ref objc_global_trees[OCTI_UCLS_SUPER_REF] 335*c87b03e5Sespie #define uucls_super_ref objc_global_trees[OCTI_UUCLS_SUPER_REF] 336*c87b03e5Sespie 337*c87b03e5Sespie #define objc_method_template objc_global_trees[OCTI_METH_TEMPL] 338*c87b03e5Sespie #define objc_ivar_template objc_global_trees[OCTI_IVAR_TEMPL] 339*c87b03e5Sespie #define objc_symtab_template objc_global_trees[OCTI_SYMTAB_TEMPL] 340*c87b03e5Sespie #define objc_module_template objc_global_trees[OCTI_MODULE_TEMPL] 341*c87b03e5Sespie #define objc_super_template objc_global_trees[OCTI_SUPER_TEMPL] 342*c87b03e5Sespie #define objc_object_reference objc_global_trees[OCTI_OBJ_REF] 343*c87b03e5Sespie #define objc_method_prototype_template \ 344*c87b03e5Sespie objc_global_trees[OCTI_METH_PROTO_TEMPL] 345*c87b03e5Sespie #define function1_template objc_global_trees[OCTI_FUNCTION1_TEMPL] 346*c87b03e5Sespie #define function2_template objc_global_trees[OCTI_FUNCTION2_TEMPL] 347*c87b03e5Sespie 348*c87b03e5Sespie #define objc_object_id objc_global_trees[OCTI_OBJ_ID] 349*c87b03e5Sespie #define objc_class_id objc_global_trees[OCTI_CLS_ID] 350*c87b03e5Sespie #define objc_id_id objc_global_trees[OCTI_ID_ID] 351*c87b03e5Sespie #define constant_string_id objc_global_trees[OCTI_CNST_STR_ID] 352*c87b03e5Sespie #define constant_string_type objc_global_trees[OCTI_CNST_STR_TYPE] 353*c87b03e5Sespie #define constant_string_global_id \ 354*c87b03e5Sespie objc_global_trees[OCTI_CNST_STR_GLOB_ID] 355*c87b03e5Sespie #define string_class_decl objc_global_trees[OCTI_STRING_CLASS_DECL] 356*c87b03e5Sespie #define UOBJC_SUPER_decl objc_global_trees[OCTI_SUPER_DECL] 357*c87b03e5Sespie 358*c87b03e5Sespie #endif /* GCC_OBJC_ACT_H */ 359