#endif
/* for recursive type definiton */
-//#ifndef _TYPE_TYPEDEF_
-//#define _TYPE_TYPEDEF_
+/*#ifndef _TYPE_TYPEDEF_ */
+/*#define _TYPE_TYPEDEF_ */
/* to resolve recursion between entity.h and irgraph.h */
typedef union type type;
-//#endif
+/*#endif */
/* visited flag to traverse the type information */
type_class **supertypes; /* direct supertypes */
unsigned long visit; /* visited counter for walks of
the type information */
+ int size; /* Size of an entity of this type. This is determined
+ when fixing the layout of this class. Size must be
+ given in bytes. */
+
};
/* manipulate fields of type_class */
-const char *get_class_name (type_class *class);
-ident *get_class_ident (type_class *class);
+const char *get_class_name (type_class *clss);
+ident *get_class_ident (type_class *clss);
/* Not necessary now!
-void set_class_name (type_class *class, char *name);
-void set_class_ident (type_class *class, ident* ident);
+void set_class_name (type_class *clss, char *name);
+void set_class_ident (type_class *clss, ident* ident);
*/
-void add_class_member (type_class *class, entity *member);
-int get_class_n_member (type_class *class);
-entity *get_class_member (type_class *class, int pos);
-void set_class_member (type_class *class, entity *member, int pos);
+void add_class_member (type_class *clss, entity *member);
+int get_class_n_member (type_class *clss);
+entity *get_class_member (type_class *clss, int pos);
+void set_class_member (type_class *clss, entity *member, int pos);
+
+void add_class_subtype (type_class *clss,type_class *subtype);
+int get_class_n_subtype (type_class *clss);
+type_class *get_class_subtype (type_class *clss, int pos);
+void set_class_subtype (type_class *clss, type_class *subtype, int pos);
+
+void add_class_supertype (type_class *clss, type_class *supertype);
+int get_class_n_supertype (type_class *clss);
+type_class *get_class_supertype (type_class *clss, int pos);
+void set_class_supertype (type_class *clss, type_class *supertype, int pos);
-void add_class_subtype (type_class *class,type_class *subtype);
-int get_class_n_subtype (type_class *class);
-type_class *get_class_subtype (type_class *class, int pos);
-void set_class_subtype (type_class *class, type_class *subtype, int pos);
+int get_class_size (type_class *clss);
+void set_class_size (type_class *clss, int size);
-void add_class_supertype (type_class *class, type_class *supertype);
-int get_class_n_supertype (type_class *class);
-type_class *get_class_supertype (type_class *class, int pos);
-void set_class_supertype (type_class *class, type_class *supertype, int pos);
/*******************************************************************/
/** TYPE_STRCT **/
};
-int is_type(void *thing);
+int is_type (void *thing);
+int is_type_class (void *thing);
+int is_type_strct (void *thing);
+int is_type_method (void *thing);
+int is_type_union (void *thing);
+int is_type_array (void *thing);
+int is_type_pointer (void *thing);
+int is_type_enumeration(void *thing);
+int is_type_primitive (void *thing);