summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/systemc/core/sc_attr.cc49
-rw-r--r--src/systemc/ext/core/sc_attr.hh28
-rw-r--r--src/systemc/ext/core/sc_process_handle.hh9
3 files changed, 84 insertions, 2 deletions
diff --git a/src/systemc/core/sc_attr.cc b/src/systemc/core/sc_attr.cc
index 28e0b6010..ca9e0af66 100644
--- a/src/systemc/core/sc_attr.cc
+++ b/src/systemc/core/sc_attr.cc
@@ -89,4 +89,53 @@ sc_attr_cltn::end() const
return (const_iterator)nullptr;
}
+sc_attr_cltn::sc_attr_cltn()
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+sc_attr_cltn::sc_attr_cltn(const sc_attr_cltn &)
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+sc_attr_cltn::~sc_attr_cltn()
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+bool
+sc_attr_cltn::push_back(sc_attr_base *)
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+ return false;
+}
+
+sc_attr_base *
+sc_attr_cltn::operator [] (const std::string &name)
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+ return nullptr;
+}
+
+const sc_attr_base *
+sc_attr_cltn::operator [] (const std::string &name) const
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+ return nullptr;
+}
+
+sc_attr_base *
+sc_attr_cltn::remove(const std::string &name)
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+ return nullptr;
+}
+
+void
+sc_attr_cltn::remove_all()
+{
+ warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
} // namespace sc_core
diff --git a/src/systemc/ext/core/sc_attr.hh b/src/systemc/ext/core/sc_attr.hh
index d7baa149d..e1c5ae771 100644
--- a/src/systemc/ext/core/sc_attr.hh
+++ b/src/systemc/ext/core/sc_attr.hh
@@ -31,6 +31,7 @@
#define __SYSTEMC_EXT_CORE_SC_ATTR_HH__
#include <string>
+#include <vector>
namespace sc_core
{
@@ -91,6 +92,33 @@ class sc_attr_cltn
const_iterator begin() const;
iterator end();
const_iterator end() const;
+
+ private:
+ // Disabled
+ sc_attr_cltn &operator = (const sc_attr_cltn &);
+
+ // "Impelemtation defined" members required by the regression tests.
+ public:
+ sc_attr_cltn();
+
+ // It's non-standard for this not to be disabled.
+ sc_attr_cltn(const sc_attr_cltn &);
+
+ ~sc_attr_cltn();
+
+ bool push_back(sc_attr_base *);
+
+ sc_attr_base *operator [] (const std::string &name);
+ const sc_attr_base *operator [] (const std::string &name) const;
+
+ sc_attr_base *remove(const std::string &name);
+
+ void remove_all();
+
+ int size() const { return cltn.size(); }
+
+ private:
+ std::vector<sc_attr_base *> cltn;
};
} // namespace sc_core
diff --git a/src/systemc/ext/core/sc_process_handle.hh b/src/systemc/ext/core/sc_process_handle.hh
index a928ab3ad..a8f977ba6 100644
--- a/src/systemc/ext/core/sc_process_handle.hh
+++ b/src/systemc/ext/core/sc_process_handle.hh
@@ -66,10 +66,15 @@ class sc_unwind_exception : public std::exception
virtual const char *what() const throw();
virtual bool is_reset() const;
- protected:
- sc_unwind_exception();
+ // Nonstandard.
+ // These should be protected, but I think this is to enable catch by
+ // value.
+ public:
sc_unwind_exception(const sc_unwind_exception &);
virtual ~sc_unwind_exception() throw();
+
+ protected:
+ sc_unwind_exception();
};
class sc_process_handle