diff options
-rw-r--r-- | src/systemc/core/sc_attr.cc | 49 | ||||
-rw-r--r-- | src/systemc/ext/core/sc_attr.hh | 28 | ||||
-rw-r--r-- | src/systemc/ext/core/sc_process_handle.hh | 9 |
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 |