+ type_walk_func *pre,
+ type_walk_func *post,
+ void *env);
+
+/**
+ Touches every class in specified order:
+ - first the super class
+ - second the class itself
+ - third the sub classes. If new classes are created
+ during the traversal these will be visited, too.
+
+ @todo should be named class-walk
+
+ @deprecated will be removed?
+*/
+void type_walk_super2sub(type_walk_func *pre,
+ type_walk_func *post,
+ void *env);
+
+/** Walker for class types in inheritance order.
+ *
+ * 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.
+ * Starts the walk at arbitrary classes.
+ * Executes pre when first visiting a class. Executes post after
+ * visiting all superclasses.
+ *
+ * The arguments pre, post, env may be NULL. */
+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. A function type for entity walkers.
+ *
+ * @param ent points to the visited entity
+ * @param env free environment pointer
+ */
+typedef void entity_walk_func(entity *ent, void *env);