added visibility flag for types.
[libfirm] / ir / tr / typewalk.h
index ee8978b..a85517e 100644 (file)
 
 #include "irgraph.h"
 
-/**
- * the type walk function
+/** Type of argument functions for type walkers.
  *
  * @param tore    points to the visited type or entity
  * @param env     free environment pointer
  */
 typedef void type_walk_func(type_or_ent *tore, void *env);
 
-/**
- * the class walk function
+/**  The class walk function
  *
  * @param clss    points to the visited class
  * @param env     free environment pointer
  */
 typedef void class_walk_func(type *clss, void *env);
 
-/**
-    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(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(type_walk_func *pre, type_walk_func *post, void *env);
 
 /** Walks over all type information reachable from an ir graph.
  *
@@ -61,9 +57,9 @@ void type_walk(type_walk_func *pre,
  *  type walk at the irgs entity, the irgs frame type and all types and
  *  entities that are attributes to firm nodes. */
 void type_walk_irg(ir_graph *irg,
-                  type_walk_func *pre,
-                  type_walk_func *post,
-                  void *env);
+           type_walk_func *pre,
+           type_walk_func *post,
+           void *env);
 
 /**
     Touches every class in specified order:
@@ -77,18 +73,24 @@ void type_walk_irg(ir_graph *irg,
     @deprecated will be removed?
 */
 void type_walk_super2sub(type_walk_func *pre,
-                        type_walk_func *post,
-                        void *env);
+             type_walk_func *post,
+             void *env);
 
-/**
-    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. */
+/** 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);
+             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.
@@ -99,11 +101,11 @@ void type_walk_super(type_walk_func *pre,
    @bug ?? something is wrong with this.
 */
 void class_walk_super2sub(class_walk_func *pre,
-                         class_walk_func *post,
-                         void *env);
+                          class_walk_func *post,
+                          void *env);
 
 /**
- * the entity walk function
+ * the entity walk function.  A function type for entity walkers.
  *
  * @param ent     points to the visited entity
  * @param env     free environment pointer
@@ -115,9 +117,10 @@ typedef void entity_walk_func(entity *ent, void *env);
  *
  * @param tp    the type
  * @param doit  the entity walker function
- * @param env   environment, wil be passed to the walker function
+ * @param env   environment, will be passed to the walker function
  */
 void walk_types_entities(type *tp,
-                        entity_walk_func *doit,
-                        void *env);
+             entity_walk_func *doit,
+             void *env);
+
 #endif /* _TYPEWALK_H_ */