systemc: Add in the deprecated binding port constructors.
authorGabe Black <gabeblack@google.com>
Fri, 8 Jun 2018 01:23:41 +0000 (18:23 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 15 Aug 2018 01:30:50 +0000 (01:30 +0000)
These are needed by... you guessed it, the regression tests.

Change-Id: Id30e71944cc7f3faca7dcb197f37938368364fcd
Reviewed-on: https://gem5-review.googlesource.com/10958
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/ext/channel/sc_fifo_in.hh
src/systemc/ext/channel/sc_fifo_out.hh
src/systemc/ext/channel/sc_in.hh
src/systemc/ext/channel/sc_inout.hh
src/systemc/ext/channel/sc_out.hh
src/systemc/ext/core/sc_port.hh

index 7f593c16f26403af882ad2277715648d650d666e..0952d77d10242dd64a29462334c7edc72979a5c6 100644 (file)
@@ -49,6 +49,26 @@ class sc_fifo_in : public sc_port<sc_fifo_in_if<T>, 0>
     {}
     virtual ~sc_fifo_in() {}
 
+    // Deprecated binding constructors.
+    explicit sc_fifo_in(const sc_fifo_in_if<T> &interface) :
+        sc_port<sc_fifo_in_if<T>, 0>(interface)
+    {}
+    sc_fifo_in(const char *name, const sc_fifo_in_if<T> &interface) :
+        sc_port<sc_fifo_in_if<T>, 0>(name, interface)
+    {}
+    explicit sc_fifo_in(sc_port_b<sc_fifo_in_if<T> > &parent) :
+        sc_port<sc_fifo_in_if<T>, 0>(parent)
+    {}
+    sc_fifo_in(const char *name, sc_port_b<sc_fifo_in_if<T> > &parent) :
+        sc_port<sc_fifo_in_if<T>, 0>(name, parent)
+    {}
+    explicit sc_fifo_in(sc_port<sc_fifo_in_if<T>, 0> &parent) :
+        sc_port<sc_fifo_in_if<T>, 0>(parent)
+    {}
+    sc_fifo_in(const char *name, sc_port<sc_fifo_in_if<T>, 0> &parent) :
+        sc_port<sc_fifo_in_if<T>, 0>(name, parent)
+    {}
+
     void
     read(T &)
     {
index 4beb15d37771519724bb6a6bc7cd0d6ac8d5c896..af2f6efe5790d381d98fe9231b53c7cc9615a21b 100644 (file)
@@ -50,6 +50,26 @@ class sc_fifo_out : public sc_port<sc_fifo_out_if<T>, 0>
     {}
     virtual ~sc_fifo_out() {}
 
+    // Deprecated binding constructors.
+    explicit sc_fifo_out(const sc_fifo_out_if<T> &interface) :
+        sc_port<sc_fifo_out_if<T>, 0>(interface)
+    {}
+    sc_fifo_out(const char *name, const sc_fifo_out_if<T> &interface) :
+        sc_port<sc_fifo_out_if<T>, 0>(name, interface)
+    {}
+    explicit sc_fifo_out(sc_port_b<sc_fifo_out_if<T> > &parent) :
+        sc_port<sc_fifo_out_if<T>, 0>(parent)
+    {}
+    sc_fifo_out(const char *name, sc_port_b<sc_fifo_out_if<T> > &parent) :
+        sc_port<sc_fifo_out_if<T>, 0>(name, parent)
+    {}
+    explicit sc_fifo_out(sc_port<sc_fifo_out_if<T>, 0> &parent) :
+        sc_port<sc_fifo_out_if<T>, 0>(parent)
+    {}
+    sc_fifo_out(const char *name, sc_port<sc_fifo_out_if<T>, 0> &parent) :
+        sc_port<sc_fifo_out_if<T>, 0>(name, parent)
+    {}
+
     void
     write(const T &)
     {
index a283d0db3903f62c525ad46eb8581cfc03ab1522..f691afee088ed7aceae628c14e5e31dafc51bd4c 100644 (file)
@@ -52,6 +52,26 @@ class sc_in : public sc_port<sc_signal_in_if<T>, 1>
     explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name) {}
     virtual ~sc_in() {}
 
+    // Deprecated binding constructors.
+    explicit sc_in(const sc_signal_in_if<T> &interface) :
+        sc_port<sc_signal_in_if<T>, 1>(interface)
+    {}
+    sc_in(const char *name, const sc_signal_in_if<T> &interface) :
+        sc_port<sc_signal_in_if<T>, 1>(name, interface)
+    {}
+    explicit sc_in(sc_port_b<sc_signal_in_if<T> > &parent) :
+        sc_port<sc_signal_in_if<T>, 1>(parent)
+    {}
+    sc_in(const char *name, sc_port_b<sc_signal_in_if<T> > &parent) :
+        sc_port<sc_signal_in_if<T>, 1>(name, parent)
+    {}
+    explicit sc_in(sc_port<sc_signal_in_if<T>, 1> &parent) :
+        sc_port<sc_signal_in_if<T>, 1>(parent)
+    {}
+    sc_in(const char *name, sc_port<sc_signal_in_if<T>, 1> &parent) :
+        sc_port<sc_signal_in_if<T>, 1>(name, parent)
+    {}
+
     virtual void
     bind(const sc_signal_in_if<T> &)
     {
@@ -152,6 +172,26 @@ class sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1>
         sc_port<sc_signal_in_if<bool>, 1>(name) {}
     virtual ~sc_in() {}
 
+    // Deprecated binding constructors.
+    explicit sc_in(const sc_signal_in_if<bool> &interface) :
+        sc_port<sc_signal_in_if<bool>, 1>(interface)
+    {}
+    sc_in(const char *name, const sc_signal_in_if<bool> &interface) :
+        sc_port<sc_signal_in_if<bool>, 1>(name, interface)
+    {}
+    explicit sc_in(sc_port_b<sc_signal_in_if<bool> > &parent) :
+        sc_port<sc_signal_in_if<bool>, 1>(parent)
+    {}
+    sc_in(const char *name, sc_port_b<sc_signal_in_if<bool> > &parent) :
+        sc_port<sc_signal_in_if<bool>, 1>(name, parent)
+    {}
+    explicit sc_in(sc_port<sc_signal_in_if<bool>, 1> &parent) :
+        sc_port<sc_signal_in_if<bool>, 1>(parent)
+    {}
+    sc_in(const char *name, sc_port<sc_signal_in_if<bool>, 1> &parent) :
+        sc_port<sc_signal_in_if<bool>, 1>(name, parent)
+    {}
+
     virtual void
     bind(const sc_signal_in_if<bool> &)
     {
@@ -292,6 +332,29 @@ class sc_in<sc_dt::sc_logic> :
     {}
     virtual ~sc_in() {}
 
+    // Deprecated binding constructors.
+    explicit sc_in(const sc_signal_in_if<sc_dt::sc_logic> &interface) :
+        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(interface)
+    {}
+    sc_in(const char *name,
+            const sc_signal_in_if<sc_dt::sc_logic> &interface) :
+        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, interface)
+    {}
+    explicit sc_in(sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) :
+        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent)
+    {}
+    sc_in(const char *name,
+            sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) :
+        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent)
+    {}
+    explicit sc_in(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) :
+        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent)
+    {}
+    sc_in(const char *name,
+            sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) :
+        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent)
+    {}
+
     virtual void
     bind(const sc_signal_in_if<sc_dt::sc_logic> &)
     {
index 1802b2e8d2a474f2968cfed322c4c5a6cf05ff26..c183e0fffcdb3acd3adcea379615a8513e8f93bf 100644 (file)
@@ -60,6 +60,26 @@ class sc_inout : public sc_port<sc_signal_inout_if<T>, 1>
     {}
     virtual ~sc_inout() {}
 
+    // Deprecated binding constructors.
+    explicit sc_inout(const sc_signal_inout_if<T> &interface) :
+        sc_port<sc_signal_inout_if<T>, 1>(interface)
+    {}
+    sc_inout(const char *name, const sc_signal_inout_if<T> &interface) :
+        sc_port<sc_signal_inout_if<T>, 1>(name, interface)
+    {}
+    explicit sc_inout(sc_port_b<sc_signal_inout_if<T> > &parent) :
+        sc_port<sc_signal_inout_if<T>, 1>(parent)
+    {}
+    sc_inout(const char *name, sc_port_b<sc_signal_inout_if<T> > &parent) :
+        sc_port<sc_signal_inout_if<T>, 1>(name, parent)
+    {}
+    explicit sc_inout(sc_port<sc_signal_inout_if<T>, 1> &parent) :
+        sc_port<sc_signal_inout_if<T>, 1>(parent)
+    {}
+    sc_inout(const char *name, sc_port<sc_signal_inout_if<T>, 1> &parent) :
+        sc_port<sc_signal_inout_if<T>, 1>(name, parent)
+    {}
+
     void
     initialize(const T &)
     {
@@ -170,6 +190,26 @@ class sc_inout<bool> : public sc_port<sc_signal_inout_if<bool>, 1>
     {}
     virtual ~sc_inout() {}
 
+    // Deprecated binding constructors.
+    explicit sc_inout(const sc_signal_inout_if<bool> &interface) :
+        sc_port<sc_signal_inout_if<bool>, 1>(interface)
+    {}
+    sc_inout(const char *name, const sc_signal_inout_if<bool> &interface) :
+        sc_port<sc_signal_inout_if<bool>, 1>(name, interface)
+    {}
+    explicit sc_inout(sc_port_b<sc_signal_inout_if<bool> > &parent) :
+        sc_port<sc_signal_inout_if<bool>, 1>(parent)
+    {}
+    sc_inout(const char *name, sc_port_b<sc_signal_inout_if<bool> > &parent) :
+        sc_port<sc_signal_inout_if<bool>, 1>(name, parent)
+    {}
+    explicit sc_inout(sc_port<sc_signal_inout_if<bool>, 1> &parent) :
+        sc_port<sc_signal_inout_if<bool>, 1>(parent)
+    {}
+    sc_inout(const char *name, sc_port<sc_signal_inout_if<bool>, 1> &parent) :
+        sc_port<sc_signal_inout_if<bool>, 1>(name, parent)
+    {}
+
     void
     initialize(const bool &)
     {
@@ -320,6 +360,31 @@ class sc_inout<sc_dt::sc_logic> :
     {}
     virtual ~sc_inout() {}
 
+    // Deprecated binding constructors.
+    explicit sc_inout(const sc_signal_inout_if<sc_dt::sc_logic> &interface) :
+        sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>(interface)
+    {}
+    sc_inout(const char *name,
+            const sc_signal_inout_if<sc_dt::sc_logic> &interface) :
+        sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>(name, interface)
+    {}
+    explicit sc_inout(
+            sc_port_b<sc_signal_inout_if<sc_dt::sc_logic> > &parent) :
+        sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>(parent)
+    {}
+    sc_inout(const char *name,
+            sc_port_b<sc_signal_inout_if<sc_dt::sc_logic> > &parent) :
+        sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>(name, parent)
+    {}
+    explicit sc_inout(
+            sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &parent) :
+        sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>(parent)
+    {}
+    sc_inout(const char *name,
+            sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &parent) :
+        sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>(name, parent)
+    {}
+
     void
     initialize(const sc_dt::sc_logic &)
     {
index e55a821d41bed2d97c57479bde1b1533442b68a8..53bd2556017d2d266c8db7b71a5a2c01904bf03d 100644 (file)
@@ -45,6 +45,22 @@ class sc_out : public sc_inout<T>
     explicit sc_out(const char *name) : sc_inout<T>(name) {}
     virtual ~sc_out() {}
 
+    // Deprecated binding constructors.
+    explicit sc_out(const sc_signal_inout_if<T> &interface) :
+        sc_inout<T>(interface)
+    {}
+    sc_out(const char *name, const sc_signal_inout_if<T> &interface) :
+        sc_inout<T>(name, interface)
+    {}
+    explicit sc_out(sc_port_b<sc_signal_inout_if<T> > &parent) :
+        sc_inout<T>(parent)
+    {}
+    sc_out(const char *name, sc_port_b<sc_signal_inout_if<T> > &parent) :
+        sc_inout<T>(name, parent)
+    {}
+    explicit sc_out(sc_out<T> &parent) : sc_inout<T>(parent) {}
+    sc_out(const char *name, sc_out<T> &parent) : sc_inout<T>(name, parent) {}
+
     sc_out<T> &
     operator = (const T &)
     {
index b2f9bd8bbe2756d68028d3213b34525037c5be86..dfcae95da87b5c12b08dac48d407d419013fb2e8 100644 (file)
@@ -61,73 +61,73 @@ class sc_port_b : public sc_port_base
     void
     operator () (IF &)
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
     }
 
     void
     operator () (sc_port_b<IF> &)
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
     }
 
     virtual void
     bind(IF &)
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
     }
 
     virtual void
     bind(sc_port_b<IF> &)
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
     }
 
     int
     size() const
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return 0;
     }
 
     IF *
     operator -> ()
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return (IF *)nullptr;
     }
 
     const IF *
     operator -> () const
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return (IF *)nullptr;
     }
 
     IF *
     operator [] (int)
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return (IF *)nullptr;
     }
 
     const IF *
     operator [] (int) const
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return (IF *)nullptr;
     }
 
     virtual sc_interface *
     get_interface()
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return (sc_interface *)nullptr;
     }
 
     virtual const sc_interface *
     get_interface() const
     {
-        warn_unimpl(__PRETTY_FUNCTION__);
+        this->warn_unimpl(__PRETTY_FUNCTION__);
         return (sc_interface *)nullptr;
     }
 
