[Orxonox-commit 4867] r9536 - in code/branches/testing/src: libraries/core libraries/core/command libraries/util libraries/util/output orxonox/overlays

landauf at orxonox.net landauf at orxonox.net
Mon Mar 4 22:47:26 CET 2013


Author: landauf
Date: 2013-03-04 22:47:26 +0100 (Mon, 04 Mar 2013)
New Revision: 9536

Modified:
   code/branches/testing/src/libraries/core/Core.cc
   code/branches/testing/src/libraries/core/command/IOConsolePOSIX.cc
   code/branches/testing/src/libraries/core/command/IOConsoleWindows.cc
   code/branches/testing/src/libraries/core/command/Shell.cc
   code/branches/testing/src/libraries/util/UtilPrereqs.h
   code/branches/testing/src/libraries/util/output/ConsoleWriter.cc
   code/branches/testing/src/libraries/util/output/ConsoleWriter.h
   code/branches/testing/src/libraries/util/output/LogWriter.cc
   code/branches/testing/src/libraries/util/output/LogWriter.h
   code/branches/testing/src/libraries/util/output/MemoryWriter.cc
   code/branches/testing/src/libraries/util/output/MemoryWriter.h
   code/branches/testing/src/libraries/util/output/OutputManager.cc
   code/branches/testing/src/libraries/util/output/OutputManager.h
   code/branches/testing/src/orxonox/overlays/InGameConsole.cc
Log:
small refactoring: un-singletonized ConsoleWriter, LogWriter, and MemoryWriter - instead the instances are now kept by OutputManager

Modified: code/branches/testing/src/libraries/core/Core.cc
===================================================================
--- code/branches/testing/src/libraries/core/Core.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/core/Core.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -54,6 +54,7 @@
 #include "util/Output.h"
 #include "util/Exception.h"
 #include "util/output/LogWriter.h"
+#include "util/output/OutputManager.h"
 #include "util/Scope.h"
 #include "util/ScopedSingletonManager.h"
 #include "util/SignalHandler.h"
@@ -179,7 +180,7 @@
         this->setConfigValues();
 
         // Set the correct log path and rewrite the log file with the correct log levels
-        LogWriter::getInstance().setLogPath(PathConfig::getLogPathString());
+        OutputManager::getInstance().getLogWriter().setLogPath(PathConfig::getLogPathString());
 
 #if !defined(ORXONOX_PLATFORM_APPLE) && !defined(ORXONOX_USE_WINMAIN)
         // Create persistent IO console
