X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirmwalk.h;h=27e5e0ddc5f17b125a22b98e1940a2e321fca00c;hb=d26f85fe13d8aef7526144370a693d13c2f02578;hp=56ce8228a44619109ee1e5ef27c6f7a73892038b;hpb=493a2be714558086f03e0e2d17285e039c83a011;p=libfirm diff --git a/ir/common/firmwalk.h b/ir/common/firmwalk.h index 56ce8228a..27e5e0ddc 100644 --- a/ir/common/firmwalk.h +++ b/ir/common/firmwalk.h @@ -1,18 +1,29 @@ /* - * Project: libFIRM - * File name: ir/common/firmwalk.h - * Purpose: Walker that touches all Firm data structures - * Author: Sebastian Felis - * Modified by: - * Created: 7.2003 - * CVS-ID: $Id$ - * Copyright: (c) 2003 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ /** - * @file firmwalk.h - * + * @file + * @biref Walker that touches all Firm data structures + * @author Sebastian Felis + * @date 7.2003 + * @version $Id$ + * @summary * Firm walker over intermediate representation. * * To initialize the walker, call firm_walk_init(). This function @@ -28,13 +39,17 @@ * of any firm node, the the wrapper functions set_firm_walk_link() * and get_firm_walk_link() should be used, because the firm walker * make use of the link field to store its own data. + * @note Deprecated, better use the stuff in irgwalk.h, typewalk.h */ -#ifndef _FIRM_WALK_H_ -#define _FIRM_WALK_H_ +#ifndef FIRM_COMMON_FIRM_WALK_H +#define FIRM_COMMON_FIRM_WALK_H + +#include "firm_types.h" + +#ifdef __cplusplus +extern "C" { +#endif -#include "type.h" -#include "irgraph.h" -#include "typewalk.h" /** Returns the link of a firm node. * Possible firm structures are: entity, type, ir_graph, ir_node and @@ -45,7 +60,7 @@ * by this firm walker to collect walking data. * * @param thing Pointer to a firm structure - * @retrun Link pointer + * @return Link pointer * * @note After calling firm_walk_finalize() the stored link * information may be invalid. */ @@ -59,7 +74,7 @@ void *get_firm_walk_link(void *thing); * to a firm structure. The real link field of firm structure is used * by this firm walker to collect walking data. * - * @param thing firm structur + * @param thing firm structure * @param link Pointer to link field * * @note After calling firm_walk_finalize() the stored link @@ -74,9 +89,9 @@ typedef void firm_walk_finalize_func(void *env); /** Mode callback function definition */ typedef void firm_walk_mode_func(ir_mode *mode, void *env); /** Type callback function definition */ -typedef void firm_walk_type_func(type *tp, void *env); +typedef void firm_walk_type_func(ir_type *tp, void *env); /** Entity callback function definition */ -typedef void firm_walk_entity_func(entity *ent, void *env); +typedef void firm_walk_entity_func(ir_entity *ent, void *env); /** Graph callback function definition */ typedef void firm_walk_graph_func(ir_graph *irg, void *env); /* @{ */ @@ -123,7 +138,7 @@ typedef struct /* @{ */ /** Interface to dump all collected types. * - * @node To dump all (not only used types by default) a special walk + * @note To dump all (not only used types by default) a special walk * flag must be set for the walker initializer */ firm_walk_init_func *do_type_init; firm_walk_type_func *do_type; @@ -141,8 +156,9 @@ typedef struct * * The firm walker dump a graph with its blocks and nodes nested. * Fist do_graph_init will be called (if defined). For each graph - * do_graph will be call in a loop. After dumped all graphs, - * do_graph_finalize will be called. + * do_graph will be call in a loop. + * After all blocks in a graph are dumped, do_graph_post() is called. + * After dumped all graphs, do_graph_finalize will be called. * * Within do_graph each block will be dumped. First do_block_init, * for each block do_block and after all dumped blocks @@ -154,6 +170,7 @@ typedef struct * walking flag, a prefix order is also possible. */ firm_walk_init_func *do_graph_init; firm_walk_graph_func *do_graph; + firm_walk_graph_func *do_graph_post; firm_walk_finalize_func *do_graph_finalize; /* @{ */ @@ -162,6 +179,7 @@ typedef struct * @see do_graph */ firm_walk_block_init_func *do_block_init; firm_walk_block_func *do_block; + firm_walk_block_func *do_block_post; firm_walk_block_finalize_func *do_block_finalize; /* @} */ @@ -205,4 +223,9 @@ void firm_walk(firm_walk_interface *wif); /** Finalize the walker and frees all stored data for dumping */ void firm_walk_finalize(void); -#endif /* _FIRM_WALK_H_ */ +#ifdef __cplusplus +} +#endif + + +#endif