From 19675a1a4899f68a4e7afbd45cebc63b544650e4 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 20 Nov 2016 05:27:10 +0100 Subject: optimized RBTree: avoid unnecessary virtual RBTree and RBEntry implementation classes * whenever the implementation class was not exactly RBEntryType, it had to have a virtual destructor since RBTree cared about cleanup and had to delete its members. * Since it does not allocate them, it is consistent to remove RBTree::clear(). The destructor now only checks that subclasses have cleaned up. Implementing cleanup in the subclasses is trivial. * Consequently, RBEntryString no longer has to be virtual. HelpIndex and GotoTables are completely non-virtual now which saves memory (and a bit of cleanup speed). For QRegister, not much changes, though. --- src/help.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/help.h') diff --git a/src/help.h b/src/help.h index 92115ab..55fb2ee 100644 --- a/src/help.h +++ b/src/help.h @@ -47,6 +47,14 @@ public: } }; + ~HelpIndex() + { + Topic *cur; + + while ((cur = (Topic *)min())) + delete (Topic *)remove(cur); + } + void load(void); Topic *find(const gchar *name); -- cgit v1.2.3