41 #include <gwenhywfar/misc.h> 69 if (numOr || leadingZero || j==1) {
132 k=(num>>((j-1)*4))&0xf;
134 if (numOr || leadingZero || j==1) {
139 numbuf[i]=k+
'0'+7+32;
168 for (k=0; k<i; k++) {
188 const char *
fmt, ...)
194 va_start(arguments,
fmt);
212 if ((*
fmt)>=
'0' && (*
fmt)<=
'9') {
217 while ((*
fmt)>=
'0' && (*
fmt)<=
'9') {
231 p=va_arg(arguments,
int);
250 p=va_arg(arguments,
unsigned int);
264 p=va_arg(arguments,
unsigned int);
277 p=va_arg(arguments,
const char *);
313 #ifdef NO_VARIADIC_MACROS 314 void DBG_ERROR(
const char *dbg_logger,
const char *format, ...)
317 char dbg_buffer[256];
318 va_start(args, format);
319 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
320 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
325 void DBG_WARN(
const char *dbg_logger,
const char *format, ...)
328 char dbg_buffer[256];
329 va_start(args, format);
330 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
331 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
336 void DBG_NOTICE(
const char *dbg_logger,
const char *format, ...)
340 char dbg_buffer[256];
341 va_start(args, format);
342 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
343 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
349 void DBG_INFO(
const char *dbg_logger,
const char *format, ...)
353 char dbg_buffer[256];
354 va_start(args, format);
355 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
356 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
362 void DBG_DEBUG(
const char *dbg_logger,
const char *format, ...)
364 # ifndef DISABLE_DEBUGLOG 367 char dbg_buffer[256];
368 va_start(args, format);
369 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
370 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
377 void DBG_VERBOUS(
const char *dbg_logger,
const char *format, ...)
379 # ifndef DISABLE_DEBUGLOG 382 char dbg_buffer[256];
383 va_start(args, format);
384 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
385 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
404 GWEN_MEMORY_DEBUG_ENTRY *e;
409 e->file=strdup(wFile);
434 o->name=strdup(name);
443 GWEN_MEMORY_DEBUG_ENTRY *e;
447 GWEN_MEMORY_DEBUG_ENTRY *next;
467 if (strcasecmp(o->name, name)==0)
487 GWEN_MEMORY_DEBUG_ENTRY *e;
497 GWEN_MemoryDebugEntryTypeCreate,
504 GWEN_MemoryDebugEntryTypeCreate,
518 GWEN_MEMORY_DEBUG_ENTRY *e;
526 "Object to be freed not found (%s at %s:%d)",
549 DBG_ERROR(0,
"Object \"%s\" (count=%ld)",
552 GWEN_MEMORY_DEBUG_ENTRY *e;
559 fprintf(stderr,
" ");
561 case GWEN_MemoryDebugEntryTypeCreate:
564 case GWEN_MemoryDebugEntryTypeAttach:
567 case GWEN_MemoryDebugEntryTypeFree:
570 case GWEN_MemoryDebugEntryTypeUnknown:
572 s=
"<unknown action>";
575 DBG_ERROR(0,
" %s at %s:%d", s, e->file, e->line);
620 DBG_ERROR(0,
"Gwenhywfar Memory Debugger Statistics:");
621 DBG_ERROR(0,
"====================================== begin\n");
627 DBG_ERROR(0,
"====================================== end\n");
#define GWEN_MEMORY_DEBUG_MODE_DETAILED
GWENHYWFAR_API const char * fmt
GWEN_MEMORY_DEBUG_OBJECT * GWEN_MemoryDebugObject_new(const char *name)
#define DBG_NOTICE(dbg_logger, format, args...)
#define GWEN_FREE_OBJECT(varname)
uint32_t GWEN_Debug_Snprintf(char *buffer, uint32_t size, const char *fmt,...)
#define DBG_VERBOUS(dbg_logger, format, args...)
static GWEN_MEMORY_DEBUG_OBJECT * gwen_debug__memobjects
#define DBG_WARN(dbg_logger, format, args...)
void GWEN_MemoryDebugEntry_free(GWEN_MEMORY_DEBUG_ENTRY *e)
void GWEN_MemoryDebug_CleanUp(void)
struct GWEN_MEMORY_DEBUG_OBJECT GWEN_MEMORY_DEBUG_OBJECT
void GWEN_MemoryDebug__DumpObject(GWEN_MEMORY_DEBUG_OBJECT *o, uint32_t mode)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_Logger_Log(const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s)
#define DBG_DEBUG(dbg_logger, format, args...)
#define GWEN_MEMORY_DEBUG_MODE_SHORT
void GWEN_MemoryDebug_Dump(uint32_t mode)
uint32_t GWEN_Debug_PrintDec(char *buffer, uint32_t size, uint32_t num, int leadingZero, uint32_t length)
#define DBG_ERROR(dbg_logger, format, args...)
#define DBG_INFO(dbg_logger, format, args...)
uint32_t GWEN_Debug_PrintHex(char *buffer, uint32_t size, uint32_t num, int leadingZero, int up, uint32_t length)
int GWEN_Logger_GetLevel(const char *logDomain)
#define GWEN_LIST_ADD(typ, sr, head)
GWEN_MEMORY_DEBUG_ENTRY * GWEN_MemoryDebugEntry_new(GWEN_MEMORY_DEBUG_ENTRY_TYPE t, const char *wFile, int wLine)
void GWEN_MemoryDebug_Increment(const char *name, const char *wFile, int wLine, int attach)
long int GWEN_MemoryDebug_GetObjectCount(const char *name)
void GWEN_MemoryDebug_DumpObject(const char *name, uint32_t mode)
void GWEN_MemoryDebugObject_free(GWEN_MEMORY_DEBUG_OBJECT *o)
GWEN_MEMORY_DEBUG_OBJECT * GWEN_MemoryDebug__FindObject(const char *name)
void GWEN_MemoryDebug_Decrement(const char *name, const char *wFile, int wLine)