normalized various syntactic constructs for firm jni.
[libfirm] / ir / tr / type.h
index 6765a65..8d4f8f7 100644 (file)
 # define _TYPE_H_
 
 # include "tpop.h"
-# include "common.h"
+# include "firm_common.h"
 # include "ident.h"
 # include "irmode.h"
 # include "bool.h"
+# include "dbginfo.h"
 
 
+/* to resolve recursion between entity.h and type.h */
 #ifndef _ENTITY_TYPEDEF_
 #define _ENTITY_TYPEDEF_
-/* to resolve recursion between entity.h and type.h */
 typedef struct entity entity;
 #endif
 
@@ -104,7 +105,10 @@ typedef struct ir_node ir_node;
  *   class, struct, method, union, array, enumeration, pointer, primitive
  * SOURCE
  */
+#ifndef _TYPE_TYPEDEF_
+#define _TYPE_TYPEDEF_
 typedef struct type type;
+#endif
 
 # include "type_or_entity.h"
 
@@ -173,6 +177,9 @@ void        set_type_link(type *tp, void *l);
  * SOURCE
  */
 extern unsigned long type_visited;
+void set_master_type_visited(unsigned long val);
+unsigned long get_master_type_visited();
+void inc_master_type_visited();
 /*****/
 
 /****f* type/is_type
@@ -304,6 +311,7 @@ bool smaller_type (type *st, type *lt);
  */
 /* create a new class type */
 type   *new_type_class (ident *name);
+type   *new_d_type_class (ident *name, dbg_info *db);
 
 /** manipulate private fields of class type  **/
 /* Adds the entity as member of the class.  */
@@ -377,8 +385,8 @@ INLINE void        set_class_peculiarity (type *clss, peculiarity pec);
 
 /* Set and get a class' dfn --
    @@@ This is an undocumented field, subject to change! */
-void set_class_dfn (type*, int);
-int  get_class_dfn (type*);
+void set_class_dfn (type *clss, int dfn);
+int  get_class_dfn (type *clss);
 
 /* typecheck */
 bool is_class_type(type *clss);
@@ -405,6 +413,7 @@ bool is_subclass_of(type *low, type *high);
  */
 /* create a new type struct */
 type   *new_type_struct (ident *name);
+type   *new_d_type_struct (ident *name, dbg_info* db);
 
 /* manipulate private fields of struct */
 void    add_struct_member   (type *strct, entity *member);
@@ -451,15 +460,16 @@ bool    is_struct_type(type *strct);
    The arrays for the parameter and result types are not initialized by
    the constructor. */
 type *new_type_method (ident *name, int n_param, int n_res);
+type *new_d_type_method (ident *name, int n_param, int n_res, dbg_info* db);
 
 /* manipulate private fields of method. */
 int   get_method_n_params  (type *method);
 type *get_method_param_type(type *method, int pos);
-void  set_method_param_type(type *method, int pos, type* type);
+void  set_method_param_type(type *method, int pos, type* tp);
 
 int   get_method_n_ress   (type *method);
 type *get_method_res_type(type *method, int pos);
-void  set_method_res_type(type *method, int pos, type* type);
+void  set_method_res_type(type *method, int pos, type* tp);
 
 /* typecheck */
 bool  is_method_type     (type *method);
@@ -479,6 +489,7 @@ bool  is_method_type     (type *method);
  */
 /* create a new type union  */
 type   *new_type_union (ident *name);
+type   *new_d_type_union (ident *name, dbg_info* db);
 
 /* manipulate private fields of struct */
 int     get_union_n_members      (type *uni);
@@ -492,17 +503,6 @@ void    remove_union_member (type *uni, entity *member);
 bool    is_union_type          (type *uni);
 /*****/
 
-#if 0
-/* We don't need these if the union has entities, which it now
-   does. The entities are necessary for the analysis algorithms. */
-type  *get_union_unioned_type (type *uni, int pos);
-void   set_union_unioned_type (type *uni, int pos, type *type);
-
-ident *get_union_delim_nameid (type *uni, int pos);
-const char *get_union_delim_name (type *uni, int pos);
-void   set_union_delim_nameid (type *uni, int pos, ident *id);
-#endif
-
 /****** type/array
  * NAME
  *   Representation of an array type.
@@ -529,6 +529,8 @@ void   set_union_delim_nameid (type *uni, int pos, ident *id);
    Set dimension sizes after call to constructor with set_* routines. */
 type *new_type_array         (ident *name, int n_dimensions,
                              type *element_type);
+type *new_d_type_array         (ident *name, int n_dimensions,
+                             type *element_type, dbg_info* db);
 
 /* manipulate private fields of array type */
 int   get_array_n_dimensions (type *array);
@@ -547,7 +549,7 @@ ir_node * get_array_upper_bound  (type *array, int dimension);
 void set_array_order (type *array, int dimension, int order);
 int  get_array_order (type *array, int dimension);
 
-void  set_array_element_type (type *array, type *type);
+void  set_array_element_type (type *array, type *tp);
 type *get_array_element_type (type *array);
 
 void  set_array_element_entity (type *array, entity *ent);
@@ -574,6 +576,7 @@ bool   is_array_type         (type *array);
 */
 /* create a new type enumeration -- set the enumerators independently */
 type   *new_type_enumeration    (ident *name, int n_enums);
+type   *new_d_type_enumeration    (ident *name, int n_enums, dbg_info* db);
 
 /* manipulate fields of enumeration type. */
 int     get_enumeration_n_enums (type *enumeration);
@@ -600,9 +603,10 @@ bool    is_enumeration_type     (type *enumeration);
  */
 /* Create a new type pointer */
 type *new_type_pointer           (ident *name, type *points_to);
+type *new_d_type_pointer           (ident *name, type *points_to, dbg_info* db);
 
 /* manipulate fields of type_pointer */
-void  set_pointer_points_to_type (type *pointer, type *type);
+void  set_pointer_points_to_type (type *pointer, type *tp);
 type *get_pointer_points_to_type (type *pointer);
 
 /* typecheck */
@@ -620,6 +624,7 @@ bool  is_pointer_type            (type *pointer);
 */
 /* create a new type primitive */
 type *new_type_primitive (ident *name, ir_mode *mode);
+type *new_d_type_primitive (ident *name, ir_mode *mode, dbg_info* db);
 
 /* typecheck */
 bool  is_primitive_type  (type *primitive);