+/**
+ Touches every class in specified order:
+ - first the super class
+ - second the class itself
+ If new classes are created during the traversal these
+ will be visited, too. */
+void type_walk_super(type_walk_func *pre,
+ type_walk_func *post,
+ void *env);
+
+/** Same as type_walk_super2sub, but visits only class types.
+ Executes pre for a class if all superclasses have been visited.
+ Then iterates to subclasses. Executes post after return from
+ subclass.
+ Does not visit global type, frame types.
+
+ @bug ?? something is wrong with this.
+*/
+void class_walk_super2sub(class_walk_func *pre,
+ class_walk_func *post,
+ void *env);
+
+/**
+ * the entity walk function
+ *
+ * @param ent points to the visited entity
+ * @param env free environment pointer
+ */
+typedef void entity_walk_func(entity *ent, void *env);
+
+/**
+ * Walks over all entities in the type.
+ *
+ * @param tp the type
+ * @param doit the entity walker function
+ * @param env environment, wil be passed to the walker function
+ */
+void walk_types_entities(type *tp,
+ entity_walk_func *doit,
+ void *env);