57 lines
No EOL
1.2 KiB
C++
57 lines
No EOL
1.2 KiB
C++
|
|
#include "Logging.hpp"
|
|
|
|
#include <cstdio>
|
|
|
|
namespace tp {
|
|
|
|
Logger* gLogger = nullptr;
|
|
|
|
ualni Logger::Report::getLineCount() const {
|
|
return (ualni)(mLineOffsets.size() - 1);
|
|
}
|
|
|
|
String Logger::Report::getString() const {
|
|
return mData;
|
|
}
|
|
|
|
void Logger::Report::calcLineCount() {
|
|
mData.calcLineOffsets(mLineOffsets);
|
|
}
|
|
|
|
Logger::Report::Report() {
|
|
mData = " - ";
|
|
}
|
|
|
|
Logger::Report::Report(const String& text) : mData(text) {
|
|
calcLineCount();
|
|
}
|
|
|
|
Logger::Report::Report(const String& text, Type type) : mType(type), mData(text) {
|
|
calcLineCount();
|
|
}
|
|
|
|
void Logger::write(const String& in, bool post, Report::Type type) {
|
|
mBuff.pushBack(Report(in, type));
|
|
mLineCount += mBuff.last()->data.getLineCount();
|
|
if (!mCursor) mCursor = mBuff.last();
|
|
if (post) printf("%s", in.read());
|
|
}
|
|
|
|
String Logger::read() {
|
|
if (!mCursor) return {};
|
|
const Report& out = mCursor->data;
|
|
mCursor = mCursor->next;
|
|
return out.getString();
|
|
}
|
|
|
|
void Logger::initializeGlobal() {
|
|
DEBUG_ASSERT(!gLogger)
|
|
gLogger = new Logger();
|
|
}
|
|
|
|
void Logger::deinitializeGlobal() {
|
|
DEBUG_ASSERT(gLogger)
|
|
delete gLogger;
|
|
}
|
|
} |