[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