X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Ftypewalk.h;h=6b9262ac079a1174ae13390d837a84e5679684c9;hb=f3157bda5e3b46233ea4ec9abd8499a8e7bb83ff;hp=dafea61f9272c069e3da87c3e8002b2a5838df7a;hpb=2e3dc475cf5d9edd3ecd6143f44fb1a45f7630d5;p=libfirm diff --git a/ir/tr/typewalk.h b/ir/tr/typewalk.h index dafea61f9..6b9262ac0 100644 --- a/ir/tr/typewalk.h +++ b/ir/tr/typewalk.h @@ -1,13 +1,13 @@ /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe -** All rights reserved. -** -** Author: Goetz Lindenmaier -** -** traverse the type information. The walker walks the whole ir graph -** to find the distinct type trees in the type graph forest. -** - execute the pre function before recursion -** - execute the post function after recursion +* All rights reserved. +* +* Author: Goetz Lindenmaier +* +* traverse the type information. The walker walks the whole ir graph +* to find the distinct type trees in the type graph forest. +* - execute the pre function before recursion +* - execute the post function after recursion */ /* $Id$ */ @@ -21,21 +21,24 @@ # include "type_or_entity.h" -/** Walks over all type information reachable from global roots. +typedef void (type_walk_func)(type_or_ent *, void *); +typedef void (class_walk_func)(type *, void *); + +/** 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 type_walk(type_walk_func *pre, + type_walk_func *post, 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*), + type_walk_func *pre, + type_walk_func *post, void *env); -/** Walks over all type information reachable from global roots. +/** Touches every class in specified order: - first the super class - second the class itself @@ -43,18 +46,18 @@ void type_walk_irg(ir_graph *irg, during the traversal these will be visited, too. **/ /** @@@ should be named class-walk **/ /* @@@ will be removed? */ -void type_walk_super2sub(void (pre)(type_or_ent*, void*), - void (post)(type_or_ent*, void*), +void type_walk_super2sub(type_walk_func *pre, + type_walk_func *post, void *env); -/** Walks over all type information reachable from global roots. +/** 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(void (pre)(type_or_ent*, void*), - void (post)(type_or_ent*, void*), +void type_walk_super(type_walk_func *pre, + type_walk_func *post, void *env); /* Same as type_walk_super2sub, but visits only class types. @@ -64,13 +67,14 @@ void type_walk_super(void (pre)(type_or_ent*, void*), Does not visit global type, frame types. */ /* @@@ ?? something is wrong with this. */ -void class_walk_super2sub(void (pre)(type*, void*), - void (post)(type*, void*), +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, - void (doit)(entity*, void*), + entity_walk_func *doit, void *env); #endif /* _TYPEWALK_H_ */