00001 #ifndef TRANSFORMS__PROCEDURE_WALKER_UTILITIES 00002 #define TRANSFORMS__PROCEDURE_WALKER_UTILITIES 00003 00004 // This class defines a Walker which contains a number of utilities for procedure 00005 // based walkers. There are a number of routines which build various kinds of 00006 // objects. These would probably be better placed somewhere else, but that 00007 // somewhere else does not currently exist 00008 00009 #include "suifkernel/group_walker.h" 00010 #include "basicnodes/basic_forwarders.h" 00011 #include "suifnodes/suif_forwarders.h" 00012 00013 class ProcedureWalker : public SelectiveWalker { 00014 ProcedureDefinition *proc_def; 00015 public: 00016 ProcedureWalker(SuifEnv *the_env,ProcedureDefinition *def,const LString &type); 00017 00018 CodeLabelSymbol *create_new_label(); 00019 00020 // static version of the above 00021 static CodeLabelSymbol *create_new_label(ProcedureDefinition* proc_def); 00022 00023 ProcedureDefinition *get_proc_def(); 00024 00025 DefinitionBlock *get_definition_block(); 00026 00027 SymbolTable *get_symbol_table(); 00028 }; 00029 00030 #endif