added destructors for wires and cells
authorBenedikt Tutzer <e1225461@student.tuwien.ac.at>
Tue, 10 Jul 2018 06:52:36 +0000 (08:52 +0200)
committerBenedikt Tutzer <e1225461@student.tuwien.ac.at>
Tue, 10 Jul 2018 06:52:36 +0000 (08:52 +0200)
kernel/rtlil.cc
kernel/rtlil.h

index 5cef902065516f64be2ad9481ef4e8c26ccc23dd..6e8b51682e13132d5e142f1aa594dc80ec5130d1 100644 (file)
@@ -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)
index 232a8c13aea6026c6acc5431c508c60fe182bb4f..e71a5fcebbd394cee56f1478fce648cd1aaee901 100644 (file)
@@ -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