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 SgClassDefinition *sc_interface_; 00031 00032 // This is a hack. Please see the comment in the source file. 00033 SgClassDefinition *sc_channel_; 00034 SgClassDefinition *sc_in_clk_; 00035 SgClassDefinition *sc_out_clk_; 00036 SgClassDefinition *sc_inout_clk_; 00037 00038 // Namespace of systemc 00039 SgNamespaceDefinitionStatement *sc_core_; 00040 SgNamespaceDefinitionStatement *sc_dt_; 00041 00042 std::set<SgFunctionDefinition*> sc_wait_funcs_; 00043 00044 private: 00045 SgProject *project_; 00046 00047 void init_systemc_definitions(); 00048 00049 static SystemCDefinitionFinder *instance; 00050 SystemCDefinitionFinder(SgProject *project); 00051 ~SystemCDefinitionFinder(); 00052 SystemCDefinitionFinder(const SystemCDefinitionFinder &other); 00053 }; 00054 00055 00056 }; // end of namespace tools 00057 00058 }; // end of namespace risc 00059 00060 #endif /* SYSTEMC_DEFINITION_FINDER_H_INCLUDED_ */ 00061 00062 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */