+/** Sets the entities visited count. */
+void set_entity_visited(entity *ent, unsigned long num);
+
+/** Sets visited field in entity to entity_visited. */
+void mark_entity_visited(entity *ent);
+
+/** Returns true if this entity was visited. */
+int entity_visited(entity *ent);
+
+/** Returns true if this entity was not visited. */
+int entity_not_visited(entity *ent);
+
+/**
+ * Returns the mask of the additional entity properties.
+ * The properties are automatically inherited from the irg if available
+ * or from the method type if they were not set using
+ * set_entity_additional_properties() or
+ * set_entity_additional_property().
+ */
+unsigned get_entity_additional_properties(entity *ent);
+
+/** Sets the mask of the additional graph properties. */
+void set_entity_additional_properties(entity *ent, unsigned property_mask);
+
+/** Sets one additional graph property. */
+void set_entity_additional_property(entity *ent, mtp_additional_property flag);
+
+/**
+ * @page unknown_entity
+ *
+ * This entity is an auxiliary entity dedicated to support analyses.
+ *
+ * The unknown entity represents that there could be an entity, but it is not
+ * known. This entity can be used to initialize fields before an analysis (not known
+ * yet) or to represent the top of a lattice (could not be determined). There exists
+ * exactly one entity unknown. This entity has as owner and as type the unknown type. It is
+ * allocated when initializing the entity module.
+ *
+ * The entity can take the role of any entity, also methods. It returns default
+ * values in these cases.
+ *
+ * The following values are set:
+ * name = "unknown_entity"
+ * ld_name = "unknown_entity"
+ * owner = unknown_type
+ * type = unknown_type
+ * allocation = allocation_automatic
+ * visibility = visibility_external_allocated
+ * offset = -1
+ * variability = variability_uninitialized
+ * value = SymConst(unknown_entity)
+ * values = NULL
+ * val_paths = NULL
+ * peculiarity = peculiarity_existent
+ * volatility = volatility_non_volatile
+ * stickyness = stickyness_unsticky
+ * ld_name = NULL
+ * overwrites = NULL
+ * overwrittenby = NULL
+ * irg = NULL
+ * link = NULL
+ */
+/* A variable that contains the only unknown entity. */
+extern entity *unknown_entity;
+
+/** Returns the unknown entity */
+entity *get_unknown_entity(void);
+
+/** Encodes how a pointer parameter is accessed. */
+typedef enum acc_bits {
+ ptr_access_none = 0, /**< no access */
+ ptr_access_read = 1, /**< read access */
+ ptr_access_write = 2, /**< write access */
+ ptr_access_rw = ptr_access_read|ptr_access_write, /**< read AND write access */
+ ptr_access_store = 4, /**< the pointer is stored */
+ ptr_access_all = ptr_access_rw|ptr_access_store /**< all possible access */
+} ptr_access_kind;
+
+#define IS_READ(a) ((a) & ptr_access_read)
+#define IS_WRITTEN(a) ((a) & ptr_access_write)
+#define IS_STORED(a) ((a) & ptr_access_store)
+
+#endif /* _ENTITY_H_ */