17 #ifndef INC_KY_Kernel_Log_H
18 #define INC_KY_Kernel_Log_H
67 LogMessage_Text = 0x00000,
68 LogMessage_Warning = 0x20000,
69 LogMessage_Error = 0x30000,
70 LogMessage_Assert = 0x40000,
72 LogMessage_Report = 0x50000,
74 LogMessage_Mask = 0xF0000
88 LogChannel_General = 0x1000,
89 LogChannel_Debug = 0x2000,
90 LogChannel_Render = 0x3000,
92 LogChannel_Script = 0x4000,
93 LogChannel_Parse = 0x5000,
94 LogChannel_Action = 0x6000,
95 LogChannel_Memory = 0x7000,
96 LogChannel_Performance = 0x8000,
97 LogChannel_MonitoringSystem = 0x9000,
99 LogChannel_Mask = 0xF000,
110 LogMessageId(
int id = 0) : Id(id) { }
111 LogMessageId(
const LogMessageId& other) : Id(other.Id) { }
113 LogMessageId& operator = (
int id) { Id = id;
return *
this; }
114 LogMessageId& operator = (LogMessageId& other) { Id = other.Id;
return *
this; }
116 operator int ()
const {
return Id; }
118 LogMessageType GetMessageType()
const {
return (LogMessageType)(Id & LogMessage_Mask); }
119 LogChannel GetChannel()
const {
return (LogChannel)(Id & LogChannel_Mask); }
128 Log_Message = LogChannel_General | LogMessage_Text,
129 Log_Warning = LogChannel_General | LogMessage_Warning,
130 Log_Error = LogChannel_General | LogMessage_Error,
133 Log_DebugMessage = LogChannel_Debug | LogMessage_Text,
134 Log_DebugWarning = LogChannel_Debug | LogMessage_Warning,
135 Log_DebugError = LogChannel_Debug | LogMessage_Error,
136 Log_DebugAssert = LogChannel_Debug | LogMessage_Assert
142 #define KY_LOG_VAARG_ATTRIBUTE(a,b) __attribute__((format (printf, a, b)))
144 #define KY_LOG_VAARG_ATTRIBUTE(a,b)
151 static const char* GetFilename(
const char* file)
153 const char* separatorPos = SFstrrchr(file, Kaim::FilePath_Separator);
154 return (separatorPos ? separatorPos+1 : file);
157 #define KY_GET_COMPILED_FILENAME (Kaim::LogHelper::GetFilename(__FILE__))
181 virtual void LogMessageVarg(LogMessageId messageId,
const char* fmt, va_list argList);
184 void LogMessageById(LogMessageId messageId,
185 const char* fmt, ...) KY_LOG_VAARG_ATTRIBUTE(3,4);
188 enum { MaxLogBufferMessageSize = 2048 };
193 static void FormatLog(
char* buffer,
unsigned bufferSize, LogMessageId messageId,
194 const char* fmt, va_list argList);
198 static void DefaultLogMessageVarg(LogMessageId messageId,
199 const char* fmt, va_list argList);
202 inline void LogMessage(
const char* fmt, ...) KY_LOG_VAARG_ATTRIBUTE(2,3)
204 va_list argList; va_start(argList, fmt);
205 LogMessageVarg(Log_Message, fmt, argList);
208 inline void LogError(
const char* fmt, ...) KY_LOG_VAARG_ATTRIBUTE(2,3)
210 va_list argList; va_start(argList, fmt);
211 LogMessageVarg(Log_Error, fmt, argList);
214 inline void LogWarning(
const char* fmt, ...) KY_LOG_VAARG_ATTRIBUTE(2,3)
216 va_list argList; va_start(argList, fmt);
217 LogMessageVarg(Log_Warning, fmt, argList);
228 static void SetGlobalLog(Log *log);
229 static Log* GetGlobalLog();
235 static Log* GetDefaultDebugLog();
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17