@@ -257,24 +258,24 @@
     //! Function to collect the SetConfigValue-macro calls.
     void Core::setConfigValues()
     {
-        SetConfigValueExternal(LogWriter::getInstance().configurableMaxLevel_,
-                               LogWriter::getInstance().getConfigurableSectionName(),
-                               LogWriter::getInstance().getConfigurableMaxLevelName(),
-                               LogWriter::getInstance().configurableMaxLevel_)
+        SetConfigValueExternal(OutputManager::getInstance().getLogWriter().configurableMaxLevel_,
+                               OutputManager::getInstance().getLogWriter().getConfigurableSectionName(),
+                               OutputManager::getInstance().getLogWriter().getConfigurableMaxLevelName(),
+                               OutputManager::getInstance().getLogWriter().configurableMaxLevel_)
             .description("The maximum level of output shown in the log file")
-            .callback(static_cast<BaseWriter*>(&LogWriter::getInstance()), &BaseWriter::changedConfigurableLevel);
-        SetConfigValueExternal(LogWriter::getInstance().configurableAdditionalContextsMaxLevel_,
-                               LogWriter::getInstance().getConfigurableSectionName(),
-                               LogWriter::getInstance().getConfigurableAdditionalContextsMaxLevelName(),
-                               LogWriter::getInstance().configurableAdditionalContextsMaxLevel_)
+            .callback(static_cast<BaseWriter*>(&OutputManager::getInstance().getLogWriter()), &BaseWriter::changedConfigurableLevel);
+        SetConfigValueExternal(OutputManager::getInstance().getLogWriter().configurableAdditionalContextsMaxLevel_,
+                               OutputManager::getInstance().getLogWriter().getConfigurableSectionName(),
+                               OutputManager::getInstance().getLogWriter().getConfigurableAdditionalContextsMaxLevelName(),
+                               OutputManager::getInstance().getLogWriter().configurableAdditionalContextsMaxLevel_)
             .description("The maximum level of output shown in the log file for additional contexts")
-            .callback(static_cast<BaseWriter*>(&LogWriter::getInstance()), &BaseWriter::changedConfigurableAdditionalContextsLevel);
-        SetConfigValueExternal(LogWriter::getInstance().configurableAdditionalContexts_,
-                               LogWriter::getInstance().getConfigurableSectionName(),
-                               LogWriter::getInstance().getConfigurableAdditionalContextsName(),
-                               LogWriter::getInstance().configurableAdditionalContexts_)
+            .callback(static_cast<BaseWriter*>(&OutputManager::getInstance().getLogWriter()), &BaseWriter::changedConfigurableAdditionalContextsLevel);
+        SetConfigValueExternal(OutputManager::getInstance().getLogWriter().configurableAdditionalContexts_,
+                               OutputManager::getInstance().getLogWriter().getConfigurableSectionName(),
+                               OutputManager::getInstance().getLogWriter().getConfigurableAdditionalContextsName(),
+                               OutputManager::getInstance().getLogWriter().configurableAdditionalContexts_)
             .description("Additional output contexts shown in the log file")
-            .callback(static_cast<BaseWriter*>(&LogWriter::getInstance()), &BaseWriter::changedConfigurableAdditionalContexts);
+            .callback(static_cast<BaseWriter*>(&OutputManager::getInstance().getLogWriter()), &BaseWriter::changedConfigurableAdditionalContexts);
 
         SetConfigValue(bDevMode_, PathConfig::buildDirectoryRun())
             .description("Developer mode. If not set, hides some things from the user to not confuse him.")

Modified: code/branches/testing/src/libraries/core/command/IOConsolePOSIX.cc
===================================================================
--- code/branches/testing/src/libraries/core/command/IOConsolePOSIX.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/core/command/IOConsolePOSIX.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -37,6 +37,7 @@
 #include "util/Clock.h"
 #include "util/Math.h"
 #include "util/output/ConsoleWriter.h"
+#include "util/output/OutputManager.h"
 #include "core/Game.h"
 #include "core/input/InputBuffer.h"
 
@@ -74,7 +75,7 @@
         this->lastTerminalHeight_ = this->terminalHeight_;
 
         // Disable standard std::cout logging
-        ConsoleWriter::getInstance().disable();
+        OutputManager::getInstance().getConsoleWriter().disable();
         // Redirect std::cout to an ostringstream
         // (Other part is in the initialiser list)
         std::cout.rdbuf(this->origCout_.rdbuf());
@@ -102,7 +103,7 @@
         // Restore this->cout_ redirection
         std::cout.rdbuf(this->cout_.rdbuf());
         // Enable standard std::cout logging again
-        ConsoleWriter::getInstance().enable();
+        OutputManager::getInstance().getConsoleWriter().enable();
     }
 
     void IOConsole::preUpdate(const Clock& time)

Modified: code/branches/testing/src/libraries/core/command/IOConsoleWindows.cc
===================================================================
--- code/branches/testing/src/libraries/core/command/IOConsoleWindows.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/core/command/IOConsoleWindows.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -34,6 +34,7 @@
 #include "util/Clock.h"
 #include "util/Math.h"
 #include "util/output/ConsoleWriter.h"
+#include "util/output/OutputManager.h"
 #include "core/Game.h"
 #include "core/input/InputBuffer.h"
 
