libFirm 1.20
Traversing

Data Structures

union  type_or_ent
 A data type to treat types and entities as the same. More...

Typedefs

typedef int( compare_types_func_t )(const void *tp1, const void *tp2)
 Type for a function that compares two types.
typedef void type_walk_func (type_or_ent tore, void *env)
 Type of argument functions for type walkers.
typedef void class_walk_func (ir_type *clss, void *env)
 The class walk function.
typedef void entity_walk_func (ir_entity *ent, void *env)
 the entity walk function.

Functions

void type_walk (type_walk_func *pre, type_walk_func *post, void *env)
 Touches every type and entity in unspecified order.
void type_walk_irg (ir_graph *irg, type_walk_func *pre, type_walk_func *post, void *env)
 Walks over all type information reachable from an ir graph.
void type_walk_super2sub (type_walk_func *pre, type_walk_func *post, void *env)
 Touches every class in specified order:
void type_walk_super (type_walk_func *pre, type_walk_func *post, void *env)
 Walker for class types in inheritance order.
void class_walk_super2sub (class_walk_func *pre, class_walk_func *post, void *env)
 Same as type_walk_super2sub, but visits only class types.
void walk_types_entities (ir_type *tp, entity_walk_func *doit, void *env)
 Walks over all entities in the type.
void types_calc_finalization (void)
 If we have the closed world assumption, we can calculate the finalization of classes and entities by inspecting the class hierarchy.
ir_visibility get_type_visibility (const ir_type *tp)
void set_type_visibility (ir_type *tp, ir_visibility v)

Typedef Documentation

typedef void class_walk_func(ir_type *clss, void *env)

The class walk function.

Parameters:
clsspoints to the visited class
envfree environment pointer

Definition at line 2277 of file typerep.h.

typedef int( compare_types_func_t)(const void *tp1, const void *tp2)

Type for a function that compares two types.

Parameters:
tp1The first type to compare.
tp2The second type to compare.

Definition at line 2257 of file typerep.h.

typedef void entity_walk_func(ir_entity *ent, void *env)

the entity walk function.

A function type for entity walkers.

Parameters:
entpoints to the visited entity
envfree environment pointer

Definition at line 2335 of file typerep.h.

typedef void type_walk_func(type_or_ent tore, void *env)

Type of argument functions for type walkers.

Parameters:
torepoints to the visited type or entity
envfree environment pointer

Definition at line 2270 of file typerep.h.


Function Documentation

void class_walk_super2sub ( class_walk_func pre,
class_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.

ir_visibility get_type_visibility ( const ir_type tp)
void set_type_visibility ( ir_type tp,
ir_visibility  v 
)
void type_walk ( type_walk_func pre,
type_walk_func post,
void *  env 
)

Touches every type and entity in unspecified order.

If new types/entities are created during the traversal these will be visited, too. Does not touch frame types or types for value params ...

void type_walk_irg ( ir_graph irg,
type_walk_func pre,
type_walk_func post,
void *  env 
)

Walks over all type information reachable from an ir graph.

Walks over all type information reachable from irg, i.e., starts a type walk at the irgs entity, the irgs frame type and all types and entities that are attributes to firm nodes.

void type_walk_super ( 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_super2sub ( 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.
void types_calc_finalization ( void  )

If we have the closed world assumption, we can calculate the finalization of classes and entities by inspecting the class hierarchy.

After this is done, all classes and entities that are not overridden anymore have the final property set.

void walk_types_entities ( ir_type tp,
entity_walk_func doit,
void *  env 
)

Walks over all entities in the type.

Parameters:
tpthe type
doitthe entity walker function
envenvironment, will be passed to the walker function