+/**
+ 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.
+*/
+/* @@@ ?? something is wrong with this. */
+void class_walk_super2sub(class_walk_func *pre,
+ class_walk_func *post,
+ void *env);
+
+
+/* Walks over all entities in the type */
+typedef void (entity_walk_func)(entity *, void *);
+void walk_types_entities(type *tp,
+ entity_walk_func *doit,
+ void *env);