1#include <systemc>
2using namespace sc_core;
3using namespace sc_dt;
4using std::cout;
5using std::endl;
6
7// 7) "event_queue"
8
9void check_form_of_suffix(std::string s)
10{
11  std::string charset = "0123456789";
12  while (!s.empty())
13  {
14    sc_assert(s[0] == '_');
15    s = s.substr(1);
16    sc_assert(!s.empty());
17    do
18    {
19      sc_assert(charset.find(s[0]) < charset.size());
20      s = s.substr(1);
21    } while (!s.empty() && (s[0] != '_'));
22  }
23}
24
25SC_MODULE(M)
26{
27  SC_CTOR(M)
28  {
29    SC_THREAD(T);
30  }
31  void T()
32  {
33  }
34};
35
36struct Top: sc_module
37{
38  sc_event_queue eq;
39  M *m;
40  Top(sc_module_name)
41  {
42    m = new M("m");
43
44    std::string s = eq.basename();
45    sc_assert (s.substr(0,11) == "event_queue");
46    sc_assert (s.size() > 11);
47    check_form_of_suffix(s.substr(11));
48
49    s = eq.name();
50    sc_assert (s.substr(0,15) == "top.event_queue");
51    sc_assert (s.size() > 15);
52    check_form_of_suffix(s.substr(15));
53
54    sc_assert (std::string(eq.kind()) == "sc_event_queue");
55  }
56};
57
58int sc_main(int argc, char* argv[])
59{
60  cout << "Should be silent..." << endl;
61
62  Top top("top");
63  sc_start();
64
65  cout << endl << "Success" << endl;
66  return 0;
67}
68