This commit is contained in:
1 1
2020-12-31 15:35:46 +03:00
commit cd5ffe60a5
161 changed files with 20185 additions and 0 deletions

View File

@ -0,0 +1,39 @@
#include "pch.h"
#include "debugconsole.h"
#ifdef UTT2_DEBUG
std::once_flag WinConsoleW::m_createonceflag;
std::unique_ptr<WinConsoleW> WinConsoleW::m_pInstance;
std::wofstream WinConsoleW::m_woutstream;
WinConsoleW::WinConsoleW()
{
if (::AllocConsole() == TRUE)
{
this->m_woutstream.open("CONOUT$", std::wofstream::out);
std::wcout.rdbuf(this->m_woutstream.rdbuf());
}
else
{
if (::AttachConsole(::GetCurrentProcessId()))
{
this->m_woutstream.open("CONOUT$", std::wofstream::out);
std::wcout.rdbuf(this->m_woutstream.rdbuf());
}
}
}
WinConsoleW& WinConsoleW::Console()
{
std::call_once(WinConsoleW::m_createonceflag, [] {
WinConsoleW::m_pInstance.reset(new WinConsoleW);
});
return *WinConsoleW::m_pInstance.get();
}
WinConsoleW::~WinConsoleW()
{
::FreeConsole();
}
#endif

View File

@ -0,0 +1,42 @@
#pragma once
#include <iostream>
#include <fstream>
#include <memory>
#include <mutex>
#include <windows.h>
#define UTT2_DEBUG
#ifdef UTT2_DEBUG
class WinConsoleW
{
private:
static std::wofstream m_woutstream;
WinConsoleW();
static std::once_flag m_createonceflag;
static std::unique_ptr<WinConsoleW> m_pInstance;
WinConsoleW(const WinConsoleW&) = delete;
WinConsoleW(WinConsoleW&&) = delete;
WinConsoleW& operator=(const WinConsoleW&) = delete;
WinConsoleW& operator=(WinConsoleW&&) = delete;
public:
~WinConsoleW();
static WinConsoleW& Console();
void print() {
std::wcout << std::endl;
}
template <typename T> void print(const T& t) {
std::wcout << t << std::endl;
}
template <typename First, typename... Rest> void print(const First& first, const Rest&... rest) {
std::wcout << first;
print(rest...); // recursive call using pack expansion syntax
}
};
#endif
#ifdef UTT2_DEBUG
#define WCWOUT WinConsoleW::Console().print
#else
#define WCWOUT //WinConsoleW::Console().print
#endif

View File

@ -0,0 +1,13 @@
// pch.h: это предварительно скомпилированный заголовочный файл.
// Перечисленные ниже файлы компилируются только один раз, что ускоряет последующие сборки.
// Это также влияет на работу IntelliSense, включая многие функции просмотра и завершения кода.
// Однако изменение любого из приведенных здесь файлов между операциями сборки приведет к повторной компиляции всех(!) этих файлов.
// Не добавляйте сюда файлы, которые планируете часто изменять, так как в этом случае выигрыша в производительности не будет.
#ifndef PCH_H
#define PCH_H
// Добавьте сюда заголовочные файлы для предварительной компиляции
#include "framework.h"
#endif //PCH_H