Files
tech5/source/shared/idlib/lib_print.h
T
2026-08-08 13:54:26 -07:00

69 lines
2.1 KiB
C++

#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