SystemC 3.0.0
Accellera SystemC proof-of-concept library
sc_module_registry.h
Go to the documentation of this file.
1/*****************************************************************************
2
3 Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
4 more contributor license agreements. See the NOTICE file distributed
5 with this work for additional information regarding copyright ownership.
6 Accellera licenses this file to you under the Apache License, Version 2.0
7 (the "License"); you may not use this file except in compliance with the
8 License. You may obtain a copy of the License at
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15 implied. See the License for the specific language governing
16 permissions and limitations under the License.
17
18 *****************************************************************************/
19
20/*****************************************************************************
21
22 sc_module_registry.h -- Registry for all modules.
23 FOR INTERNAL USE ONLY.
24
25 Original Author: Martin Janssen, Synopsys, Inc., 2001-05-21
26
27 CHANGE LOG AT THE END OF THE FILE
28 *****************************************************************************/
29
30
31#ifndef SC_MODULE_REGISTRY_H
32#define SC_MODULE_REGISTRY_H
33
34
35namespace sc_core {
36
37class sc_module;
38class sc_simcontext;
39
40
41// ----------------------------------------------------------------------------
42// CLASS : sc_module_registry
43//
44// Registry for all modules.
45// FOR INTERNAL USE ONLY!
46// ----------------------------------------------------------------------------
47
49{
50 friend class sc_simcontext;
51
52public:
53
54 void insert( sc_module& );
55 void remove( sc_module& );
56
57 int size() const
58 { return m_module_vec.size(); }
59
60private:
61
62 // constructor
63 explicit sc_module_registry( sc_simcontext& simc_ );
64
65 // destructor
67
68 // called when construction is done
69 bool construction_done();
70
71 // called when elaboration is done
72 void elaboration_done();
73
74 // called before simulation begins
75 void start_simulation();
76
77 // called after simulation ends
78 void simulation_done();
79
80
81private:
82
83 int m_construction_done;
84 std::vector<sc_module*> m_module_vec;
85 sc_simcontext* m_simc;
86
87private:
88
89 // disabled
92 sc_module_registry& operator = ( const sc_module_registry& );
93};
94
95} // namespace sc_core
96
97#endif
98
99// $Log: sc_module_registry.h,v $
100// Revision 1.6 2011/08/26 20:46:10 acg
101// Andy Goodrich: moved the modification log to the end of the file to
102// eliminate source line number skew when check-ins are done.
103//
104// Revision 1.5 2011/05/09 04:07:49 acg
105// Philipp A. Hartmann:
106// (1) Restore hierarchy in all phase callbacks.
107// (2) Ensure calls to before_end_of_elaboration.
108//
109// Revision 1.4 2011/02/18 20:27:14 acg
110// Andy Goodrich: Updated Copyrights.
111//
112// Revision 1.3 2011/02/13 21:47:37 acg
113// Andy Goodrich: update copyright notice.
114//
115// Revision 1.2 2008/05/22 17:06:26 acg
116// Andy Goodrich: updated copyright notice to include 2008.
117//
118// Revision 1.1.1.1 2006/12/15 20:20:05 acg
119// SystemC 2.3
120//
121// Revision 1.3 2006/01/13 18:44:30 acg
122// Added $Log to record CVS changes into the source.
123
124// Taf!
class SC_API sc_simcontext
Definition: sc_object.h:50
class SC_API sc_module
Definition: sc_object.h:44
void insert(sc_module &)
void remove(sc_module &)