Compare commits
No commits in common. "ea71de96b55cc7bceb80a7a7b85312b1f8272953" and "7923e894e298dd74c3ea8e73505e8275daecb72c" have entirely different histories.
ea71de96b5
...
7923e894e2
|
@ -1,57 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Basic logging class
|
|
||||||
*
|
|
||||||
* Defines helper functions for logging facility. Configured in Application::init()
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class Log
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
enum LogLevel
|
|
||||||
{
|
|
||||||
FATAL,
|
|
||||||
ERROR,
|
|
||||||
WARN,
|
|
||||||
INFO,
|
|
||||||
DEBUG,
|
|
||||||
};
|
|
||||||
|
|
||||||
LogLevel level = WARN; ///< Default logging level
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prints message to stdout
|
|
||||||
*
|
|
||||||
* TODO: write to configurable stream, be it stdout, stderr or even a file
|
|
||||||
*
|
|
||||||
* @param level the message level
|
|
||||||
* @param fmt the message format
|
|
||||||
* @param ... variable parameters
|
|
||||||
*/
|
|
||||||
void log(LogLevel level, const std::string &fmt, ...);
|
|
||||||
|
|
||||||
private:
|
|
||||||
inline std::string _getLabel(LogLevel level)
|
|
||||||
{
|
|
||||||
switch (level)
|
|
||||||
{
|
|
||||||
case DEBUG: return "DEBUG";
|
|
||||||
case INFO: return "INFO ";
|
|
||||||
case WARN: return "WARN ";
|
|
||||||
case ERROR: return "ERROR";
|
|
||||||
case FATAL: return "FATAL";
|
|
||||||
default: return "UNK ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
extern Log LOG; /// Global variable :(
|
|
||||||
|
|
||||||
#define INFO(fmt, ...) LOG.log(Log::INFO, fmt, ##__VA_ARGS__)
|
|
||||||
#define WARN(fmt, ...) LOG.log(Log::WARN, fmt, ##__VA_ARGS__)
|
|
||||||
#define ERROR(fmt, ...) LOG.log(Log::ERROR, fmt, ##__VA_ARGS__)
|
|
||||||
#define FATAL(fmt, ...) LOG.log(Log::FATAL, fmt, ##__VA_ARGS__)
|
|
||||||
#define DEBUG(fmt, ...) LOG.log(Log::DEBUG, fmt, ##__VA_ARGS__)
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include "application/application.h"
|
#include "application/application.h"
|
||||||
#include "application/log.h"
|
|
||||||
#include "core/gameevent.h"
|
#include "core/gameevent.h"
|
||||||
#include "core/editor.h"
|
#include "core/editor.h"
|
||||||
|
|
||||||
|
@ -10,13 +9,8 @@
|
||||||
|
|
||||||
#include "classicmode/classicfactory.h"
|
#include "classicmode/classicfactory.h"
|
||||||
|
|
||||||
Log LOG;
|
|
||||||
|
|
||||||
bool Application::init()
|
bool Application::init()
|
||||||
{
|
{
|
||||||
LOG.level = Log::DEBUG;
|
|
||||||
DEBUG("Initializing Application");
|
|
||||||
|
|
||||||
if (!_core_factory)
|
if (!_core_factory)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -54,8 +48,6 @@ void Application::update(const kku::microsec& dt)
|
||||||
|
|
||||||
void Application::pushState(GUIState::Tag new_state)
|
void Application::pushState(GUIState::Tag new_state)
|
||||||
{
|
{
|
||||||
DEBUG("Pushing state %d", new_state);
|
|
||||||
|
|
||||||
if (!_state_stack.empty())
|
if (!_state_stack.empty())
|
||||||
_state_stack.back()->leave();
|
_state_stack.back()->leave();
|
||||||
|
|
||||||
|
@ -65,7 +57,6 @@ void Application::pushState(GUIState::Tag new_state)
|
||||||
|
|
||||||
void Application::popState()
|
void Application::popState()
|
||||||
{
|
{
|
||||||
DEBUG("Popping state");
|
|
||||||
_state_stack.back()->leave();
|
_state_stack.back()->leave();
|
||||||
_state_stack.pop_back();
|
_state_stack.pop_back();
|
||||||
_state_stack.back()->enter();
|
_state_stack.back()->enter();
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
#include <cstdarg>
|
|
||||||
#include <iostream>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "application/log.h"
|
|
||||||
|
|
||||||
void Log::log(LogLevel level, const std::string &fmt, ...) {
|
|
||||||
if (level > this->level)
|
|
||||||
return;
|
|
||||||
|
|
||||||
va_list args;
|
|
||||||
|
|
||||||
// First va_start: count how many characters are needed for formatting
|
|
||||||
va_start(args, fmt);
|
|
||||||
size_t len = std::vsnprintf(NULL, 0, fmt.c_str(), args);
|
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
std::vector<char> buf(len + 1);
|
|
||||||
|
|
||||||
// Second va_start: actually write formatted message to buffer
|
|
||||||
va_start(args, fmt);
|
|
||||||
std::vsnprintf(&buf[0], len + 1, fmt.c_str(), args);
|
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
std::cout << this->_getLabel(level) << " " << &buf[0] << std::endl;
|
|
||||||
}
|
|
Loading…
Reference in New Issue