@@ -52,7 +53,7 @@
         , lastOutputLineHeight_(0)
     {
         // Disable standard this->cout_ logging
-        ConsoleWriter::getInstance().disable();
+        OutputManager::getInstance().getConsoleWriter().disable();
         // Redirect std::cout to an ostringstream
         // (Other part is in the initialiser list)
         std::cout.rdbuf(this->origCout_.rdbuf());
@@ -108,7 +109,7 @@
         // Restore this->cout_ redirection
         std::cout.rdbuf(this->cout_.rdbuf());
         // Enable standard this->cout_ logging again
-        ConsoleWriter::getInstance().enable();
+        OutputManager::getInstance().getConsoleWriter().enable();
 
         resetTerminalMode();
         this->shell_->destroy();

Modified: code/branches/testing/src/libraries/core/command/Shell.cc
===================================================================
--- code/branches/testing/src/libraries/core/command/Shell.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/core/command/Shell.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -87,7 +87,7 @@
         this->setConfigValues();
 
         // Get the previous output and add it to the Shell
-        MemoryWriter::getInstance().resendOutput(this);
+        OutputManager::getInstance().getMemoryWriter().resendOutput(this);
     }
 
     /**

Modified: code/branches/testing/src/libraries/util/UtilPrereqs.h
===================================================================
--- code/branches/testing/src/libraries/util/UtilPrereqs.h	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/UtilPrereqs.h	2013-03-04 21:47:26 UTC (rev 9536)
@@ -84,9 +84,13 @@
 namespace orxonox
 {
     class AdditionalContextListener;
+    class BaseWriter;
     class Clock;
+    class ConsoleWriter;
     class Exception;
     class ExprParser;
+    class LogWriter;
+    class MemoryWriter;
     class MultiType;
     class OutputListener;
     class OutputManager;
@@ -101,6 +105,7 @@
     class SignalHandler;
     template <class T>
     class Singleton;
+    class SubcontextOutputListener;
     class SubString;
 }
 

Modified: code/branches/testing/src/libraries/util/output/ConsoleWriter.cc
===================================================================
--- code/branches/testing/src/libraries/util/output/ConsoleWriter.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/ConsoleWriter.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -65,15 +65,6 @@
     }
 
     /**
-        @brief Returns the only existing instance of this class.
-    */
-    /*static*/ ConsoleWriter& ConsoleWriter::getInstance()
-    {
-        static ConsoleWriter instance;
-        return instance;
-    }
-
-    /**
         @brief Inherited function from BaseWriter, writes output to the console using std::cout.
     */
     void ConsoleWriter::printLine(const std::string& line, OutputLevel)

Modified: code/branches/testing/src/libraries/util/output/ConsoleWriter.h
===================================================================
--- code/branches/testing/src/libraries/util/output/ConsoleWriter.h	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/ConsoleWriter.h	2013-03-04 21:47:26 UTC (rev 9536)
@@ -53,8 +53,6 @@
             ConsoleWriter(const ConsoleWriter&);
             virtual ~ConsoleWriter();
 
-            static ConsoleWriter& getInstance();
-
             void enable();
             void disable();
 

Modified: code/branches/testing/src/libraries/util/output/LogWriter.cc
===================================================================
--- code/branches/testing/src/libraries/util/output/LogWriter.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/LogWriter.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -75,15 +75,6 @@
     }
 
     /**
-        @brief Returns the only existing instance of this class.
-    */
-    /*static*/ LogWriter& LogWriter::getInstance()
-    {
-        static LogWriter instance;
-        return instance;
-    }
-
-    /**
         @brief Opens the log-file in order to write output to it.
     */
     void LogWriter::openFile()
@@ -132,7 +123,7 @@
         this->openFile();
 
         // request old output from MemoryWriter
-        MemoryWriter::getInstance().resendOutput(this);
+        OutputManager::getInstance().getMemoryWriter().resendOutput(this);
     }
 
     /**

Modified: code/branches/testing/src/libraries/util/output/LogWriter.h
===================================================================
--- code/branches/testing/src/libraries/util/output/LogWriter.h	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/LogWriter.h	2013-03-04 21:47:26 UTC (rev 9536)
@@ -60,8 +60,6 @@
             LogWriter(const LogWriter&);
             virtual ~LogWriter();
 
-            static LogWriter& getInstance();
-
             void setLogPath(const std::string& path);
 
         protected:

Modified: code/branches/testing/src/libraries/util/output/MemoryWriter.cc
===================================================================
--- code/branches/testing/src/libraries/util/output/MemoryWriter.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/MemoryWriter.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -52,15 +52,6 @@
     }
 
     /**
-        @brief Returns the only existing instance of this singleton class.
-    */
-    /*static*/ MemoryWriter& MemoryWriter::getInstance()
-    {
-        static MemoryWriter instance;
-        return instance;
-    }
-
-    /**
         @brief Implementation of the output() function inherited from OutputListener, stores the received output in memory.
     */
     void MemoryWriter::output(OutputLevel level, const OutputContextContainer& context, const std::vector<std::string>& lines)

