/
redgpu
/
tech5
Обзор
Документация
Войти
/
redgpu
/
tech5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
source/shared/idlib/lib_print.h
68 строк
2 KB
Justin Marshall
First pass idLib conversion from hex rays4.
08 авг 2026, 23:54
08 авг 2026, 23:54
09a4cb9
Код
Авторство
О чём код?
#pragma once #include <cstdarg> #include <stdexcept> enum printSeverity_t { SEV_DEBUG = 0, SEV_PRINT = 1, SEV_WARNING = 2, SEV_ERROR = 3, SEV_FATAL = 4 }; class idPrintListener { public: idPrintListener(); virtual ~idPrintListener(); virtual void Print(const char* text) = 0; void RegisterPrintListener(); void UnRegisterPrintListener(); idPrintListener* next; bool wantColor; bool threadSafe; printSeverity_t minSeverity; }; class idRecoveredPrintException : public std::runtime_error { public: idRecoveredPrintException(const char* message, bool fatal) : std::runtime_error(message == nullptr ? "" : message), fatalError(fatal) {} bool IsFatal() const { return fatalError; } private: bool fatalError; }; // PC-side extension for the listener/context facilities added after the BFG // idLib interface. The six common Printf/Warning/Error entry points continue // to be supplied by the BFG baseline until the engine-wide Lib.h is replaced. class idLibPrint { public: using fatalErrorHandler_t = void (*)(const char*); static bool PushWarningInfo(const char* type, const char* name); static void PopWarningInfo(); static void RegisterFatalErrorHandler(fatalErrorHandler_t handler); static void Debugf(const char* format, ...); static void Printf(const char* format, ...); static void PrintfIf(bool condition, const char* format, ...); static void VPrintf(const char* format, va_list args); static void Warning(const char* format, ...); static void WarningIf(bool condition, const char* format, ...); [[noreturn]] static void Error(const char* format, ...); [[noreturn]] static void FatalError(const char* format, ...); static void Dispatch(printSeverity_t severity, const char* format, va_list args); static void RegisterPrintListener(idPrintListener* listener); static void UnRegisterPrintListener(idPrintListener* listener); }; #if INTPTR_MAX == INT32_MAX static_assert(sizeof(idPrintListener) == 16, "Recovered idPrintListener layout changed"); #endif