systemc: Flesh out the sc_port implementation slightly.
authorGabe Black <gabeblack@google.com>
Tue, 15 May 2018 04:54:26 +0000 (21:54 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 24 Jul 2018 21:47:15 +0000 (21:47 +0000)
This makes other files compile because it changes the relationship
between constructors,etc., slightly.

Change-Id: I8d9a6e12ec640a82da166fe05c4f5e91f3f608de
Reviewed-on: https://gem5-review.googlesource.com/10840
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/sc_port.cc
src/systemc/ext/core/sc_port.hh

index e1823bcc92217877f504d4636e1ce4b073db929a..46a295b6e7bfdb27ae160fb54166e66c77386599 100644 (file)
@@ -34,7 +34,7 @@ namespace sc_core
 {
 
 void
-sc_port_base::warn_unimpl(const char *func)
+sc_port_base::warn_unimpl(const char *func) const
 {
     warn("%s not implemented.\n", func);
 }
index 1d32422a5252cee5894965e81f169eb92fa51156..b2f9bd8bbe2756d68028d3213b34525037c5be86 100644 (file)
@@ -30,6 +30,7 @@
 #ifndef __SYSTEMC_EXT_CORE_SC_PORT_HH__
 #define __SYSTEMC_EXT_CORE_SC_PORT_HH__
 
+#include "sc_module.hh" // for sc_gen_unique_name
 #include "sc_object.hh"
 
 namespace sc_core
@@ -47,7 +48,10 @@ enum sc_port_policy
 class sc_port_base : public sc_object
 {
   public:
-    void warn_unimpl(const char *func);
+    sc_port_base(const char *name, int n, sc_port_policy p) : sc_object(name)
+    {}
+
+    void warn_unimpl(const char *func) const;
 };
 
 template <class IF>
@@ -133,20 +137,13 @@ class sc_port_b : public sc_port_base
     virtual void start_of_elaboration() {}
     virtual void end_of_simulation() {}
 
-    explicit sc_port_b(int, sc_port_policy)
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-    }
-
-    sc_port_b(const char *, int, sc_port_policy)
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-    }
-
-    virtual ~sc_port_b()
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-    }
+    explicit sc_port_b(int n, sc_port_policy p) :
+            sc_port_base(sc_gen_unique_name("sc_port"), n, p)
+    {}
+    sc_port_b(const char *name, int n, sc_port_policy p) :
+            sc_port_base(name, n, p)
+    {}
+    virtual ~sc_port_b() {}
 
   private:
     // Disabled
@@ -159,27 +156,11 @@ template <class IF, int N=1, sc_port_policy P=SC_ONE_OR_MORE_BOUND>
 class sc_port : public sc_port_b<IF>
 {
   public:
-    sc_port()
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-    }
+    sc_port() : sc_port_b<IF>(sc_gen_unique_name("sc_port"), N, P) {}
+    explicit sc_port(const char *name) : sc_port_b<IF>(name, N, P) {}
+    virtual ~sc_port() {}
 
-    explicit sc_port(const char *)
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-    }
-
-    virtual ~sc_port()
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-    }
-
-    virtual const char *
-    kind() const
-    {
-        warn_unimpl(__PRETTY_FUNCTION__);
-        return "";
-    }
+    virtual const char *kind() const { return "sc_port"; }
 
   private:
     // Disabled