112855Sgabeblack@google.com#include <systemc> 212855Sgabeblack@google.comusing namespace sc_core; 312855Sgabeblack@google.comusing namespace sc_dt; 412855Sgabeblack@google.comusing std::cout; 512855Sgabeblack@google.comusing std::endl; 612855Sgabeblack@google.com 712855Sgabeblack@google.com// 7) "event_queue" 812855Sgabeblack@google.com 912855Sgabeblack@google.comvoid check_form_of_suffix(std::string s) 1012855Sgabeblack@google.com{ 1112855Sgabeblack@google.com std::string charset = "0123456789"; 1212855Sgabeblack@google.com while (!s.empty()) 1312855Sgabeblack@google.com { 1412855Sgabeblack@google.com sc_assert(s[0] == '_'); 1512855Sgabeblack@google.com s = s.substr(1); 1612855Sgabeblack@google.com sc_assert(!s.empty()); 1712855Sgabeblack@google.com do 1812855Sgabeblack@google.com { 1912855Sgabeblack@google.com sc_assert(charset.find(s[0]) < charset.size()); 2012855Sgabeblack@google.com s = s.substr(1); 2112855Sgabeblack@google.com } while (!s.empty() && (s[0] != '_')); 2212855Sgabeblack@google.com } 2312855Sgabeblack@google.com} 2412855Sgabeblack@google.com 2512855Sgabeblack@google.comSC_MODULE(M) 2612855Sgabeblack@google.com{ 2712855Sgabeblack@google.com SC_CTOR(M) 2812855Sgabeblack@google.com { 2912855Sgabeblack@google.com SC_THREAD(T); 3012855Sgabeblack@google.com } 3112855Sgabeblack@google.com void T() 3212855Sgabeblack@google.com { 3312855Sgabeblack@google.com } 3412855Sgabeblack@google.com}; 3512855Sgabeblack@google.com 3612855Sgabeblack@google.comstruct Top: sc_module 3712855Sgabeblack@google.com{ 3812855Sgabeblack@google.com sc_event_queue eq; 3912855Sgabeblack@google.com M *m; 4012855Sgabeblack@google.com Top(sc_module_name) 4112855Sgabeblack@google.com { 4212855Sgabeblack@google.com m = new M("m"); 4312855Sgabeblack@google.com 4412855Sgabeblack@google.com std::string s = eq.basename(); 4512855Sgabeblack@google.com sc_assert (s.substr(0,11) == "event_queue"); 4612855Sgabeblack@google.com sc_assert (s.size() > 11); 4712855Sgabeblack@google.com check_form_of_suffix(s.substr(11)); 4812855Sgabeblack@google.com 4912855Sgabeblack@google.com s = eq.name(); 5012855Sgabeblack@google.com sc_assert (s.substr(0,15) == "top.event_queue"); 5112855Sgabeblack@google.com sc_assert (s.size() > 15); 5212855Sgabeblack@google.com check_form_of_suffix(s.substr(15)); 5312855Sgabeblack@google.com 5412855Sgabeblack@google.com sc_assert (std::string(eq.kind()) == "sc_event_queue"); 5512855Sgabeblack@google.com } 5612855Sgabeblack@google.com}; 5712855Sgabeblack@google.com 5812855Sgabeblack@google.comint sc_main(int argc, char* argv[]) 5912855Sgabeblack@google.com{ 6012855Sgabeblack@google.com cout << "Should be silent..." << endl; 6112855Sgabeblack@google.com 6212855Sgabeblack@google.com Top top("top"); 6312855Sgabeblack@google.com sc_start(); 6412855Sgabeblack@google.com 6512855Sgabeblack@google.com cout << endl << "Success" << endl; 6612855Sgabeblack@google.com return 0; 6712855Sgabeblack@google.com} 68