Annotation of win32/gnome/gnome-xml/include/libxml/xmlmemory.h, revision 1.1

1.1     ! paf         1: /*
        !             2:  * xmlmemory.h: interface for the memory allocation debug.
        !             3:  *
        !             4:  * daniel@veillard.com
        !             5:  */
        !             6: 
        !             7: 
        !             8: #ifndef _DEBUG_MEMORY_ALLOC_
        !             9: #define _DEBUG_MEMORY_ALLOC_
        !            10: 
        !            11: #include <stdio.h>
        !            12: #include <libxml/xmlversion.h>
        !            13: 
        !            14: /**
        !            15:  * DEBUG_MEMORY:
        !            16:  *
        !            17:  * DEBUG_MEMORY replaces the allocator with a collect and debug
        !            18:  * shell to the libc allocator.
        !            19:  * DEBUG_MEMORY should only be activated when debugging 
        !            20:  * libxml i.e. if libxml has been configured with --with-debug-mem too.
        !            21:  */
        !            22: /* #define DEBUG_MEMORY_FREED */
        !            23: /* #define DEBUG_MEMORY_LOCATION */
        !            24: 
        !            25: #ifdef DEBUG
        !            26: #ifndef DEBUG_MEMORY
        !            27: #define DEBUG_MEMORY
        !            28: #endif
        !            29: #endif
        !            30: 
        !            31: /**
        !            32:  * DEBUG_MEMORY_LOCATION:
        !            33:  *
        !            34:  * DEBUG_MEMORY_LOCATION should be activated only when debugging 
        !            35:  * libxml i.e. if libxml has been configured with --with-debug-mem too.
        !            36:  */
        !            37: #ifdef DEBUG_MEMORY_LOCATION
        !            38: #endif
        !            39: 
        !            40: #ifdef __cplusplus
        !            41: extern "C" {
        !            42: #endif
        !            43: 
        !            44: /*
        !            45:  * The XML memory wrapper support 4 basic overloadable functions.
        !            46:  */
        !            47: /**
        !            48:  * xmlFreeFunc:
        !            49:  * @mem: an already allocated block of memory
        !            50:  *
        !            51:  * Signature for a free() implementation.
        !            52:  */
        !            53: typedef void (*xmlFreeFunc)(void *mem);
        !            54: /**
        !            55:  * xmlMallocFunc:
        !            56:  * @size:  the size requested in bytes
        !            57:  *
        !            58:  * Signature for a malloc() implementation.
        !            59:  *
        !            60:  * Returns a pointer to the newly allocated block or NULL in case of error.
        !            61:  */
        !            62: typedef void *(*xmlMallocFunc)(size_t size);
        !            63: 
        !            64: /**
        !            65:  * xmlReallocFunc:
        !            66:  * @mem: an already allocated block of memory
        !            67:  * @size:  the new size requested in bytes
        !            68:  *
        !            69:  * Signature for a realloc() implementation.
        !            70:  *
        !            71:  * Returns a pointer to the newly reallocated block or NULL in case of error.
        !            72:  */
        !            73: typedef void *(*xmlReallocFunc)(void *mem, size_t size);
        !            74: 
        !            75: /**
        !            76:  * xmlStrdupFunc:
        !            77:  * @str: a zero terminated string
        !            78:  *
        !            79:  * Signature for an strdup() implementation.
        !            80:  *
        !            81:  * Returns the copy of the string or NULL in case of error.
        !            82:  */
        !            83: typedef char *(*xmlStrdupFunc)(const char *str);
        !            84: 
        !            85: /*
        !            86:  * The 4 interfaces used for all memory handling within libxml.
        !            87: LIBXML_DLL_IMPORT extern xmlFreeFunc xmlFree;
        !            88: LIBXML_DLL_IMPORT extern xmlMallocFunc xmlMalloc;
        !            89: LIBXML_DLL_IMPORT extern xmlReallocFunc xmlRealloc;
        !            90: LIBXML_DLL_IMPORT extern xmlStrdupFunc xmlMemStrdup;
        !            91:  */
        !            92: 
        !            93: /*
        !            94:  * The way to overload the existing functions.
        !            95:  */
        !            96: int     xmlMemSetup    (xmlFreeFunc freeFunc,
        !            97:                         xmlMallocFunc mallocFunc,
        !            98:                         xmlReallocFunc reallocFunc,
        !            99:                         xmlStrdupFunc strdupFunc);
        !           100: int     xmlMemGet      (xmlFreeFunc *freeFunc,
        !           101:                         xmlMallocFunc *mallocFunc,
        !           102:                         xmlReallocFunc *reallocFunc,
        !           103:                         xmlStrdupFunc *strdupFunc);
        !           104: 
        !           105: /*
        !           106:  * Initialization of the memory layer.
        !           107:  */
        !           108: int    xmlInitMemory   (void);
        !           109: 
        !           110: /*
        !           111:  * Those are specific to the XML debug memory wrapper.
        !           112:  */
        !           113: int    xmlMemUsed      (void);
        !           114: void   xmlMemDisplay   (FILE *fp);
        !           115: void   xmlMemShow      (FILE *fp, int nr);
        !           116: void   xmlMemoryDump   (void);
        !           117: void * xmlMemMalloc    (size_t size);
        !           118: void * xmlMemRealloc   (void *ptr,size_t size);
        !           119: void   xmlMemFree      (void *ptr);
        !           120: char * xmlMemoryStrdup (const char *str);
        !           121: 
        !           122: #ifdef DEBUG_MEMORY_LOCATION
        !           123: /**
        !           124:  * xmlMalloc:
        !           125:  * @size:  number of bytes to allocate
        !           126:  *
        !           127:  * Wrapper for the malloc() function used in the XML library.
        !           128:  *
        !           129:  * Returns the pointer to the allocated area or NULL in case of error.
        !           130:  */
        !           131: #define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
        !           132: /**
        !           133:  * xmlRealloc:
        !           134:  * @ptr:  pointer to the existing allocated area
        !           135:  * @size:  number of bytes to allocate
        !           136:  *
        !           137:  * Wrapper for the realloc() function used in the XML library.
        !           138:  *
        !           139:  * Returns the pointer to the allocated area or NULL in case of error.
        !           140:  */
        !           141: #define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
        !           142: /**
        !           143:  * xmlMemStrdup:
        !           144:  * @str:  pointer to the existing string
        !           145:  *
        !           146:  * Wrapper for the strdup() function, xmlStrdup() is usually preferred.
        !           147:  *
        !           148:  * Returns the pointer to the allocated area or NULL in case of error.
        !           149:  */
        !           150: #define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
        !           151: 
        !           152: void * xmlMallocLoc(size_t size, const char *file, int line);
        !           153: void * xmlReallocLoc(void *ptr,size_t size, const char *file, int line);
        !           154: char * xmlMemStrdupLoc(const char *str, const char *file, int line);
        !           155: #endif /* DEBUG_MEMORY_LOCATION */
        !           156: 
        !           157: #ifdef __cplusplus
        !           158: }
        !           159: #endif /* __cplusplus */
        !           160: 
        !           161: #ifndef __XML_GLOBALS_H
        !           162: #ifndef __XML_THREADS_H__
        !           163: #include <libxml/threads.h>
        !           164: #include <libxml/globals.h>
        !           165: #endif
        !           166: #endif
        !           167: 
        !           168: #endif  /* _DEBUG_MEMORY_ALLOC_ */
        !           169: 

E-mail: