00001 #ifndef SYSTEMC_DEFINITION_FINDER_H_INCLUDED_ 00002 #define SYSTEMC_DEFINITION_FINDER_H_INCLUDED_ 00003 00004 #include "rose.h" 00005 00006 namespace risc { 00007 00008 namespace tools { 00009 00014 class SystemCDefinitionFinder { 00015 00016 public: 00017 static SystemCDefinitionFinder* get_definitions(SgProject *project); 00018 00022 SgClassDefinition *sc_module_; 00023 SgClassDefinition *sc_port_; 00024 SgClassDefinition *sc_port_base_; 00025 SgClassDefinition *sc_in_; 00026 SgClassDefinition *sc_out_; 00027 SgClassDefinition *sc_inout_; 00028 SgClassDefinition *sc_event_; 00029 SgClassDefinition *sc_prim_channel_; 00030 00031 // This is a hack. Please see the comment in the source file. 00032 SgClassDefinition *sc_channel_; 00033 SgClassDefinition *sc_in_clk_; 00034 SgClassDefinition *sc_out_clk_; 00035 SgClassDefinition *sc_inout_clk_; 00036 00037 // Namespace of systemc 00038 SgNamespaceDefinitionStatement *sc_core_; 00039 SgNamespaceDefinitionStatement *sc_dt_; 00040 00041 std::set<SgFunctionDefinition*> sc_wait_funcs_; 00042 00043 private: 00044 SgProject *project_; 00045 00046 void init_systemc_definitions(); 00047 00048 static SystemCDefinitionFinder *instance; 00049 SystemCDefinitionFinder(SgProject *project); 00050 ~SystemCDefinitionFinder(); 00051 SystemCDefinitionFinder(const SystemCDefinitionFinder &other); 00052 }; 00053 00054 00055 }; // end of namespace tools 00056 00057 }; // end of namespace risc 00058 00059 #endif /* SYSTEMC_DEFINITION_FINDER_H_INCLUDED_ */ 00060 00061 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */