typedef struct ir_graph ir_graph;
#endif
+/****s* entity/entity
+ *
+ * NAME
+ * entity - An abstract data type to represent program entites.
+ * NOTE
+ *
+ * ... not documented ...
+ *
+ * ATTRIBUTES
+ *
+ *
+ * These fields can only be accessed via access functions.
+ *
+ * SEE ALSO
+ * type
+ * SOURCE
+ */
+
#ifndef _ENTITY_TYPEDEF_
#define _ENTITY_TYPEDEF_
/* to resolve recursion between entity.h and type.h */
Automatically inserts the new entity as a member of owner.
The mangled name ld_name is set to NULL. */
entity *copy_entity_name (entity *old, ident *new_name);
-/* manipulate fields of entity */
+
+/** manipulate fields of entity **/
const char *get_entity_name (entity *ent);
ident *get_entity_ident (entity *ent);
/* returns the mangled name of the entity. If the mangled name is
*/
type *get_entity_owner (entity *ent);
+/* Sets the owner field in entity to owner. */
void set_entity_owner (entity *ent, type *owner);
inline void assert_legal_owner_of_ent(type *owner);
int get_entity_offset (entity *ent);
void set_entity_offset (entity *ent, int offset);
+/* Overwrites is a field that specifies that an access to the overwritten
+ entity in the supertype must use this entity. It's a list as with
+ multiple inheritance several enitites can be overwritten. This field
+ is mostly useful for method entities.
+ If a Sel node selects an entity that is overwritten by other entities it
+ must return a pointer to the entity of the dynamic type of the pointer
+ that is passed to it. Lowering of the Sel node must assure this. */
+void add_entity_overwrites (entity *ent, entity *overwritten);
+int get_entity_n_overwrites (entity *ent);
+entity *get_entity_overwrites (entity *ent, int pos);
+void set_entity_overwrites (entity *ent, int pos, entity *overwritten);
+/* Do we need a second relation "overwritten"? */
+
/* The entity knows the corresponding irg if the entity is a method.
This allows to get from a Call to the called irg. */
ir_graph *get_entity_irg(entity *ent);
void set_entity_irg(entity *ent, ir_graph *irg);
+
+/*****/
+
# endif /* _ENTITY_H_ */