@@ -156,10 +156,50 @@ 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() : sc_port_b<IF>(sc_gen_unique_name("sc_port"), N, P) {}
+    sc_port() : sc_port_b<IF>(N, P) {}
     explicit sc_port(const char *name) : sc_port_b<IF>(name, N, P) {}
     virtual ~sc_port() {}
 
+    // Deprecated binding constructors.
+    explicit sc_port(const IF &interface) : sc_port_b<IF>(N, P)
+    {
+        this->warn_unimpl(__PRETTY_FUNCTION__);
+        // Should warn that these are deprecated. See Accellera sc_port.h.
+        sc_port_b<IF>::bind(const_cast<IF &>(interface));
+    }
+    sc_port(const char *name, const IF &interface) : sc_port_b<IF>(name, N, P)
+    {
+        this->warn_unimpl(__PRETTY_FUNCTION__);
+        // Should warn that these are deprecated. See Accellera sc_port.h.
+        sc_port_b<IF>::bind(const_cast<IF &>(interface));
+    }
+    explicit sc_port(sc_port_b<IF> &parent) : sc_port_b<IF>(N, P)
+    {
+        this->warn_unimpl(__PRETTY_FUNCTION__);
+        // Should warn that these are deprecated. See Accellera sc_port.h.
+        sc_port_b<IF>::bind(parent);
+    }
+    sc_port(const char *name, sc_port_b<IF> &parent) :
+        sc_port_b<IF>(name, N, P)
+    {
+        this->warn_unimpl(__PRETTY_FUNCTION__);
+        // Should warn that these are deprecated. See Accellera sc_port.h.
+        sc_port_b<IF>::bind(parent);
+    }
+    explicit sc_port(sc_port<IF, N, P> &parent) : sc_port_b<IF>(N, P)
+    {
+        this->warn_unimpl(__PRETTY_FUNCTION__);
+        // Should warn that these are deprecated. See Accellera sc_port.h.
+        sc_port_b<IF>::bind(parent);
+    }
+    sc_port(const char *name, sc_port<IF, N, P> &parent) :
+        sc_port_b<IF>(name, N, P)
+    {
+        this->warn_unimpl(__PRETTY_FUNCTION__);
+        // Should warn that these are deprecated. See Accellera sc_port.h.
+        sc_port_b<IF>::bind(parent);
+    }
+
     virtual const char *kind() const { return "sc_port"; }
 
   private: