+/* For the definition of enumeration peculiarity see type.h */
+peculiarity get_entity_peculiarity (entity *ent);
+void set_entity_peculiarity (entity *ent, peculiarity pec);
+
+/** Representation of constant values of entites **/
+/* Set current_ir_graph to get_const_code_irg() to generate a constant
+ expression. */
+/* Copies a firm subgraph that complies to the restrictions for
+ constant expressions to current_block in current_ir_graph. */
+ir_node *copy_const_value(ir_node *n);
+
+/* Set has no effect for entities of type method. */
+ir_node *get_atomic_ent_value(entity *ent);
+void set_atomic_ent_value(entity *ent, ir_node *val);
+
+/* A value of a compound entity is a pair of a value and the corresponding
+ member of the compound. */
+void add_compound_ent_value(entity *ent, ir_node *val, entity *member);
+int get_compound_ent_n_values(entity *ent);
+ir_node *get_compound_ent_value(entity *ent, int pos);
+entity *get_compound_ent_value_member(entity *ent, int pos);
+void set_compound_ent_value(entity *ent, ir_node *val, entity *member, int pos);
+void remove_compound_ent_value(entity *ent, entity *value_ent);
+/* Inits the entity ent witch must be of a one dimensional
+ array type with the values given in the values array.
+ The array must have a lower and an upper bound. Keeps the
+ order of values. Does not test whether the number of values
+ fits into the given array size. Does not test whether the
+ values have the proper mode for the array. */
+void set_array_entity_values(entity *ent, tarval **values, int num_vals);
+
+/** Fields of entities with a class type as owner **/
+/* 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.
+ Overwrittenby is the inverse of overwrites. Both add routines add
+ both relations, they only differ in the order of arguments. */
+void add_entity_overwrites (entity *ent, entity *overwritten);
+int get_entity_n_overwrites (entity *ent);
+int get_entity_overwrites_index(entity *ent, entity *overwritten);
+entity *get_entity_overwrites (entity *ent, int pos);
+void set_entity_overwrites (entity *ent, int pos, entity *overwritten);
+void remove_entity_overwrites(entity *ent, entity *overwritten);
+
+void add_entity_overwrittenby (entity *ent, entity *overwrites);
+int get_entity_n_overwrittenby (entity *ent);
+int get_entity_overwrittenby_index(entity *ent, entity *overwrites);
+entity *get_entity_overwrittenby (entity *ent, int pos);
+void set_entity_overwrittenby (entity *ent, int pos, entity *overwrites);
+void remove_entity_overwrittenby(entity *ent, entity *overwrites);
+
+/**
+ * Checks whether a pointer points to an entity.
+ *
+ * @param thing an arbitrary pointer
+ *
+ * @return
+ * true if the thing is an entity, else false
+ */
+int is_entity (void *thing);
+
+/** Returns true if the type of the entity is a primitive, pointer
+ enumeration or method type. */
+int is_atomic_entity(entity *ent);
+/** Returns true if the type of the entity is a class, structure,
+ array or union type. */
+int is_compound_entity(entity *ent);
+
+/** Returns true if ent1 and ent2 have are equal except for their owner.
+ Two entities are equal if
+ - they have the same type (the same C-struct)
+ - ...?
+*/
+bool equal_entity(entity *ent1, entity *ent2);
+
+
+unsigned long get_entity_visited(entity *ent);
+void set_entity_visited(entity *ent, unsigned long num);
+/** Sets visited field in entity to entity_visited. */
+void mark_entity_visited(entity *ent);
+bool entity_visited(entity *ent);
+bool entity_not_visited(entity *ent);
+
+
+