systemc: Move a function after the class it uses internally.
authorGabe Black <gabeblack@google.com>
Fri, 2 Nov 2018 22:02:47 +0000 (15:02 -0700)
committerGabe Black <gabeblack@google.com>
Mon, 5 Nov 2018 23:08:29 +0000 (23:08 +0000)
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>

src/systemc/ext/core/sc_event.hh

index 56ee24f76b414fa77e60ad6b3c563007c47ae9d6..e2164f4b83ab3b6724dca57a664b24adcdb9014c 100644 (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__