Source file: /~heha/hs/gputils64-210929.zip/libgputils/gpmessage.h

/* 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;}
Detected encoding: UTF-80