Atlas Game Manager
A game manager for f95 and dlsite written in c++
Loading...
Searching...
No Matches
ConsoleWriter.hpp
Go to the documentation of this file.
1//
2// Created by kj16609 on 10/31/23.
3//
4
5#pragma once
6
7#include <QObject>
8
9#pragma GCC diagnostic ignored "-Weffc++"
10#pragma GCC diagnostic ignored "-Wswitch-default"
11#pragma GCC diagnostic ignored "-Wsign-conversion"
12#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
13#ifndef __clang__
14#pragma GCC diagnostic ignored "-Wsuggest-final-types"
15#pragma GCC diagnostic ignored "-Wsuggest-final-methods"
16#endif
17
18#include <spdlog/sinks/base_sink.h>
19
20#include "spdlog/spdlog.h"
21
22#pragma GCC diagnostic pop
23
24#include <QDebug>
25
26#include <queue>
27
28namespace atlas::logging
29{
30
31 class ConsoleWriter : public QObject
32 {
33 Q_OBJECT
34 std::vector< QString > messages {};
35
36 public:
37
38 void write( const QString& msg )
39 {
40 messages.emplace_back( msg );
41 emit dataWritten( msg );
42 }
43
45 {
46 for ( const auto& msg : messages ) emit dataWritten( msg );
47 }
48
49 signals:
50 void dataWritten( const QString& data );
51 };
52
54
55 template < typename Mutex >
56 class ConsoleSink : public spdlog::sinks::base_sink< Mutex >
57 {
58 public:
59
60 ConsoleSink() : spdlog::sinks::base_sink< Mutex >() {}
61
62 protected:
63
64 void sink_it_( const spdlog::details::log_msg& msg ) override
65 {
66 spdlog::memory_buf_t formatted;
67 spdlog::sinks::base_sink< Mutex >::formatter_->format( msg, formatted );
68 getConsoleWriter()->write( QString::fromStdString( fmt::to_string( formatted ) ) );
69 }
70
71 void flush_() override { return; }
72 };
73
76
77} // namespace atlas::logging
void sink_it_(const spdlog::details::log_msg &msg) override
Definition ConsoleWriter.hpp:64
void flush_() override
Definition ConsoleWriter.hpp:71
ConsoleSink()
Definition ConsoleWriter.hpp:60
Definition ConsoleWriter.hpp:32
void dataWritten(const QString &data)
void reprintMessages()
Definition ConsoleWriter.hpp:44
std::vector< QString > messages
Definition ConsoleWriter.hpp:34
void write(const QString &msg)
Definition ConsoleWriter.hpp:38
Definition logging.cpp:37
ConsoleSink< spdlog::details::null_mutex > ConsoleSinkST
Definition ConsoleWriter.hpp:75
ConsoleWriter * getConsoleWriter()
Definition ConsoleWriter.cpp:14
ConsoleSink< std::mutex > ConsoleSinkMT
Definition ConsoleWriter.hpp:74