Corrected intern lib names so blendercreator.dsp can find them.
[blender-staging.git] / intern / guardedalloc / MEM_guardedalloc.h
1 /**
2  * $Id$
3  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30  */
31
32 /**
33
34  * $Id$
35  * Copyright (C) 2001 NaN Technologies B.V.
36  * Guarded memory (de)allocation
37  *
38  *
39  * @mainpage MEM - c-style guarded memory allocation
40  *
41  * @section about About the MEM module
42  *
43  * MEM provides guarded malloc/calloc calls. All memory is enclosed by
44  * pads, to detect out-of-bound writes. All blocks are placed in a
45  * linked list, so they remain reachable at all times. There is no
46  * back-up in case the linked-list related data is lost.
47  *
48  * @section issues Known issues with MEM
49  *
50  * There are currently no known issues with MEM. Note that there is a
51  * second intern/ module with MEM_ prefix, for use in c++.
52  * 
53  * @section dependencies Dependencies
54  *
55  * - stdlib
56  *
57  * - stdio
58  *
59  * */
60
61 #ifndef MEM_MALLOCN_H
62 #define MEM_MALLOCN_H
63
64 #ifdef HAVE_CONFIG_H
65 #include <config.h>
66 #endif
67
68 /* Needed for FILE* */
69 #include "stdio.h"
70
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74
75         /** Returns the lenght of the allocated memory segment pointed at
76          * by vmemh. If the pointer was not previously allocated by this
77          * module, the result is undefined.*/
78         int MEM_allocN_len(void *vmemh);
79
80         /**
81          * Release memory previously allocatred by this module. 
82          */
83         short MEM_freeN(void *vmemh);
84
85         /**
86          * Duplicates a block of memory, and returns a pointer to the
87          * newly allocated block.  */
88         void *MEM_dupallocN(void *vmemh);
89
90         /**
91          * Allocate a block of memory of size len, with tag name str. The
92          * memory is cleared. The name must be static, because only a
93          * pointer to it is stored ! */
94         void *MEM_callocN(unsigned int len, char * str);
95         
96         /** Allocate a block of memory of size len, with tag name str. The
97          * name must be a static, because only a pointer to it is stored !
98          * */
99         void *MEM_mallocN(unsigned int len, char * str);
100
101         /** Print a list of the names and sizes of all allocated memory
102          * blocks. */ 
103         void MEM_printmemlist(void);
104
105         /** Set the stream for error output. */
106         void MEM_set_error_stream(FILE*);
107
108         /**
109          * Are the start/end block markers still correct ?
110          *
111          * @retval 0 for correct memory, 1 for corrupted memory. */
112         int MEM_check_memory_integrity(void);
113
114 #ifdef __cplusplus
115 }
116 #endif
117
118 #endif
119