-typedef union type_or_id * type_or_id_p;
-INLINE symconst_kind get_SymConst_kind (ir_node *node);
-INLINE void set_SymConst_kind (ir_node *node, symconst_kind num);
-/* Only to access SymConst of kind type_tag or size. Else assertion: */
-INLINE type *get_SymConst_type (ir_node *node);
-INLINE void set_SymConst_type (ir_node *node, type *tp);
-/* Only to access SymConst of kind linkage_ptr_info. Else assertion: */
-INLINE ident *get_SymConst_ptrinfo (ir_node *node);
-INLINE void set_SymConst_ptrinfo (ir_node *node, ident *ptrinfo);
-/* Sets both: type and ptrinfo. Needed to treat the node independent of
- its semantics. Does a memcpy for the memory tori points to. */
-INLINE type_or_id_p get_SymConst_type_or_id (ir_node *node);
-INLINE void set_SymConst_type_or_id (ir_node *node, type_or_id_p tori);
-
-INLINE ir_node *get_Sel_mem (ir_node *node);
-INLINE void set_Sel_mem (ir_node *node, ir_node *mem);
-INLINE ir_node *get_Sel_ptr (ir_node *node); /* ptr to the object to select from */
-INLINE void set_Sel_ptr (ir_node *node, ir_node *ptr);
-INLINE ir_node **get_Sel_index_arr (ir_node *node);
-INLINE int get_Sel_n_indexs (ir_node *node);
-INLINE ir_node *get_Sel_index (ir_node *node, int pos);
-INLINE void set_Sel_index (ir_node *node, int pos, ir_node *index);
-INLINE entity *get_Sel_entity (ir_node *node); /* entity to select */
-INLINE void set_Sel_entity (ir_node *node, entity *ent);
-
-/* @@@ ajacs specific node -- not supported */
-type *get_InstOf_ent (ir_node *node);
-void set_InstOf_ent (ir_node *node, type *ent);
-ir_node *get_InstOf_obj (ir_node *node);
-void set_InstOf_obj (ir_node *node, ir_node *obj);
-ir_node *get_InstOf_store (ir_node *node);
-void set_InstOf_store (ir_node *node, ir_node *obj);
-
-INLINE ir_node *get_Call_mem (ir_node *node);
-INLINE void set_Call_mem (ir_node *node, ir_node *mem);
-INLINE ir_node *get_Call_ptr (ir_node *node);
-INLINE void set_Call_ptr (ir_node *node, ir_node *ptr);
-INLINE ir_node **get_Call_param_arr (ir_node *node);
-INLINE int get_Call_n_params (ir_node *node);
-INLINE ir_node *get_Call_param (ir_node *node, int pos);
-INLINE void set_Call_param (ir_node *node, int pos, ir_node *param);
-INLINE type *get_Call_type (ir_node *node);
-INLINE void set_Call_type (ir_node *node, type *tp);
-INLINE int get_Call_arity (ir_node *node);
-
-/* Set, get and remove the callee-analysis. */
-int get_Call_n_callees(ir_node * node);
-entity * get_Call_callee(ir_node * node, int pos);
-void set_Call_callee_arr(ir_node * node, int n, entity ** arr);
-void remove_Call_callee_arr(ir_node * node);
-
-ir_node * get_CallBegin_ptr (ir_node *node);
-void set_CallBegin_ptr (ir_node *node, ir_node *ptr);
-ir_graph *get_CallBegin_irg (ir_node *node);
-ir_node *get_CallBegin_call (ir_node *node);
-void set_CallBegin_call (ir_node *node, ir_node *call);
+
+/** SymConst attributes
+ This union contains the symbolic information represented by the node */
+union symconst_symbol {
+ type *type_p;
+ ident *ident_p;
+ entity *entity_p;
+};
+
+
+typedef union symconst_symbol symconst_symbol;
+
+
+/** Access the kind of the SymConst. */
+symconst_kind get_SymConst_kind (const ir_node *node);
+void set_SymConst_kind (ir_node *node, symconst_kind num);
+
+/** Only to access SymConst of kind type_tag or size. Else assertion: */
+type *get_SymConst_type (ir_node *node);
+void set_SymConst_type (ir_node *node, type *tp);
+
+/** Only to access SymConst of kind addr_name. Else assertion: */
+ident *get_SymConst_name (ir_node *node);
+void set_SymConst_name (ir_node *node, ident *name);
+
+/** Only to access SymConst of kind addr_ent. Else assertion: */
+entity *get_SymConst_entity (ir_node *node);
+void set_SymConst_entity (ir_node *node, entity *ent);
+
+/** Sets both: type and ptrinfo. Needed to treat the node independent of
+ its semantics. Does a memcpy for the memory sym points to. */
+/* write 'union': firmjni then does not create a method... */
+union symconst_symbol get_SymConst_symbol (ir_node *node);
+void set_SymConst_symbol (ir_node *node,
+ union symconst_symbol sym);
+
+ir_node *get_Sel_mem (ir_node *node);
+void set_Sel_mem (ir_node *node, ir_node *mem);
+ir_node *get_Sel_ptr (ir_node *node); /* ptr to the object to select from */
+void set_Sel_ptr (ir_node *node, ir_node *ptr);
+ir_node **get_Sel_index_arr (ir_node *node);
+int get_Sel_n_indexs (ir_node *node);
+ir_node *get_Sel_index (ir_node *node, int pos);
+void set_Sel_index (ir_node *node, int pos, ir_node *index);
+entity *get_Sel_entity (ir_node *node); /* entity to select */
+void set_Sel_entity (ir_node *node, entity *ent);
+
+/**
+ * Projection numbers for result of Call node: use for Proj nodes!
+ */
+typedef enum {
+ pn_Call_M_regular = 0, /**< The memory result. */
+ pn_Call_T_result = 2, /**< The tuple containing all (0, 1, 2, ...) results */
+ pn_Call_P_value_res_base = 4,/**< A pointer to the memory region containing copied results
+ passed by value (for compound result types). */
+ pn_Call_X_except = 1, /**< The control flow result branching to the exception handler */
+ pn_Call_M_except = 3, /**< The memory result in case the called method terminated with
+ an exception */
+ pn_Call_max = 5 /**< number of prejections from a Call */
+} pn_Call; /* Projection numbers for Call. */
+
+ir_node *get_Call_mem (ir_node *node);
+void set_Call_mem (ir_node *node, ir_node *mem);
+ir_node *get_Call_ptr (ir_node *node);
+void set_Call_ptr (ir_node *node, ir_node *ptr);
+ir_node **get_Call_param_arr (ir_node *node);
+/** Gets the number of parameters of a call. */
+int get_Call_n_params (ir_node *node);
+/** Gets the call parameter at position pos. */
+ir_node *get_Call_param (ir_node *node, int pos);
+/** Sets the call parameter at position pos. */
+void set_Call_param (ir_node *node, int pos, ir_node *param);
+/** Gets the type of a call. */
+type *get_Call_type (ir_node *node);
+/** Sets the type of a call. */
+void set_Call_type (ir_node *node, type *tp);
+/** Gets the arity of a call. Identical to get_Call_n_params(). */
+int get_Call_arity (ir_node *node);
+
+/* Set, get and remove the callee-analysis.
+ The array is only accessible if information is valid.
+ It contains NULL for called methods that are not within
+ the compilation unit. */
+int Call_has_callees (ir_node *node);
+int get_Call_n_callees (ir_node * node);
+entity *get_Call_callee (ir_node * node, int pos);
+/* assumes current_ir_graph set properly! */
+void set_Call_callee_arr (ir_node * node, int n, entity ** arr);
+void remove_Call_callee_arr(ir_node * node);
+
+ir_node *get_CallBegin_ptr (ir_node *node);
+void set_CallBegin_ptr (ir_node *node, ir_node *ptr);
+ir_node *get_CallBegin_call (ir_node *node);
+void set_CallBegin_call (ir_node *node, ir_node *call);
+
+ir_node *get_FuncCall_ptr (ir_node *node);
+void set_FuncCall_ptr (ir_node *node, ir_node *ptr);
+ir_node **get_FuncCall_param_arr (ir_node *node);
+/** Gets the number of parameters of a func call. */
+int get_FuncCall_n_params (ir_node *node);
+/** Gets the func call parameter at position pos. */
+ir_node *get_FuncCall_param (ir_node *node, int pos);
+/** Sets the func call parameter at position pos. */
+void set_FuncCall_param (ir_node *node, int pos, ir_node *param);
+/** Gets the type of a func call. */
+type *get_FuncCall_type (ir_node *node);
+/** Sets the type of a func call. */
+void set_FuncCall_type (ir_node *node, type *tp);
+/** Gets the arity of a func call. Identical to get_FuncCall_n_params(). */
+int get_FuncCall_arity (ir_node *node);
+
+/* Set, get and remove the callee-analysis.
+ The array is only accessible if information is valid.
+ It contains NULL for called methods that are not within
+ the compilation unit. */
+int FuncCall_has_callees (ir_node *node);
+int get_FuncCall_n_callees (ir_node * node);
+entity *get_FuncCall_callee (ir_node * node, int pos);
+/* assumes current_ir_graph set properly! */
+void set_FuncCall_callee_arr (ir_node * node, int n, entity ** arr);
+void remove_FuncCall_callee_arr(ir_node * node);