summaryrefslogtreecommitdiff
path: root/src/systemc/ext/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/ext/core')
-rw-r--r--src/systemc/ext/core/sc_port.hh49
1 files changed, 42 insertions, 7 deletions
diff --git a/src/systemc/ext/core/sc_port.hh b/src/systemc/ext/core/sc_port.hh
index 73f5362b6..f9e50da2e 100644
--- a/src/systemc/ext/core/sc_port.hh
+++ b/src/systemc/ext/core/sc_port.hh
@@ -105,14 +105,44 @@ class sc_port_b : public sc_port_base
virtual void bind(IF &i) { sc_port_base::bind(i); }
virtual void bind(sc_port_b<IF> &p) { sc_port_base::bind(p); }
- IF *operator -> () { return _interfaces.at(0); }
- const IF *operator -> () const { return _interfaces.at(0); }
+ IF *
+ operator -> ()
+ {
+ sc_assert(!_interfaces.empty());
+ return _interfaces[0];
+ }
+ const IF *
+ operator -> () const
+ {
+ sc_assert(!_interfaces.empty());
+ return _interfaces[0];
+ }
- IF *operator [] (int n) { return _interfaces.at(n); }
- const IF *operator [] (int n) const { return _interfaces.at(n); }
+ IF *
+ operator [] (int n)
+ {
+ sc_assert(_interfaces.size() > n);
+ return _interfaces[n];
+ }
+ const IF *
+ operator [] (int n) const
+ {
+ sc_assert(_interfaces.size() > n);
+ return _interfaces[n];
+ }
- sc_interface *get_interface() { return _interfaces.at(0); }
- const sc_interface *get_interface() const { return _interfaces.at(0); }
+ sc_interface *
+ get_interface()
+ {
+ sc_assert(!_interfaces.empty());
+ return _interfaces[0];
+ }
+ const sc_interface *
+ get_interface() const
+ {
+ sc_assert(!_interfaces.empty());
+ return _interfaces[0];
+ }
protected:
void before_end_of_elaboration() {}
@@ -151,7 +181,12 @@ class sc_port_b : public sc_port_base
private:
std::vector<IF *> _interfaces;
- sc_interface *_gem5Interface(int n) const { return _interfaces.at(n); }
+ sc_interface *
+ _gem5Interface(int n) const
+ {
+ sc_assert(_interfaces.size() > n);
+ return _interfaces[n];
+ }
void
_gem5AddInterface(sc_interface *i)
{