systemc: Add some "implementation defined" stuff to sc_attr_cltn.
authorGabe Black <gabeblack@google.com>
Thu, 14 Jun 2018 03:09:24 +0000 (20:09 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 22 Aug 2018 00:49:20 +0000 (00:49 +0000)
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 <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/sc_attr.cc
src/systemc/ext/core/sc_attr.hh
src/systemc/ext/core/sc_process_handle.hh

index 28e0b6010e87419f10f3921cd883ea5c21f67f8b..ca9e0af66217663daf1ff571d5eea79051725005 100644 (file)
@@ -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
index d7baa149d1d5d609380c95c268379f4e46388db1..e1c5ae771b242b072ae0b652b01775e0f35b3ba7 100644 (file)
@@ -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
index a928ab3ad16de1b94580a8e45cd4aadeefbbc285..a8f977ba6b0b584043fa86134f2331e76f13f0fa 100644 (file)
@@ -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