xmlmemory.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /*
  2.  * xmlmemory.h: interface for the memory allocation debug.
  3.  *
  4.  * Daniel.Veillard@w3.org
  5.  */
  6. #ifndef _DEBUG_MEMORY_ALLOC_
  7. #define _DEBUG_MEMORY_ALLOC_
  8. #include <stdio.h>
  9. #include <libxml/xmlversion.h>
  10. /*
  11.  * DEBUG_MEMORY_LOCATION should be activated only done when debugging 
  12.  * libxml.
  13.  */
  14. /* #define DEBUG_MEMORY_LOCATION */
  15. #ifdef DEBUG
  16. #ifndef DEBUG_MEMORY
  17. #define DEBUG_MEMORY
  18. #endif
  19. #endif
  20. #ifdef DEBUG_MEMORY_LOCATION
  21. #define MEM_LIST /* keep a list of all the allocated memory blocks */
  22. #endif
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. /*
  27.  * The XML memory wrapper support 4 basic overloadable functions
  28.  */
  29. typedef void (*xmlFreeFunc)(void *);
  30. typedef void *(*xmlMallocFunc)(int);
  31. typedef void *(*xmlReallocFunc)(void *, int);
  32. typedef char *(*xmlStrdupFunc)(const char *);
  33. /*
  34.  * The 4 interfaces used for all memory handling within libxml
  35.  */
  36. extern xmlFreeFunc xmlFree;
  37. extern xmlMallocFunc xmlMalloc;
  38. extern xmlReallocFunc xmlRealloc;
  39. extern xmlStrdupFunc xmlMemStrdup;
  40. /*
  41.  * The way to overload the existing functions
  42.  */
  43. int     xmlMemSetup (xmlFreeFunc freeFunc,
  44.  xmlMallocFunc mallocFunc,
  45.  xmlReallocFunc reallocFunc,
  46.  xmlStrdupFunc strdupFunc);
  47. int     xmlMemGet (xmlFreeFunc *freeFunc,
  48.  xmlMallocFunc *mallocFunc,
  49.  xmlReallocFunc *reallocFunc,
  50.  xmlStrdupFunc *strdupFunc);
  51. /*
  52.  * Initialization of the memory layer
  53.  */
  54. int xmlInitMemory (void);
  55. /*
  56.  * Those are specific to the XML debug memory wrapper
  57.  */
  58. int xmlMemUsed (void);
  59. void xmlMemDisplay (FILE *fp);
  60. void xmlMemShow (FILE *fp, int nr);
  61. void xmlMemoryDump (void);
  62. int xmlInitMemory (void);
  63. #ifdef DEBUG_MEMORY_LOCATION
  64. #define xmlMalloc(x) xmlMallocLoc((x), __FILE__, __LINE__)
  65. #define xmlRealloc(p, x) xmlReallocLoc((p), (x), __FILE__, __LINE__)
  66. #define xmlMemStrdup(x) xmlMemStrdupLoc((x), __FILE__, __LINE__)
  67. extern void * xmlMallocLoc(int size, const char *file, int line);
  68. extern void * xmlReallocLoc(void *ptr,int size, const char *file, int line);
  69. extern char * xmlMemStrdupLoc(const char *str, const char *file, int line);
  70. #endif /* DEBUG_MEMORY_LOCATION */
  71. #ifdef __cplusplus
  72. }
  73. #endif /* __cplusplus */
  74. #endif  /* _DEBUG_MEMORY_ALLOC_ */