** - execute the post function after recursion
*/
+/* $Id$ */
-/* walk over all type information reachable from the ir graph. */
+/* walk over all type information reachable from the ir graph. */
+#ifndef _TYPEWALK_H_
+#define _TYPEWALK_H_
# include "type_or_entity.h"
-/** dumps all type information reachable from irg **/
-void type_walk(ir_graph *irg,
- void (pre)(type_or_ent*, void*), void (post)(type_or_ent*, void*),
- void *env);
+/** Walks over all type information reachable from global roots.
+ Touches every type and entity in unspecified order. If new
+ types/entities are created during the traversal these will
+ be visited, too. **/
+void type_walk(void (pre)(type_or_ent*, void*),
+ void (post)(type_or_ent*, void*),
+ void *env);
+
+/** walks over all type information reachable from irg **/
+void type_walk_irg(ir_graph *irg,
+ void (pre)(type_or_ent*, void*),
+ void (post)(type_or_ent*, void*),
+ void *env);
+
+/** Walks over all classes information reachable from global roots.
+ 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. **/
+/** @@@ shoulc be named class-walk **/
+void type_walk_super2sub(void (pre)(type_or_ent*, void*),
+ void (post)(type_or_ent*, void*),
+ void *env);
+
+#endif /* _TYPEWALK_H_ */