systemc: Move a function after the class it uses internally.

The class was defined, but only later in the file. By putting the
function definition later, clang stops reporting an error.

Change-Id: Id4dd1ec3f3a06f4d1dc10ef4ff8c545d98a6ae12
Reviewed-on: https://gem5-review.googlesource.com/c/13877
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
Gabe Black
2018-11-02 15:02:47 -07:00
parent d0c7e1932b
commit 287614186a

View File

@@ -236,23 +236,9 @@ class sc_event_finder_t : public sc_event_finder
virtual ~sc_event_finder_t() {}
const sc_port_base *port() const { return _port; }
const sc_port_base *port() const override { return _port; }
const sc_event &
find_event(sc_interface *if_p=NULL) const override
{
static const sc_gem5::InternalScEvent none;
const IF *iface = if_p ? dynamic_cast<const IF *>(if_p) :
dynamic_cast<const IF *>(_port->get_interface());
if (!iface) {
std::ostringstream ss;
ss << "port is not bound: port '" << _port->name() << "' (" <<
_port->kind() << ")";
SC_REPORT_ERROR(SC_ID_FIND_EVENT_, ss.str().c_str());
return none;
}
return (const_cast<IF *>(iface)->*_method)();
}
const sc_event &find_event(sc_interface *if_p=NULL) const override;
private:
const sc_port_b<IF> *_port;
@@ -276,4 +262,26 @@ class InternalScEvent : public ::sc_core::sc_event
} // namespace sc_gem5
namespace sc_core
{
template <class IF>
const sc_event &
sc_event_finder_t<IF>::find_event(sc_interface *if_p) const
{
static const sc_gem5::InternalScEvent none;
const IF *iface = if_p ? dynamic_cast<const IF *>(if_p) :
dynamic_cast<const IF *>(_port->get_interface());
if (!iface) {
std::ostringstream ss;
ss << "port is not bound: port '" << _port->name() << "' (" <<
_port->kind() << ")";
SC_REPORT_ERROR(SC_ID_FIND_EVENT_, ss.str().c_str());
return none;
}
return (const_cast<IF *>(iface)->*_method)();
}
} // namespace sc_core
#endif //__SYSTEMC_EXT_CORE_SC_INTERFACE_HH__