00001 #ifndef CPP_PASSES__CPP_SYMBOL_WALKERS_H 00002 #define CPP_PASSES__CPP_SYMBOL_WALKERS_H 00003 00004 #include <common/suif_copyright.h> 00005 #include "suifnodes/suif.h" 00006 00007 #include "transforms/symbol_walkers.h" 00008 00009 00010 class CombinedPassForCpp : public Pass 00011 { 00012 public: 00013 Module* clone() const {return (Module*)this;} 00014 00015 void do_file_set_block( FileSetBlock* file_set_block ); 00016 00017 CombinedPassForCpp(SuifEnv *env) : Pass(env,"rename_colliding_symbols_for_cpp") {} 00018 }; 00019 00020 class CppCollisionAvoider : public CollisionAvoider 00021 { 00022 public: 00023 CppCollisionAvoider(SuifEnv *env, 00024 BasicSymbolTable *the_external_symbol_table, 00025 FileSetBlock* file_set_block) 00026 : CollisionAvoider(env, 00027 the_external_symbol_table, 00028 NULL, 00029 (file_set_block->get_file_block(0))->get_source_file_name(), 00030 false) {} 00031 00032 ApplyStatus operator () (SuifObject *x); 00033 00034 protected: 00035 bool ConstructorSymbol( SuifObject * ); 00036 00037 }; 00038 00039 #endif