41 #include <gwenhywfar/misc.h>
68 if (numOr || leadingZero || j==1) {
130 k=(num>>((j-1)*4))&0xf;
132 if (numOr || leadingZero || j==1) {
137 numbuf[i]=k+
'0'+7+32;
166 for (k=0; k<i; k++) {
186 const char *fmt, ...) {
191 va_start(arguments, fmt);
209 if ((*fmt)>=
'0' && (*fmt)<=
'9') {
214 while ((*fmt)>=
'0' && (*fmt)<=
'9') {
228 p=va_arg(arguments,
int);
247 p=va_arg(arguments,
unsigned int);
261 p=va_arg(arguments,
unsigned int);
274 p=va_arg(arguments,
const char*);
310 #ifdef NO_VARIADIC_MACROS
311 void DBG_ERROR(
const char *dbg_logger,
const char *format, ...) {
313 char dbg_buffer[256];
314 va_start(args, format);
315 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
316 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
321 void DBG_WARN(
const char *dbg_logger,
const char *format, ...) {
323 char dbg_buffer[256];
324 va_start(args, format);
325 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
326 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
331 void DBG_NOTICE(
const char *dbg_logger,
const char *format, ...) {
334 char dbg_buffer[256];
335 va_start(args, format);
336 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
337 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
343 void DBG_INFO(
const char *dbg_logger,
const char *format, ...) {
346 char dbg_buffer[256];
347 va_start(args, format);
348 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
349 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
355 void DBG_DEBUG(
const char *dbg_logger,
const char *format, ...) {
356 # ifndef DISABLE_DEBUGLOG
359 char dbg_buffer[256];
360 va_start(args, format);
361 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
362 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
369 void DBG_VERBOUS(
const char *dbg_logger,
const char *format, ...) {
370 # ifndef DISABLE_DEBUGLOG
373 char dbg_buffer[256];
374 va_start(args, format);
375 vsnprintf(dbg_buffer,
sizeof(dbg_buffer)-1, format, args);
376 dbg_buffer[
sizeof(dbg_buffer)-1] = 0;
391 GWEN_MEMORY_DEBUG_ENTRY*
395 GWEN_MEMORY_DEBUG_ENTRY *e;
400 e->file=strdup(wFile);
423 o->name=strdup(name);
431 GWEN_MEMORY_DEBUG_ENTRY *e;
435 GWEN_MEMORY_DEBUG_ENTRY *next;
454 if (strcasecmp(o->name, name)==0)
473 GWEN_MEMORY_DEBUG_ENTRY *e;
483 GWEN_MemoryDebugEntryTypeCreate,
490 GWEN_MemoryDebugEntryTypeCreate,
503 GWEN_MEMORY_DEBUG_ENTRY *e;
511 "Object to be freed not found (%s at %s:%d)",
533 DBG_ERROR(0,
"Object \"%s\" (count=%ld)",
536 GWEN_MEMORY_DEBUG_ENTRY *e;
543 fprintf(stderr,
" ");
545 case GWEN_MemoryDebugEntryTypeCreate:
548 case GWEN_MemoryDebugEntryTypeAttach:
551 case GWEN_MemoryDebugEntryTypeFree:
555 s=
"<unknown action>";
558 DBG_ERROR(0,
" %s at %s:%d", s, e->file, e->line);
600 DBG_ERROR(0,
"Gwenhywfar Memory Debugger Statistics:");
601 DBG_ERROR(0,
"====================================== begin\n");
607 DBG_ERROR(0,
"====================================== end\n");
#define GWEN_MEMORY_DEBUG_MODE_DETAILED
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)
int 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)