mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Renamed to EGlobalContext_t and used globally for all context types combined into one (required for rcon messages for example, as we do native and script messages, while also retaining colors).
124 lines
3.8 KiB
C++
124 lines
3.8 KiB
C++
//===== Copyright (c) Valve Corporation, All rights reserved. ========//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//====================================================================//
|
|
#ifndef DBG_H
|
|
#define DBG_H
|
|
#define Assert assert
|
|
#define AssertDbg assert
|
|
#include "tier0/dbgflag.h"
|
|
|
|
bool HushAsserts();
|
|
//-----------------------------------------------------------------------------
|
|
enum class EGlobalContext_t : int
|
|
{
|
|
GLOBAL_NONE = -4,
|
|
SCRIPT_SERVER,
|
|
SCRIPT_CLIENT,
|
|
SCRIPT_UI,
|
|
NATIVE_SERVER,
|
|
NATIVE_CLIENT,
|
|
NATIVE_UI,
|
|
NATIVE_ENGINE,
|
|
NATIVE_FS,
|
|
NATIVE_RTECH,
|
|
NATIVE_MS,
|
|
NETCON_S,
|
|
COMMON_C,
|
|
WARNING_C,
|
|
ERROR_C,
|
|
NONE
|
|
};
|
|
|
|
enum class eDLL_T : int
|
|
{
|
|
SERVER = 0, // Game DLL
|
|
CLIENT = 1, // Game DLL
|
|
UI = 2, // Game DLL
|
|
ENGINE = 3, // Wrapper
|
|
FS = 4, // File System
|
|
RTECH = 5, // RTech API
|
|
MS = 6, // Material System
|
|
NETCON = 7, // Net Console
|
|
COMMON = 8
|
|
};
|
|
|
|
const string sDLL_T[9] =
|
|
{
|
|
"Native(S):",
|
|
"Native(C):",
|
|
"Native(U):",
|
|
"Native(E):",
|
|
"Native(F):",
|
|
"Native(R):",
|
|
"Native(M):",
|
|
"Netcon(X):",
|
|
""
|
|
};
|
|
|
|
const static string sANSI_DLL_T[9] =
|
|
{
|
|
"\033[38;2;059;120;218mNative(S):",
|
|
"\033[38;2;118;118;118mNative(C):",
|
|
"\033[38;2;151;090;118mNative(U):",
|
|
"\033[38;2;204;204;204mNative(E):",
|
|
"\033[38;2;097;214;214mNative(F):",
|
|
"\033[38;2;092;181;089mNative(R):",
|
|
"\033[38;2;192;105;173mNative(M):",
|
|
"\033[38;2;204;204;204mNetcon(X):",
|
|
"\033[38;2;255;204;153m"
|
|
};
|
|
extern std::mutex s_LogMutex;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Legacy Logging System
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
// These functions do not return.
|
|
PLATFORM_INTERFACE void NetMsg(EGlobalContext_t context, const char* fmt, ...) FMTFUNCTION(2, 3);
|
|
PLATFORM_INTERFACE void DevMsg(eDLL_T context, const char* fmt, ...) FMTFUNCTION(2, 3);
|
|
PLATFORM_INTERFACE void Warning(eDLL_T context, const char* fmt, ...) FMTFUNCTION(1, 2);
|
|
PLATFORM_INTERFACE void Error(eDLL_T context, const char* fmt, ...) FMTFUNCTION(1, 2);
|
|
|
|
// You can use this macro like a runtime assert macro.
|
|
// If the condition fails, then Error is called with the message. This macro is called
|
|
// like AssertMsg, where msg must be enclosed in parenthesis:
|
|
//
|
|
// ErrorIfNot( bCondition, ("a b c %d %d %d", 1, 2, 3) );
|
|
#define ErrorIfNot( condition, msg ) \
|
|
if ( (condition) ) \
|
|
; \
|
|
else \
|
|
{ \
|
|
Error msg; \
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Templates to assist in validating pointers:
|
|
|
|
// Have to use these stubs so we don't have to include windows.h here.
|
|
PLATFORM_INTERFACE void _AssertValidReadPtr(void* ptr, int count = 1);
|
|
PLATFORM_INTERFACE void _AssertValidWritePtr(void* ptr, int count = 1);
|
|
PLATFORM_INTERFACE void _AssertValidReadWritePtr(void* ptr, int count = 1);
|
|
PLATFORM_INTERFACE void _AssertValidStringPtr(const TCHAR* ptr, int maxchar);
|
|
|
|
#ifdef DBGFLAG_ASSERT
|
|
inline void AssertValidStringPtr(const TCHAR* ptr, int maxchar = 0xFFFFFF) { _AssertValidStringPtr(ptr, maxchar); }
|
|
template<class T> inline void AssertValidReadPtr(T* ptr, int count = 1) { _AssertValidReadPtr((void*)ptr, count); }
|
|
template<class T> inline void AssertValidWritePtr(T* ptr, int count = 1) { _AssertValidWritePtr((void*)ptr, count); }
|
|
template<class T> inline void AssertValidReadWritePtr(T* ptr, int count = 1) { _AssertValidReadWritePtr((void*)ptr, count); }
|
|
#define AssertValidThis() AssertValidReadWritePtr(this,sizeof(*this))
|
|
|
|
#else
|
|
|
|
inline void AssertValidStringPtr(const TCHAR* ptr, int maxchar = 0xFFFFFF) { }
|
|
template<class T> inline void AssertValidReadPtr(T* ptr, int count = 1) { }
|
|
template<class T> inline void AssertValidWritePtr(T* ptr, int count = 1) { }
|
|
template<class T> inline void AssertValidReadWritePtr(T* ptr, int count = 1) { }
|
|
#define AssertValidThis()
|
|
#endif
|
|
#endif /* DBG_H */
|