7 /****h* libfirm/type_t.h
12 * (C) 2001 by Universitaet Karlsruhe
16 * This file contains the datatypes hidden in type.h.
18 * type.h tpop_t.h tpop.h
23 entity **members; /* fields and methods of this class */
24 type **subtypes; /* direct subtypes */
25 type **supertypes; /* direct supertypes */
29 entity **members; /* fields of this struct. No method entities
34 int n_params; /* number of parameters */
35 type **param_type; /* code generation needs this information.
36 @@@ Should it be generated by the frontend,
37 or does this impose unnecessary work for
38 optimizations that change the parameters of
40 int n_res; /* number of results */
41 type **res_type; /* array with result types */
46 /* type **unioned_type; * a list of unioned types. */
47 /* ident **delim_names; * names of the union delimiters. */
48 entity **members; /* fields of this union. No method entities
54 int n_dimensions; /* Number of array dimensions. */
55 int *lower_bound; /* Lower bounds of dimensions. Usually all 0. */
56 int *upper_bound; /* Upper bounds or dimensions. */
57 type *element_type; /* The type of the array elements. */
61 int n_enums; /* Number of enumerators. */
62 tarval **enumer; /* Contains all constants that represent a member
63 of the enum -- enumerators. */
64 ident **enum_nameid;/* Contains the names of the enum fields as specified by
69 type *points_to; /* The type of the enitity the pointer points to. */
73 typedef struct { * No private attr yet. *
92 int size; /* Size of an entity of this type. This is determined
93 when fixing the layout of this class. Size must be
95 unsigned long visit; /* visited counter for walks of the type information */
96 tp_attr attr; /* type kind specific fields. This must be the last
97 entry in this struct! Varying size! */
100 /****f* type_t.h/new_type
103 * new_type - creates a new type representation
105 * type *new_type(tp_op *type_op, ir_mode *mode, ident* name);
107 * type_op - the kind of this type
108 * mode - the mode to be used for this type, may be NULL
109 * name - an ident for the name of this type.
111 * a new type of the given type. The remaining private attributes are not
116 new_type(tp_op *type_op,
120 # endif /* _TYPE_T_H_ */