aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBenedikt Tutzer <e1225461@student.tuwien.ac.at>2018-07-10 08:52:36 +0200
committerBenedikt Tutzer <e1225461@student.tuwien.ac.at>2018-07-10 08:52:36 +0200
commite7d3f3cd464fe323872285bed40e6f347683147b (patch)
tree04c4e11c0336afa2bc8f9dac2ba15f908380cc5d /kernel
parent55df7fff19cfaa42197effc31ac8de07f9090924 (diff)
downloadyosys-e7d3f3cd464fe323872285bed40e6f347683147b.tar.gz
yosys-e7d3f3cd464fe323872285bed40e6f347683147b.tar.bz2
yosys-e7d3f3cd464fe323872285bed40e6f347683147b.zip
added destructors for wires and cells
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rtlil.cc14
-rw-r--r--kernel/rtlil.h3
2 files changed, 16 insertions, 1 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 5cef90206..6e8b51682 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -2223,6 +2223,13 @@ RTLIL::Wire::Wire()
#endif
}
+RTLIL::Wire::~Wire()
+{
+#ifdef WITH_PYTHON
+ RTLIL::Wire::get_all_wires()->erase(hashidx_);
+#endif
+}
+
#ifdef WITH_PYTHON
static std::map<unsigned int, RTLIL::Wire*> *all_wires = new std::map<unsigned int, RTLIL::Wire*>();
std::map<unsigned int, RTLIL::Wire*> *RTLIL::Wire::get_all_wires(void)
@@ -2256,6 +2263,13 @@ RTLIL::Cell::Cell() : module(nullptr)
#endif
}
+RTLIL::Cell::~Cell()
+{
+#ifdef WITH_PYTHON
+ RTLIL::Cell::get_all_cells()->erase(hashidx_);
+#endif
+}
+
#ifdef WITH_PYTHON
static std::map<unsigned int, RTLIL::Cell*> *all_cells = new std::map<unsigned int, RTLIL::Cell*>();
std::map<unsigned int, RTLIL::Cell*> *RTLIL::Cell::get_all_cells(void)
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index 232a8c13a..e71a5fceb 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -1149,7 +1149,7 @@ protected:
// use module->addWire() and module->remove() to create or destroy wires
friend struct RTLIL::Module;
Wire();
- ~Wire() { };
+ ~Wire();
public:
// do not simply copy wires
@@ -1186,6 +1186,7 @@ protected:
// use module->addCell() and module->remove() to create or destroy cells
friend struct RTLIL::Module;
Cell();
+ ~Cell();
public:
// do not simply copy cells