summaryrefslogtreecommitdiff
path: root/src/systemc/ext
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/ext')
-rw-r--r--src/systemc/ext/core/sc_interface.hh1
-rw-r--r--src/systemc/ext/core/sc_port.hh4
2 files changed, 5 insertions, 0 deletions
diff --git a/src/systemc/ext/core/sc_interface.hh b/src/systemc/ext/core/sc_interface.hh
index 3c6a27dea..3b5abdf09 100644
--- a/src/systemc/ext/core/sc_interface.hh
+++ b/src/systemc/ext/core/sc_interface.hh
@@ -39,6 +39,7 @@ class sc_event;
class sc_interface
{
public:
+ virtual void register_port(sc_port_base &, const char *);
virtual const sc_event &default_event() const;
virtual ~sc_interface() {};
diff --git a/src/systemc/ext/core/sc_port.hh b/src/systemc/ext/core/sc_port.hh
index 3586fec73..904d35b8e 100644
--- a/src/systemc/ext/core/sc_port.hh
+++ b/src/systemc/ext/core/sc_port.hh
@@ -30,6 +30,7 @@
#ifndef __SYSTEMC_EXT_CORE_SC_PORT_HH__
#define __SYSTEMC_EXT_CORE_SC_PORT_HH__
+#include <typeinfo>
#include <vector>
#include "../utils/sc_report_handler.hh"
@@ -108,6 +109,7 @@ class sc_port_base : public sc_object
virtual void _gem5AddInterface(sc_interface *i) = 0;
::sc_gem5::Port *_gem5Port;
+ virtual const char *_ifTypeName() const = 0;
};
template <class IF>
@@ -210,6 +212,8 @@ class sc_port_b : public sc_port_base
_interfaces.push_back(interface);
}
+ const char *_ifTypeName() const { return typeid(IF).name(); }
+
// Disabled
sc_port_b() {}
sc_port_b(const sc_port_b<IF> &) {}