systemc: Explicitly keep the sc_port bind alongside sc_in's version.
authorGabe Black <gabeblack@google.com>
Sat, 3 Nov 2018 00:43:29 +0000 (17:43 -0700)
committerGabe Black <gabeblack@google.com>
Mon, 5 Nov 2018 23:10:16 +0000 (23:10 +0000)
The sc_in bind function was hiding the one from sc_port by changing
the const-ness of its parameter. This change explicitly exposes the
underlying sc_port version, and keeps it alongside the new sc_in
version.

This seems mildly dangerous and undesirable because now there are two
very similar functions which would both need to be overridden in order
to get new behavior, but I don't think it's any more dangerous and
undesirable than as (perhaps unintentionally) specified in the
standard.

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

src/systemc/ext/channel/sc_in.hh

index 3fea8a8034b297d472c5d2eb78e1ed7da3938367..85d089dbccf0c78415d042d57f09a9267e99d347 100644 (file)
@@ -225,6 +225,8 @@ class sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1>
         _negFinder(*this, &sc_signal_in_if<bool>::negedge_event)
     {}
 
+    using sc_port<sc_signal_in_if<bool>, 1>::bind;
+
     virtual void
     bind(const sc_signal_in_if<bool> &i)
     {
@@ -390,6 +392,8 @@ class sc_in<sc_dt::sc_logic> :
         _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event)
     {}
 
+    using sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>::bind;
+
     virtual void
     bind(const sc_signal_in_if<sc_dt::sc_logic> &i)
     {