/* messaging functions
Copyright 2003-2005 Craig Franklin
*/
#pragma once
EXDATA bool gp_quiet;
extern bool gp_message_disable;
EXDATA bool gp_debug_disable;
typedef enum {
MSG_TYPE_ERROR,
MSG_TYPE_WARNING,
MSG_TYPE_MESSAGE,
MSG_TYPE_DEBUG,
}msg_type_t;
EXDATA struct num_t{
int errors,warnings,messages,debugs;
#ifdef __cplusplus
int& operator[](msg_type_t i) {return ((int*)this)[i];}
#endif
}gp_num,_real_num;
CFUNC(void) gp_Message(msg_type_t,const char*,...);
FUNC(void) gp_vMessage(msg_type_t,const char*,va_list);
#ifdef _MSC_VER
__forceinline void _cdecl gp_error(const char* Format, ...) {
va_list va;
va_start(va,Format);
gp_vMessage(MSG_TYPE_ERROR,Format,va);
va_end(va);
}
__forceinline void _cdecl gp_warning(const char* Format, ...) {
va_list va;
va_start(va,Format);
gp_vMessage(MSG_TYPE_WARNING,Format,va);
va_end(va);
}
__forceinline void _cdecl gp_message(const char* Format, ...) {
va_list va;
va_start(va,Format);
gp_vMessage(MSG_TYPE_MESSAGE,Format,va);
va_end(va);
}
__forceinline void _cdecl gp_debug(const char* Format, ...) {
va_list va;
va_start(va,Format);
gp_vMessage(MSG_TYPE_DEBUG,Format,va);
va_end(va);
}
#else
// MinGW unterstützt variadische Makros aber kein forceinline mit variabler Argumentliste
#define gp_error(f...) gp_Message(MSG_TYPE_ERROR,f)
#define gp_warning(f...) gp_Message(MSG_TYPE_WARNING,f)
#define gp_message(f...) gp_Message(MSG_TYPE_MESSAGE,f)
#define gp_debug(f...) gp_Message(MSG_TYPE_DEBUG,f)
#endif
__forceinline int gp_real_num_errors(void) {return _real_num.errors;}
__forceinline int gp_real_num_warnings(void) {return _real_num.warnings;}
__forceinline int gp_real_num_messages(void) {return _real_num.messages;}
Vorgefundene Kodierung: ANSI (CP1252) | 4
|
|