diff options
author | Gabe Black <gabeblack@google.com> | 2018-08-13 18:20:52 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-09-20 01:47:22 +0000 |
commit | fe34731b02b1a32a0f881846d5b04d11ba6a2d12 (patch) | |
tree | 123a49a3dca1e723ef1e818aa7f2bd6913e73f75 /src/systemc | |
parent | 8e91764a3642c3ef5e630d02908f8c9072d5b538 (diff) | |
download | gem5-fe34731b02b1a32a0f881846d5b04d11ba6a2d12.tar.xz |
systemc: Implement the sc_in class.
Change-Id: I08174462cb650c7918a4e8f5284d4ee814cf595d
Reviewed-on: https://gem5-review.googlesource.com/12085
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc')
-rw-r--r-- | src/systemc/ext/channel/sc_in.hh | 441 |
1 files changed, 188 insertions, 253 deletions
diff --git a/src/systemc/ext/channel/sc_in.hh b/src/systemc/ext/channel/sc_in.hh index f691afee0..b7170aed3 100644 --- a/src/systemc/ext/channel/sc_in.hh +++ b/src/systemc/ext/channel/sc_in.hh @@ -32,6 +32,7 @@ #include <string> +#include "../core/sc_event.hh" #include "../core/sc_port.hh" #include "sc_signal_in_if.hh" #include "sc_signal_inout_if.hh" @@ -41,119 +42,98 @@ namespace sc_core { class sc_event; -class sc_event_finder; class sc_trace_file; template <class T> class sc_in : public sc_port<sc_signal_in_if<T>, 1> { public: - sc_in() : sc_port<sc_signal_in_if<T>, 1>() {} - explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name) {} + sc_in() : sc_port<sc_signal_in_if<T>, 1>(), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) + {} + explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) + {} 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_port<sc_signal_in_if<T>, 1>(interface), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) {} sc_in(const char *name, const sc_signal_in_if<T> &interface) : - sc_port<sc_signal_in_if<T>, 1>(name, interface) + sc_port<sc_signal_in_if<T>, 1>(name, interface), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) {} explicit sc_in(sc_port_b<sc_signal_in_if<T> > &parent) : - sc_port<sc_signal_in_if<T>, 1>(parent) + sc_port<sc_signal_in_if<T>, 1>(parent), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) {} sc_in(const char *name, sc_port_b<sc_signal_in_if<T> > &parent) : - sc_port<sc_signal_in_if<T>, 1>(name, parent) + sc_port<sc_signal_in_if<T>, 1>(name, parent), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) {} explicit sc_in(sc_port<sc_signal_in_if<T>, 1> &parent) : - sc_port<sc_signal_in_if<T>, 1>(parent) + sc_port<sc_signal_in_if<T>, 1>(parent), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) {} sc_in(const char *name, sc_port<sc_signal_in_if<T>, 1> &parent) : - sc_port<sc_signal_in_if<T>, 1>(name, parent) + sc_port<sc_signal_in_if<T>, 1>(name, parent), + _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) {} virtual void - bind(const sc_signal_in_if<T> &) - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - } - void - operator () (const sc_signal_in_if<T> &) + bind(const sc_signal_in_if<T> &i) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port<sc_signal_in_if<T>, 1>::bind( + const_cast<sc_signal_in_if<T> &>(i)); } + void operator () (const sc_signal_in_if<T> &i) { bind(i); } virtual void - bind(sc_port<sc_signal_in_if<T>, 1> &) + bind(sc_port<sc_signal_in_if<T>, 1> &i) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port<sc_signal_in_if<T>, 1>::bind(i); } void - operator () (sc_port<sc_signal_in_if<T>, 1> &) + operator () (sc_port<sc_signal_in_if<T>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + bind(p); } virtual void - bind(sc_port<sc_signal_inout_if<T>, 1> &) + bind(sc_port<sc_signal_inout_if<T>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port_base::bind(p); } void - operator () (sc_port<sc_signal_inout_if<T>, 1> &) + operator () (sc_port<sc_signal_inout_if<T>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + bind(p); } - virtual void - end_of_elaboration() - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - } + virtual void end_of_elaboration() { /* Implementation defined. */ } - const T & - read() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const T *)nullptr; - } - operator const T& () const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const T *)nullptr; - } + const T &read() const { return (*this)->read(); } + operator const T& () const { return (*this)->read(); } - const sc_event & - default_event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; - } + const sc_event &default_event() const { return (*this)->default_event(); } const sc_event & value_changed_event() const { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; - } - bool - event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } - sc_event_finder & - value_changed() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; + return (*this)->value_changed_event(); } + bool event() const { return (*this)->event(); } + sc_event_finder &value_changed() const { return _valueChangedFinder; } virtual const char *kind() const { return "sc_in"; } private: + mutable sc_event_finder_t<sc_signal_in_if<T> > _valueChangedFinder; + // Disabled - sc_in(const sc_in<T> &) : sc_port<sc_signal_in_if<T>, 1>() {} - sc_in<T> &operator = (const sc_in<T> &) { return *this; } + sc_in(const sc_in<T> &); + sc_in<T> &operator = (const sc_in<T> &); }; template <class T> @@ -167,151 +147,135 @@ template <> class sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1> { public: - sc_in() : sc_port<sc_signal_in_if<bool>, 1>() {} + sc_in() : sc_port<sc_signal_in_if<bool>, 1>(), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) + {} explicit sc_in(const char *name) : - sc_port<sc_signal_in_if<bool>, 1>(name) {} + sc_port<sc_signal_in_if<bool>, 1>(name), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) + {} 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_port<sc_signal_in_if<bool>, 1>(interface), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) {} sc_in(const char *name, const sc_signal_in_if<bool> &interface) : - sc_port<sc_signal_in_if<bool>, 1>(name, interface) + sc_port<sc_signal_in_if<bool>, 1>(name, interface), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) {} explicit sc_in(sc_port_b<sc_signal_in_if<bool> > &parent) : - sc_port<sc_signal_in_if<bool>, 1>(parent) + sc_port<sc_signal_in_if<bool>, 1>(parent), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) {} sc_in(const char *name, sc_port_b<sc_signal_in_if<bool> > &parent) : - sc_port<sc_signal_in_if<bool>, 1>(name, parent) + sc_port<sc_signal_in_if<bool>, 1>(name, parent), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) {} explicit sc_in(sc_port<sc_signal_in_if<bool>, 1> &parent) : - sc_port<sc_signal_in_if<bool>, 1>(parent) + sc_port<sc_signal_in_if<bool>, 1>(parent), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) {} sc_in(const char *name, sc_port<sc_signal_in_if<bool>, 1> &parent) : - sc_port<sc_signal_in_if<bool>, 1>(name, parent) + sc_port<sc_signal_in_if<bool>, 1>(name, parent), + _valueChangedFinder(*this, + &sc_signal_in_if<bool>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), + _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) {} virtual void - bind(const sc_signal_in_if<bool> &) + bind(const sc_signal_in_if<bool> &i) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - } - void - operator () (const sc_signal_in_if<bool> &) - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port<sc_signal_in_if<bool>, 1>::bind( + const_cast<sc_signal_in_if<bool> &>(i)); } + void operator () (const sc_signal_in_if<bool> &i) { bind(i); } virtual void - bind(sc_port<sc_signal_in_if<bool>, 1> &) + bind(sc_port<sc_signal_in_if<bool>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port<sc_signal_in_if<bool>, 1>::bind(p); } void - operator () (sc_port<sc_signal_in_if<bool>, 1> &) + operator () (sc_port<sc_signal_in_if<bool>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + bind(p); } virtual void - bind(sc_port<sc_signal_inout_if<bool>, 1> &) + bind(sc_port<sc_signal_inout_if<bool>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port_base::bind(p); } void - operator () (sc_port<sc_signal_inout_if<bool>, 1> &) + operator () (sc_port<sc_signal_inout_if<bool>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + bind(p); } - virtual void - end_of_elaboration() - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - } + virtual void end_of_elaboration() { /* Implementation defined. */ } - const bool & - read() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const bool *)nullptr; - } - operator const bool& () const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const bool *)nullptr; - } + const bool &read() const { return (*this)->read(); } + operator const bool& () const { return (*this)->read(); } - const sc_event & - default_event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; - } + const sc_event &default_event() const { return (*this)->default_event(); } const sc_event & value_changed_event() const { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; + return (*this)->value_changed_event(); } const sc_event & posedge_event() const { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; + return (*this)->posedge_event(); } const sc_event & negedge_event() const { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; + return (*this)->negedge_event(); } - bool - event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } - bool - posedge() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } - bool - negedge() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } + bool event() const { return (*this)->event(); } + bool posedge() const { return (*this)->posedge(); } + bool negedge() const { return (*this)->negedge(); } - sc_event_finder & - value_changed() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; - } - sc_event_finder & - pos() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; - } - sc_event_finder & - neg() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; - } + sc_event_finder &value_changed() const { return _valueChangedFinder; } + sc_event_finder &pos() const { return _posFinder; } + sc_event_finder &neg() const { return _negFinder; } virtual const char *kind() const { return "sc_in"; } private: + mutable sc_event_finder_t<sc_signal_in_if<bool> > _valueChangedFinder; + mutable sc_event_finder_t<sc_signal_in_if<bool> > _posFinder; + mutable sc_event_finder_t<sc_signal_in_if<bool> > _negFinder; + // Disabled - sc_in(const sc_in<bool> &) : sc_port<sc_signal_in_if<bool>, 1>() {} - sc_in<bool> &operator = (const sc_in<bool> &) { return *this; } + sc_in(const sc_in<bool> &); + sc_in<bool> &operator = (const sc_in<bool> &); }; template <> @@ -326,161 +290,132 @@ class sc_in<sc_dt::sc_logic> : public sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> { public: - sc_in() : sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>() {} + sc_in() : sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) + {} explicit sc_in(const char *name) : - sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name) + sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} 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_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(interface), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} 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) + sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, interface), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} 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_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} 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) + sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} 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_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} 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) + sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent), + _valueChangedFinder(*this, + &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), + _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), + _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) {} virtual void - bind(const sc_signal_in_if<sc_dt::sc_logic> &) + bind(const sc_signal_in_if<sc_dt::sc_logic> &i) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>::bind( + const_cast<sc_signal_in_if<sc_dt::sc_logic> &>(i)); } void - operator () (const sc_signal_in_if<sc_dt::sc_logic> &) - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - } + operator () (const sc_signal_in_if<sc_dt::sc_logic> &i) { bind(i); } virtual void - bind(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &) + bind(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &i) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>::bind(i); } void - operator () (sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &) + operator () (sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + bind(p); } virtual void - bind(sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &) + bind(sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + sc_port_base::bind(p); } void - operator () (sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &) + operator () (sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &p) { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); + bind(p); } - virtual void - end_of_elaboration() - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - } + virtual void end_of_elaboration() { /* Implementation defined. */ } - const sc_dt::sc_logic & - read() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_dt::sc_logic *)nullptr; - } - operator const sc_dt::sc_logic& () const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_dt::sc_logic *)nullptr; - } + const sc_dt::sc_logic &read() const { return (*this)->read(); } + operator const sc_dt::sc_logic& () const { return (*this)->read(); } - const sc_event & - default_event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; - } + const sc_event &default_event() const { return (*this)->default_event(); } const sc_event & value_changed_event() const { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; - } - const sc_event & - posedge_event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; - } - const sc_event & - negedge_event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(const sc_event *)nullptr; + return (*this)->value_changed_event(); } + const sc_event &posedge_event() const { return (*this)->posedge_event(); } + const sc_event &negedge_event() const { return (*this)->negedge_event(); } - bool - event() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } - bool - posedge() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } - bool - negedge() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return false; - } + bool event() const { return (*this)->event(); } + bool posedge() const { return (*this)->posedge(); } + bool negedge() const { return (*this)->negedge(); } - sc_event_finder & - value_changed() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; - } - sc_event_finder & - pos() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; - } - sc_event_finder & - neg() const - { - sc_channel_warn_unimpl(__PRETTY_FUNCTION__); - return *(sc_event_finder *)nullptr; - } + sc_event_finder &value_changed() const { return _valueChangedFinder; } + sc_event_finder &pos() const { return _posFinder; } + sc_event_finder &neg() const { return _negFinder; } virtual const char *kind() const { return "sc_in"; } private: + mutable sc_event_finder_t<sc_signal_in_if<sc_dt::sc_logic> > + _valueChangedFinder; + mutable sc_event_finder_t<sc_signal_in_if<sc_dt::sc_logic> > _posFinder; + mutable sc_event_finder_t<sc_signal_in_if<sc_dt::sc_logic> > _negFinder; + // Disabled - sc_in(const sc_in<sc_dt::sc_logic> &) : - sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>() - {} - sc_in<sc_dt::sc_logic> & - operator = (const sc_in<sc_dt::sc_logic> &) - { - return *this; - } + sc_in(const sc_in<sc_dt::sc_logic> &); + sc_in<sc_dt::sc_logic> &operator = (const sc_in<sc_dt::sc_logic> &); }; template <> |