Some access routines for visited flags in entity.h, irnode.h,
[libfirm] / ir / tr / entity_t.h
index 570c4b7..8538fc9 100644 (file)
 **
 */
 
+/* $Id$ */
+
 # ifndef _ENTITY_T_H_
 # define _ENTITY_T_H_
 
-# include "ident.h"
-# include "type.h"
+# include "entity.h"
 
 #ifndef _IR_GRAPH_TYPEDEF_
 #define _IR_GRAPH_TYPEDEF_
@@ -46,14 +47,26 @@ struct entity {
                            is the ident for `A_a'. */
   type *type;           /* The type of this entity, e.g., a method type, a
                            basic type of the language or a class itself */
-  type *owner;          /* The class this entity belongs to.  In case of local variables
-                          the method they are defined in. */
+  type *owner;          /* The class this entity belongs to.  In case of local
+                          variables the method they are defined in. */
+  entity **overwrites;  /* A list of entities this entity overwrites.  */
+  ent_allocation allocation;  /* Distinguishes static and dynamically allocated
+                                entities. */
+  ent_visibility visibility;  /* Specifies visibility to external program
+                                fragments */
+  ent_variability variability;  /* Specifies variability of entities content */
+  ir_node *value;            /* value of atomic entity */
+  ir_node **values;     /* values of compound entities */
+  entity **val_ents;    /* entities corresponding to constant values */
+  int  offset;          /* Offset in byte for this entity.  Fixed when layout
+                          of owner is determined.  */
+  void *link;           /* To store some intermediate information */
   /* for methods */
   ir_graph *irg;        /* If (type == method_type) this is the corresponding irg.
                           The ir_graph constructor automatically sets this field.
                           @@@ Does this go here, or should it be in type_method,
-                          or should Call have an attribute ent?? */
-  /* Do we need to remember the initializer of fields? */
+                          or should Call have an attribute ent??
+                          Yes, it must be here. */
   unsigned long visit;  /* visited counter for walks of the type information */
 };