From 5f8af6b4eec1a2677965fa9d7818ca67b2274df7 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 13 Jun 2018 20:09:24 -0700 Subject: [PATCH] systemc: Add some "implementation defined" stuff to sc_attr_cltn. These "impelementation defined" methods are tested by the regression tests, so we need to have them. We might as well have the same general interface as the Accellera implementation since nothing there seems overly specialized for that environment. Change-Id: Ief6567fcd9d99d3a0f526cfa3b65043b2c828efa Reviewed-on: https://gem5-review.googlesource.com/11185 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/systemc/core/sc_attr.cc | 49 +++++++++++++++++++++++ src/systemc/ext/core/sc_attr.hh | 28 +++++++++++++ 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 +#include 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 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 -- 2.30.2