From cf593bd06044caa71d200707fcad006fede9aae9 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 5 Nov 2018 14:17:42 -0500 Subject: [PATCH] Adapt to removal of Singleton --- ext/ghoul | 2 +- .../documentation/documentationengine.h | 9 ++++--- include/openspace/mission/missionmanager.h | 2 +- include/openspace/util/spicemanager.h | 13 ++++++---- .../openspace/util/transformationmanager.h | 14 ++++++---- src/documentation/documentationengine.cpp | 15 +++++++++++ src/engine/logfactory.cpp | 4 +-- src/engine/openspaceengine.cpp | 7 ++--- src/rendering/renderengine.cpp | 3 ++- src/util/histogram.cpp | 1 + src/util/keys.cpp | 1 + src/util/spicemanager.cpp | 24 +++++++++++++++++ src/util/transformationmanager.cpp | 26 ++++++++++++++++++- 13 files changed, 98 insertions(+), 23 deletions(-) diff --git a/ext/ghoul b/ext/ghoul index 179888b696..2494e6b299 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit 179888b696833580f5fe11a439f44435b2aee455 +Subproject commit 2494e6b29900eac99c7f432c89d4c8fa0556887f diff --git a/include/openspace/documentation/documentationengine.h b/include/openspace/documentation/documentationengine.h index f7b343875c..d3f9639616 100644 --- a/include/openspace/documentation/documentationengine.h +++ b/include/openspace/documentation/documentationengine.h @@ -26,7 +26,6 @@ #define __OPENSPACE_CORE___DOCUMENTATIONENGINE___H__ #include -#include #include #include @@ -38,9 +37,7 @@ namespace openspace::documentation { * produced in the application an write them out as a documentation file for human * consumption. */ -class DocumentationEngine : public ghoul::Singleton - , public DocumentationGenerator -{ +class DocumentationEngine : public DocumentationGenerator { public: /** * This exception is thrown by the addDocumentation method if a provided Documentation @@ -80,6 +77,10 @@ public: */ std::vector documentations() const; + static void initialize(); + static void deinitialize(); + static bool isInitialized(); + /** * Returns a static reference to the main singleton DocumentationEngine. * diff --git a/include/openspace/mission/missionmanager.h b/include/openspace/mission/missionmanager.h index 83f714f280..fa7f60e711 100644 --- a/include/openspace/mission/missionmanager.h +++ b/include/openspace/mission/missionmanager.h @@ -27,7 +27,7 @@ #include -#include +#include #include #include #include diff --git a/include/openspace/util/spicemanager.h b/include/openspace/util/spicemanager.h index ada7430d93..5d3e261084 100644 --- a/include/openspace/util/spicemanager.h +++ b/include/openspace/util/spicemanager.h @@ -25,8 +25,6 @@ #ifndef __OPENSPACE_CORE___SPICEMANAGER___H__ #define __OPENSPACE_CORE___SPICEMANAGER___H__ -#include - #include #include #include @@ -40,9 +38,7 @@ namespace openspace { namespace scripting { struct LuaLibrary; } -class SpiceManager : public ghoul::Singleton { - friend class ghoul::Singleton; - +class SpiceManager { public: BooleanType(UseException); @@ -150,6 +146,11 @@ public: */ static TerminatorType terminatorTypeFromString(const std::string& type); + static void initialize(); + static void deinitialize(); + static bool isInitialized(); + static SpiceManager& ref(); + /** * Loads one or more SPICE kernels into a program. The provided path can either be a * binary, text-kernel, or meta-kernel which gets loaded into the kernel pool. The @@ -1055,6 +1056,8 @@ private: /// The last assigned kernel-id, used to determine the next free kernel id KernelHandle _lastAssignedKernel = KernelHandle(0); + + static SpiceManager* _instance; }; } // namespace openspace diff --git a/include/openspace/util/transformationmanager.h b/include/openspace/util/transformationmanager.h index 974ff53da2..77efaf5179 100644 --- a/include/openspace/util/transformationmanager.h +++ b/include/openspace/util/transformationmanager.h @@ -25,8 +25,6 @@ #ifndef __OPENSPACE_CORE___TRANSFORMATIONMANAGER___H__ #define __OPENSPACE_CORE___TRANSFORMATIONMANAGER___H__ -#include - #include #include #include @@ -36,13 +34,17 @@ namespace ccmc { class Kameleon; } namespace openspace { -class TransformationManager : public ghoul::Singleton { - friend class ghoul::Singleton; - +class TransformationManager { public: TransformationManager(); ~TransformationManager(); + static void initialize(); + static void deinitialize(); + static bool isInitialized(); + static TransformationManager& ref(); + + glm::dmat3 frameTransformationMatrix(const std::string& from, const std::string& to, double ephemerisTime) const; @@ -55,6 +57,8 @@ private: //#endif std::set _kameleonFrames; std::set _dipoleFrames; + + static TransformationManager* _instance; }; } // namespace openspace diff --git a/src/documentation/documentationengine.cpp b/src/documentation/documentationengine.cpp index 24f3849f23..4a1477a840 100644 --- a/src/documentation/documentationengine.cpp +++ b/src/documentation/documentationengine.cpp @@ -62,6 +62,21 @@ DocumentationEngine::DocumentationEngine() ) {} +void DocumentationEngine::initialize() { + ghoul_assert(!isInitialized(), "DocumentationEngine is already initialized"); + _instance = new DocumentationEngine; +} + +void DocumentationEngine::deinitialize() { + ghoul_assert(isInitialized(), "DocumentationEngine is not initialized"); + delete _instance; + _instance = nullptr; +} + +bool DocumentationEngine::isInitialized() { + return _instance != nullptr; +} + DocumentationEngine& DocumentationEngine::ref() { if (_instance == nullptr) { _instance = new DocumentationEngine; diff --git a/src/engine/logfactory.cpp b/src/engine/logfactory.cpp index 324db3de7e..30da9abb00 100644 --- a/src/engine/logfactory.cpp +++ b/src/engine/logfactory.cpp @@ -183,7 +183,7 @@ std::unique_ptr createLog(const ghoul::Dictionary& dictiona LogLevelStamping(logLevelStamp), cssFiles, jsFiles, - ghoul::logging::levelFromString(logLevel) + ghoul::from_string(logLevel) ); } } @@ -206,7 +206,7 @@ std::unique_ptr createLog(const ghoul::Dictionary& dictiona DateStamping(dateStamp), CategoryStamping(categoryStamp), LogLevelStamping(logLevelStamp), - ghoul::logging::levelFromString(logLevel) + ghoul::from_string(logLevel) ); } } diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index c4142f46d7..3a40af7bd6 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -73,6 +73,7 @@ #include #include #include +#include #include #include #include @@ -223,7 +224,7 @@ void OpenSpaceEngine::initialize() { ghoul::logging::LogManager::deinitialize(); } - ghoul::logging::LogLevel level = ghoul::logging::levelFromString( + ghoul::logging::LogLevel level = ghoul::from_string( global::configuration.logging.level ); bool immediateFlush = global::configuration.logging.forceImmediateFlush; @@ -550,8 +551,8 @@ void OpenSpaceEngine::initializeGL() { if (global::configuration.isLoggingOpenGLCalls) { using namespace ghoul::logging; - LogLevel level = levelFromString(global::configuration.logging.level); - if (level > LogLevel::Trace) { + LogLevel lvl = ghoul::from_string(global::configuration.logging.level); + if (lvl > LogLevel::Trace) { LWARNING( "Logging OpenGL calls is enabled, but the selected log level does " "not include TRACE, so no OpenGL logs will be printed"); diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index 58adbf322e..803f4714c2 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -1161,7 +1162,7 @@ void RenderEngine::renderScreenLog() { break; } - const std::string lvl = "(" + ghoul::logging::stringFromLevel(e->level) + ")"; + const std::string lvl = "(" + ghoul::to_string(e->level) + ")"; const std::string& message = e->message.substr(0, MessageLength); nr += std::count(message.begin(), message.end(), '\n'); diff --git a/src/util/histogram.cpp b/src/util/histogram.cpp index 1dd9bb510b..d0265e2e91 100644 --- a/src/util/histogram.cpp +++ b/src/util/histogram.cpp @@ -25,6 +25,7 @@ #include #include +#include #include namespace { diff --git a/src/util/keys.cpp b/src/util/keys.cpp index 8a2e756fb4..1dbfe04592 100644 --- a/src/util/keys.cpp +++ b/src/util/keys.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include diff --git a/src/util/spicemanager.cpp b/src/util/spicemanager.cpp index e21845b97d..2ddb2eba66 100644 --- a/src/util/spicemanager.cpp +++ b/src/util/spicemanager.cpp @@ -87,6 +87,9 @@ namespace { #include "spicemanager_lua.inl" namespace openspace { + +SpiceManager* SpiceManager::_instance = nullptr; + SpiceManager::SpiceException::SpiceException(const std::string& msg) : ghoul::RuntimeError(msg, "Spice") @@ -184,6 +187,27 @@ SpiceManager::~SpiceManager() { errprt_c("SET", 0, const_cast("DEFAULT")); // NOLINT } +void SpiceManager::initialize() { + ghoul_assert(!isInitialized(), "SpiceManager is already initialized"); + _instance = new SpiceManager; +} + +void SpiceManager::deinitialize() { + ghoul_assert(isInitialized(), "SpiceManager is not initialized"); + delete _instance; + _instance = nullptr; +} + +bool SpiceManager::isInitialized() { + return _instance != nullptr; +} + +SpiceManager& SpiceManager::ref() { + ghoul_assert(isInitialized(), "SpiceManager is not initialized"); + return *_instance; +} + + SpiceManager::KernelHandle SpiceManager::loadKernel(std::string filePath) { ghoul_assert(!filePath.empty(), "Empty file path"); ghoul_assert( diff --git a/src/util/transformationmanager.cpp b/src/util/transformationmanager.cpp index 72333e4a8b..08a7b3975a 100644 --- a/src/util/transformationmanager.cpp +++ b/src/util/transformationmanager.cpp @@ -26,6 +26,7 @@ #include #include +#include #ifdef OPENSPACE_MODULE_KAMELEON_ENABLED #ifdef WIN32 @@ -42,7 +43,9 @@ namespace openspace { -TransformationManager::TransformationManager(){ +TransformationManager* TransformationManager::_instance = nullptr; + +TransformationManager::TransformationManager() { #ifdef OPENSPACE_MODULE_KAMELEON_ENABLED _kameleon = std::make_shared(); #else @@ -63,6 +66,27 @@ TransformationManager::~TransformationManager() { // NOLINT #endif } +void TransformationManager::initialize() { + ghoul_assert(!isInitialized(), "TransformationManager is already initialized"); + _instance = new TransformationManager; +} + +void TransformationManager::deinitialize() { + ghoul_assert(isInitialized(), "TransformationManager is not initialized"); + delete _instance; + _instance = nullptr; +} + +bool TransformationManager::isInitialized() { + return _instance != nullptr; +} + +TransformationManager& TransformationManager::ref() { + ghoul_assert(isInitialized(), "TransformationManager is not initialized"); + return *_instance; +} + + glm::dmat3 TransformationManager::kameleonTransformationMatrix( [[maybe_unused]] const std::string& from, [[maybe_unused]] const std::string& to,