X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Fentity_t.h;h=fafbfeb8ff81a720ceedab7e06a6571a10689974;hb=823a3abad1ab22cc4db2073410bf8f0e200441bc;hp=2ef439d7b3a4377428b63fa4c08264cadab02644;hpb=357cb9f9c38e5ec367590aa867af1aee7e29497c;p=libfirm diff --git a/ir/tr/entity_t.h b/ir/tr/entity_t.h index 2ef439d7b..fafbfeb8f 100644 --- a/ir/tr/entity_t.h +++ b/ir/tr/entity_t.h @@ -1,29 +1,31 @@ -/* -** Copyright (C) 1998 - 2000 by Universitaet Karlsruhe -** All rights reserved. -** -** Authors: Martin Trapp, Christian Schaefer, -** Goetz Lindenmaier -** -** entity.h: entities represent all program known objects. -** -** An entity is the representation of program known objects in Firm. -** The primary concept of entities is to represent members of complex -** types, i.e., fields and methods of classes. As not all programming -** language model all variables and methods as members of some class, -** the concept of entities is extended to cover also local and global -** variables, and arbitrary procedures. -** -** An entity always specifies the type of the object it represents and -** the type of the object it is a part of, the owner of the entity. -** Originally this is the type of the class of which the entity is a -** member. -** The owner of local variables is the procedure they are defined in. -** The owner of global variables and procedures visible in the whole -** program is a universally defined class type "GlobalType". The owner -** of procedures defined in the scope of an other procedure is the -** enclosing procedure. -** +/*10 2002/03/19 13:08:33 +* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe +* All rights reserved. +*/ + +/** +* @file entity_t.h +* +* entity.h: entities represent all program known objects. +* +* @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier +* +* An entity is the representation of program known objects in Firm. +* The primary concept of entities is to represent members of complex +* types, i.e., fields and methods of classes. As not all programming +* language model all variables and methods as members of some class, +* the concept of entities is extended to cover also local and global +* variables, and arbitrary procedures. +* +* An entity always specifies the type of the object it represents and +* the type of the object it is a part of, the owner of the entity. +* Originally this is the type of the class of which the entity is a +* member. +* The owner of local variables is the procedure they are defined in. +* The owner of global variables and procedures visible in the whole +* program is a universally defined class type "GlobalType". The owner +* of procedures defined in the scope of an other procedure is the +* enclosing procedure. */ /* $Id$ */ @@ -33,42 +35,51 @@ # include "entity.h" -#ifndef _IR_GRAPH_TYPEDEF_ -#define _IR_GRAPH_TYPEDEF_ -/* to resolve recursion between entity.h and irgraph.h */ -typedef struct ir_graph ir_graph; -#endif - +/** the type of an entity */ struct entity { - firm_kind kind; - ident *name; /* name of this entity */ - ident *ld_name; /* Unique name of this entity, i.e., the mangled - name. E.g., for a class `A' with field `a' this + firm_kind kind; /**< dynamic type tag for entity. */ + ident *name; /**< name of this entity */ + ident *ld_name; /**< Unique name of this entity, i.e., the mangled + name. If the field is read before written a default + magling is applies. The name of the owner is prepended + to the name of the entity, separated by a underscore. + E.g., for a class `A' with field `a' this is the ident for `A_a'. */ - type *type; /* The type of this entity, e.g., a method type, 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. */ - 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 + type *owner; /**< The compound type (e.g. class type) this entity belongs to. */ + ent_allocation allocation; /**< Distinguishes static and dynamically allocated + entities and some further cases. */ + ent_visibility visibility; /**< Specifies visibility to external program fragments */ - ent_variability variability; /* Specifies variability of entities content */ - ent_volatility volatility; /* Specifies volatility 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 + ent_variability variability; /**< Specifies variability of entities content */ + ent_volatility volatility; /**< Specifies volatility of entities content */ + 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. + void *link; /**< To store some intermediate information */ + unsigned long visit; /**< visited counter for walks of the type information */ + struct dbg_info* dbi; /**< A pointer to information for debug support. */ + + /* ------------- fields for atomic entities ---------------*/ + ir_node *value; /**< value if entity is not of variability uninitialized. + Only for atomic entities. */ + + /* ------------- fields for compound entities ---------------*/ + ir_node **values; /**< constant values of compound entities. Only available if + variablility not uninitialized. Must be set for variability constant + */ + entity **val_ents; /**< entities corresponding to constant values. Only available if + variablility not uninitialized. Must be set for variability constant */ + + /* ------------- fields for entities owned by a class type ---------------*/ + entity **overwrites; /**< A list of entities this entity overwrites. */ + entity **overwrittenby; /**< A list of entities that overwrite this entity. */ + + /* ------------- fields for methods ---------------*/ + enum peculiarity peculiarity; + 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?? Yes, it must be here. */ - unsigned long visit; /* visited counter for walks of the type information */ };