diff --git a/include/sta/ConcreteNetwork.hh b/include/sta/ConcreteNetwork.hh index 1dde908b..4ae437d9 100644 --- a/include/sta/ConcreteNetwork.hh +++ b/include/sta/ConcreteNetwork.hh @@ -163,6 +163,7 @@ public: const char *filename); virtual LibertyLibrary *makeLibertyLibrary(const char *name, const char *filename); + virtual void deleteLibrary(Library *library); virtual Cell *makeCell(Library *library, const char *name, bool is_leaf, @@ -238,7 +239,6 @@ public: protected: void addLibrary(ConcreteLibrary *library); - void deleteLibrary(ConcreteLibrary *library); void setName(const char *name); void clearConstantNets(); virtual void visitConnectedPins(const Net *net, diff --git a/include/sta/Network.hh b/include/sta/Network.hh index 1b1c66c5..32178fea 100644 --- a/include/sta/Network.hh +++ b/include/sta/Network.hh @@ -533,6 +533,7 @@ public: virtual void setLinkFunc(LinkNetworkFunc *link) = 0; virtual Library *makeLibrary(const char *name, const char *filename) = 0; + virtual void deleteLibrary(Library *library) = 0; // Search the libraries in read order for a cell by name. virtual Cell *findAnyCell(const char *name) = 0; virtual Cell *makeCell(Library *library, diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index 51f059f7..6f8b8425 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -437,11 +437,12 @@ ConcreteNetwork::findLibrary(const char *name) } void -ConcreteNetwork::deleteLibrary(ConcreteLibrary *library) +ConcreteNetwork::deleteLibrary(Library *library) { - library_map_.erase(library->name()); - library_seq_.eraseObject(library); - delete library; + ConcreteLibrary *clib = reinterpret_cast(library); + library_map_.erase(clib->name()); + library_seq_.eraseObject(clib); + delete clib; } const char *