From d651ce4762734d784a4d36e9228ac0a9cb60b081 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 9 Sep 2008 06:16:42 +0200 Subject: [PATCH] clean up the mess with the inclusion of defsregistry.hpp, caused by the definition of DefsRegistry not being visible for DefsManager's dtor. --- src/common/singletonfactory.hpp | 2 +- src/proc/mobject/session/defsmanager.cpp | 7 +++++++ src/proc/mobject/session/defsmanager.hpp | 11 +++++++---- src/proc/mobject/session/session.cpp | 3 +-- src/proc/mobject/session/sessionimpl.hpp | 2 ++ src/proc/mobject/session/sessmanagerimpl.cpp | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/common/singletonfactory.hpp b/src/common/singletonfactory.hpp index 0065227df..0f6a12755 100644 --- a/src/common/singletonfactory.hpp +++ b/src/common/singletonfactory.hpp @@ -35,7 +35,7 @@ This code is heavily inspired by #define LUMIERA_SINGLETONFACTORY_H -#include "common/singletonpolicies.hpp" ///< several Policies usable together with SingletonFactory +#include "common/singletonpolicies.hpp" // several Policies usable together with SingletonFactory #include "common/util.hpp" #include "proc/nobugcfg.hpp" diff --git a/src/proc/mobject/session/defsmanager.cpp b/src/proc/mobject/session/defsmanager.cpp index b60e38064..383b1f60f 100644 --- a/src/proc/mobject/session/defsmanager.cpp +++ b/src/proc/mobject/session/defsmanager.cpp @@ -51,6 +51,13 @@ namespace mobject } + + /** @internal causes boost::checked_delete from \c scoped_ptr + * to be placed here, where the declaration of DefsRegistry is available.*/ + DefsManager::~DefsManager() {} + + + template P DefsManager::search (const Query& capabilities) diff --git a/src/proc/mobject/session/defsmanager.hpp b/src/proc/mobject/session/defsmanager.hpp index eb2ca1502..12bc039f8 100644 --- a/src/proc/mobject/session/defsmanager.hpp +++ b/src/proc/mobject/session/defsmanager.hpp @@ -33,14 +33,15 @@ -namespace mobject - { - namespace session - { +namespace mobject { + namespace session { + + using lumiera::P; using boost::scoped_ptr; class DefsRegistry; + class SessManagerImpl; /** @@ -63,6 +64,8 @@ namespace mobject friend class SessManagerImpl; public: + ~DefsManager (); + /** common access point: retrieve the default object fulfilling * some given conditions. May silently trigger object creation. * @throw error::Config in case no solution is possible, which diff --git a/src/proc/mobject/session/session.cpp b/src/proc/mobject/session/session.cpp index 5c4bb8592..d8d20ed4c 100644 --- a/src/proc/mobject/session/session.cpp +++ b/src/proc/mobject/session/session.cpp @@ -32,9 +32,8 @@ #include "proc/mobject/session.hpp" -#include "proc/mobject/session/sessionimpl.hpp" #include "proc/mobject/session/defsmanager.hpp" -#include "proc/mobject/session/defsregistry.hpp" +#include "proc/mobject/session/sessionimpl.hpp" #include "common/singleton.hpp" diff --git a/src/proc/mobject/session/sessionimpl.hpp b/src/proc/mobject/session/sessionimpl.hpp index 89e3c020a..a56fdb217 100644 --- a/src/proc/mobject/session/sessionimpl.hpp +++ b/src/proc/mobject/session/sessionimpl.hpp @@ -94,6 +94,8 @@ namespace mobject friend class lumiera::singleton::StaticCreate; public: + virtual ~SessManagerImpl() {} + virtual void clear () ; virtual void reset () ; virtual void load () ; diff --git a/src/proc/mobject/session/sessmanagerimpl.cpp b/src/proc/mobject/session/sessmanagerimpl.cpp index 8195e4fbe..7ac96bee4 100644 --- a/src/proc/mobject/session/sessmanagerimpl.cpp +++ b/src/proc/mobject/session/sessmanagerimpl.cpp @@ -39,7 +39,7 @@ #include "proc/mobject/session.hpp" #include "proc/mobject/session/sessionimpl.hpp" #include "proc/mobject/session/defsmanager.hpp" -#include "proc/mobject/session/defsregistry.hpp" +//#include "proc/mobject/session/defsregistry.hpp" #include "common/error.hpp" using boost::scoped_ptr;