Main Page   File List   File Members  

mem.h

Go to the documentation of this file.
00001 
00010 #ifndef _MEM_H_
00011 #define _MEM_H_
00012 
00013 #include <gtk/gtk.h>
00014 
00015 
00016 extern guint _alloc_cnt, _free_cnt, _null_free_cnt;
00017 
00018 /*>>> macros                                                                 */
00019 #ifdef MEMPROOF
00020 #  ifdef MEMSTAT
00021 #    define _XMEMSTAT(_func)  (printf(#_func": %s::%d\n", __FILE__, __LINE__))
00022 #  else
00023 #    define _XMEMSTAT(_func)  
00024 #  endif
00025 
00026 #  define _XNEW(_type, _cnt)                                                  \
00027           ({ _alloc_cnt++; _XMEMSTAT(_xmem); g_new(_type, _cnt); })
00028 #  define _XNEW0(_type, _cnt)                                                 \
00029           ({ _alloc_cnt++; _XMEMSTAT(_xmem0); g_new0(_type, _cnt); })
00030 #  define _XSTRDUP(_str)                                                      \
00031           ({ _alloc_cnt++; _XMEMSTAT(_xstrdup); g_strdup(_str); })
00032 #  define _XMEMDUP(_ptr, _size)                                               \
00033           ({ _alloc_cnt++; _XMEMSTAT(_xmemdup); g_memdup(_ptr, _size); })
00034 #  define _XFREE(_ptr)                                                        \
00035    ({                                                                         \
00036      _ptr == NULL?(_XMEMSTAT(_xfree::null),_null_free_cnt++):                 \
00037                   (_XMEMSTAT(_xfree::notnull),_free_cnt++,g_free(_ptr));      \
00038    })
00039 
00040 #else
00041 #define   _XNEW(_type, _cnt)   (g_new(_type, _cnt))
00042 #define   _XNEW0(_type, _cnt)  (g_new0(_type, _cnt))
00043 #define   _XSTRDUP(_str)       (g_strdup(_str))
00044 #define   _XMEMDUP(_ptr, _size)(g_memdup(_ptr, _size))
00045 #define   _XFREE(_ptr)         (g_free(_ptr))
00046 #endif
00047 
00048 #endif /* _MEM_H_ */

Generated on Tue Aug 6 13:21:19 2002 for lafontaine by doxygen1.2.15