Explorar o código

Adding a proper logging class

Panagiotis Christopoulos Charitos %!s(int64=15) %!d(string=hai) anos
pai
achega
0930cdbaea
Modificáronse 2 ficheiros con 78 adicións e 0 borrados
  1. 24 0
      src/Core/Logger.cpp
  2. 54 0
      src/Core/Logger.h

+ 24 - 0
src/Core/Logger.cpp

@@ -0,0 +1,24 @@
+#include "Logger.h"
+#include <cstdio>
+
+
+Logger* Logger::instance = NULL;
+
+
+//======================================================================================================================
+// operator<< [const char*]                                                                                            =
+//======================================================================================================================
+Logger& Logger::operator<<(const char* val)
+{
+	printf("Adding %s\n", val);
+	return *this;
+}
+
+//======================================================================================================================
+// operator<< [Logger& (*funcPtr)(Logger&)]                                                                            =
+//======================================================================================================================
+Logger& Logger::operator<<(Logger& (*funcPtr)(Logger&))
+{
+	printf("Got some func\n");
+	return *this;
+}

+ 54 - 0
src/Core/Logger.h

@@ -0,0 +1,54 @@
+#ifndef LOGGER_H
+#define LOGGER_H
+
+#include <boost/array.hpp>
+
+
+/// The logger singleton class
+class Logger
+{
+	public:
+		static Logger& getInstance();
+
+		/*Logger& operator<<(const bool& val);
+		Logger& operator<<(const short& val);
+		Logger& operator<<(const unsigned short& val);
+		Logger& operator<<(const int& val);
+		Logger& operator<<(const unsigned int& val);
+		Logger& operator<<(const long& val);
+		Logger& operator<<(const unsigned long& val);
+		Logger& operator<<(const float& val);
+		Logger& operator<<(const double& val);
+		Logger& operator<<(const long double& val);
+		Logger& operator<<(const void* val);*/
+		Logger& operator<<(const char* val);
+
+		Logger& operator<<(Logger& (*funcPtr)(Logger&));
+
+
+	private:
+		static Logger* instance;
+		static const int STREAM_SIZE = 512;
+		boost::array<char, STREAM_SIZE> stream;
+
+		Logger() {}
+		Logger(const Logger&) {}
+		void operator=(const Logger&) {}
+};
+
+
+inline Logger& Logger::getInstance()
+{
+	if(instance == NULL)
+	{
+		instance = new Logger();
+	}
+	return *instance;
+}
+
+
+/// @todo
+inline Logger& endl(Logger& in) {}
+
+
+#endif