diff options
author | Gabe Black <gabeblack@google.com> | 2018-06-22 14:19:44 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-09-05 06:01:39 +0000 |
commit | 9bd3bb7bc804a16b2f0de03fa6d3d9d0928f38a2 (patch) | |
tree | a9500949c781d55fea96bf9fb7098a9639b7af5a /src/systemc/ext/core | |
parent | 97018a3b20c129a3413011d205f18189dd1a75c9 (diff) | |
download | gem5-9bd3bb7bc804a16b2f0de03fa6d3d9d0928f38a2.tar.xz |
systemc: Implement most of sc_object.
To avoid making it hard to change sc_object's implementation in the
future, this change keeps most of the data members out of sc_object and
keeps them in a seperate Object which is managed independently but
still matches to the sc_objects one to one.
This change also moves away from the SystemC/sc_gem5 namespace pair in
favor of sc_gem5. Having two namespaces with classes, etc, living in
both was complicating things. Having to use a namespace that doesn't
fit in one scheme or the other isn't great, but it's the lesser of two
evils.
Change-Id: Ib59c3c515ca98c7fe519c59e9fe9270304b71cc0
Reviewed-on: https://gem5-review.googlesource.com/11611
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/ext/core')
-rw-r--r-- | src/systemc/ext/core/sc_object.hh | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/systemc/ext/core/sc_object.hh b/src/systemc/ext/core/sc_object.hh index 653df874e..2dcc7faa7 100644 --- a/src/systemc/ext/core/sc_object.hh +++ b/src/systemc/ext/core/sc_object.hh @@ -34,6 +34,13 @@ #include <string> #include <vector> +namespace sc_gem5 +{ + +class Object; + +} // namespace sc_gem5 + namespace sc_core { @@ -48,7 +55,7 @@ class sc_object const char *name() const; const char *basename() const; - virtual const char *kind() const; + virtual const char *kind() const { return "sc_object"; } virtual void print(std::ostream & =std::cout) const; virtual void dump(std::ostream & =std::cout) const; @@ -66,8 +73,7 @@ class sc_object const sc_attr_cltn &attr_cltn() const; // Deprecated - sc_simcontext * - simcontext() const; + sc_simcontext *simcontext() const; protected: sc_object(); @@ -75,6 +81,10 @@ class sc_object sc_object(const sc_object &); sc_object &operator = (const sc_object &); virtual ~sc_object(); + + private: + friend class sc_gem5::Object; + sc_gem5::Object *_gem5_object; }; const std::vector<sc_object *> &sc_get_top_level_objects(); |