1 /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
2 ** All rights reserved.
4 ** Authors: Martin Trapp, Christian Schaefer
14 # include "entity_t.h"
18 /*******************************************************************/
20 /*******************************************************************/
27 /*******************************************************************/
29 /*******************************************************************/
32 new_entity (type *owner, ident *name, type *type)
36 res = (entity *) malloc (sizeof (entity));
38 assert_legal_owner_of_ent(owner);
42 res->allocation = dynamic_allocated;
43 res->visibility = local;
48 switch (get_type_tpop_code(owner)) {
50 add_class_member (owner, res);
53 add_struct_member (owner, res);
56 add_union_member (owner, res);
59 set_array_element_entity(owner, res);
68 get_entity_name (entity *ent) {
70 return id_to_str(get_entity_ident(ent));
74 get_entity_ident (entity *ent) {
80 void set_entity_ld_name (entity *, char *ld_name);
81 void set_entity_ld_ident (entity *, ident *ld_ident);
85 get_entity_owner (entity *ent) {
90 set_entity_owner (entity *ent, type *owner) {
91 assert_legal_owner_of_ent(owner);
95 inline void /* should this go into type.c? */
96 assert_legal_owner_of_ent(type *owner) {
97 assert (get_type_tpop_code(owner) == tpo_class ||
98 get_type_tpop_code(owner) == tpo_union ||
99 get_type_tpop_code(owner) == tpo_struct ||
100 get_type_tpop_code(owner) == tpo_array); /* Yes, array has an entity
101 -- to select fields! */
105 get_entity_ld_ident (entity *ent)
107 if (ent->ld_name == NULL)
108 ent->ld_name = mangle_entity (ent);
112 void set_entity_ld_ident (entity *, ident *ld_ident) {
113 ent->ld_name = ld_ident;
117 char *get_entity_ld_name (entity *);
118 void set_entity_ld_name (entity *, char *ld_name);
122 get_entity_type (entity *ent) {
127 set_entity_type (entity *ent, type *type) {
132 inline ent_allocation
133 get_entity_allocation (entity *ent) {
134 return ent->allocation;
138 set_entity_allocation (entity *ent, ent_allocation al) {
139 ent->allocation = al;
143 inline ent_visibility
144 get_entity_visibility (entity *ent) {
145 return ent->visibility;
149 set_entity_visibility (entity *ent, ent_visibility vis) {
150 if (vis != local) assert(ent->allocation == static_allocated);
151 ent->visibility = vis;
155 get_entity_offset (entity *ent) {
160 set_entity_offset (entity *ent, int offset) {
161 ent->offset = offset;
165 get_entity_irg(entity *ent) {
167 assert (is_method_type(ent->type));
172 set_entity_irg(entity *ent, ir_graph *irg) {
173 assert (ent && ent->type);
175 assert (is_method_type(ent->type));