-/* 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
-*/
-
-/* $Id$ */
-
+/*
+ * Project: libFIRM
+ * File name: ir/tr/typewalk.h
+ * Purpose: Traverse the type information.
+ * Author: Goetz Lindenmaier
+ * Modified by:
+ * Created:
+ * CVS-ID: $Id$
+ * Copyright: (c) 1999-2003 Universität Karlsruhe
+ * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ */
-/* walk over all type information reachable from the ir graph. */
+/**
+ * @file typewalk.h
+ *
+ * Traverse the type information.
+ *
+ * @author Goetz Lindenmaier
+ *
+ * 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
+ */
#ifndef _TYPEWALK_H_
#define _TYPEWALK_H_
-# include "type_or_entity.h"
+#include "type.h"
+#include "type_or_entity.h"
-/**
- * the type walk function
+#include "irgraph.h"
+
+/** 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);
-
-/** walks over all type information reachable from irg */
+/** 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.
+ *
+ * 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_irg(ir_graph *irg,
type_walk_func *pre,
type_walk_func *post,