xref: /openbsd-src/gnu/usr.bin/gcc/gcc/objc/objc-act.h (revision c87b03e512fc05ed6e0222f6fb0ae86264b1d05b)
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