Modified: code/branches/testing/src/libraries/util/output/MemoryWriter.h
===================================================================
--- code/branches/testing/src/libraries/util/output/MemoryWriter.h	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/MemoryWriter.h	2013-03-04 21:47:26 UTC (rev 9536)
@@ -70,8 +70,6 @@
             MemoryWriter(const MemoryWriter&);
             virtual ~MemoryWriter();
 
-            static MemoryWriter& getInstance();
-
             void resendOutput(OutputListener* listener) const;
             void disable();
 

Modified: code/branches/testing/src/libraries/util/output/OutputManager.cc
===================================================================
--- code/branches/testing/src/libraries/util/output/OutputManager.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/OutputManager.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -87,14 +87,44 @@
     {
         static OutputManager& instance = OutputManager::getInstance();
 
-        static MemoryWriter& memoryWriterInstance = MemoryWriter::getInstance(); (void)memoryWriterInstance;
-        static ConsoleWriter& consoleWriterInstance = ConsoleWriter::getInstance(); (void)consoleWriterInstance;
-        static LogWriter& logWriterInstance = LogWriter::getInstance(); (void)logWriterInstance;
+        static MemoryWriter& memoryWriterInstance = OutputManager::getInstance().getMemoryWriter(); (void)memoryWriterInstance;
+        static ConsoleWriter& consoleWriterInstance = OutputManager::getInstance().getConsoleWriter(); (void)consoleWriterInstance;
+        static LogWriter& logWriterInstance = OutputManager::getInstance().getLogWriter(); (void)logWriterInstance;
 
         return instance;
     }
 
     /**
+     * @brief Returns the main instance of MemoryWriter which is managed by the OutputManager singleton.
+     * @note If OutputManager is ever un-singletonized, this instance must not remain static.
+     */
+    MemoryWriter& OutputManager::getMemoryWriter()
+    {
+        static MemoryWriter instance;
+        return instance;
+    }
+
+    /**
+     * @brief Returns the main instance of ConsoleWriter which is managed by the OutputManager singleton.
+     * @note If OutputManager is ever un-singletonized, this instance must not remain static.
+     */
+    ConsoleWriter& OutputManager::getConsoleWriter()
+    {
+        static ConsoleWriter instance;
+        return instance;
+    }
+
+    /**
+     * @brief Returns the main instance of LogWriter which is managed by the OutputManager singleton.
+     * @note If OutputManager is ever un-singletonized, this instance must not remain static.
+     */
+    LogWriter& OutputManager::getLogWriter()
+    {
+        static LogWriter instance;
+        return instance;
+    }
+
+    /**
         @brief Sends an output message to all output listeners.
         @param level The level of the message
         @param context The context of the message

Modified: code/branches/testing/src/libraries/util/output/OutputManager.h
===================================================================
--- code/branches/testing/src/libraries/util/output/OutputManager.h	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/libraries/util/output/OutputManager.h	2013-03-04 21:47:26 UTC (rev 9536)
@@ -71,6 +71,10 @@
             static OutputManager& getInstance();
             static OutputManager& getInstanceAndCreateListeners();
 
+            MemoryWriter& getMemoryWriter();
+            ConsoleWriter& getConsoleWriter();
+            LogWriter& getLogWriter();
+
             void pushMessage(OutputLevel level, const OutputContextContainer& context, const std::string& message);
 
             virtual void registerListener(OutputListener* listener);

Modified: code/branches/testing/src/orxonox/overlays/InGameConsole.cc
===================================================================
--- code/branches/testing/src/orxonox/overlays/InGameConsole.cc	2013-03-04 21:24:30 UTC (rev 9535)
+++ code/branches/testing/src/orxonox/overlays/InGameConsole.cc	2013-03-04 21:47:26 UTC (rev 9536)
@@ -46,6 +46,7 @@
 #include "util/DisplayStringConversions.h"
 #include "util/ScopedSingletonManager.h"
 #include "util/output/MemoryWriter.h"
+#include "util/output/OutputManager.h"
 #include "core/CoreIncludes.h"
 #include "core/ConfigValueIncludes.h"
 #include "core/command/ConsoleCommand.h"
@@ -94,7 +95,7 @@
 
         // Output buffering is not anymore needed. Not the best solution to do
         // this here, but there isn't much of another way.
-        MemoryWriter::getInstance().disable();
+        OutputManager::getInstance().getMemoryWriter().disable();
     }
 
     /**




More information about the Orxonox-commit mailing list