ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / Examples / Multiplatform / Protocol / VP_Os / vp_os_malloc.h
1 /**
2  * @file malloc.h
3  * @author aurelien.morelle@parrot.fr
4  * @date 2006/12/19
5  */
6
7 #ifndef _MALLOC_INCLUDE_OS_
8 #define _MALLOC_INCLUDE_OS_
9
10 #include <assert.h>
11 #include <string.h>
12 #include <stdlib.h>
13
14 #include <VP_Os/vp_os.h>
15
16 #ifdef __cplusplus
17 extern "C"
18 {
19 #endif
20
21 /**
22  * Same as calloc, see <stdlib.h>
23  */
24 void *
25 vp_os_calloc(size_t nmemb, size_t size);
26
27 /**
28  * Same as malloc, see <stdlib.h>
29  */
30 void *
31 vp_os_malloc(size_t size);
32
33 /**
34  * Same as vp_os_malloc, but without assert even if debug mode
35  */
36 void *
37 vp_os_malloc_no_assert(size_t size);
38
39 /**
40  * Same as free, see <stdlib.h>
41  */
42 void
43 vp_os_free(void *ptr);
44
45 /**
46  * Same as realloc, see <stdlib.h>
47  */
48 void *
49 vp_os_realloc(void *ptr, size_t size);
50
51 /**
52  * Same as vp_os_malloc, but returned value is aligned on align_size boundaries
53  *  -> align_size has to be a power of two !!!
54  */
55 void*
56 vp_os_aligned_malloc(size_t size, size_t align_size);
57
58
59 /**
60  * Must be used to free memory allocated by vp_os_aligned_malloc correctly
61  */
62 void
63 vp_os_aligned_free(void *ptr);
64
65 /**
66  * Allow reallocation of aligned data
67  *  -> align_size has to be a power of two !!!
68  */
69 void*
70 vp_os_aligned_realloc(void* ptr, size_t size, size_t align_size);
71
72 static inline void *
73 vp_os_memset(void *s, int c, size_t n)
74 {
75 #ifdef DEBUG_MODE
76   void *res;
77   assert(s);
78   res = memset(s, c, n);
79   assert(res == s);
80   return (res);
81 #else // ! DEBUG_MODE
82   return memset(s, c, n);
83 #endif // <- DEBUG_MODE
84 }
85
86
87 static inline void *
88 vp_os_memcpy(void *dest, const void *src, size_t n)
89 {
90 #ifdef DEBUG_MODE
91   void *res;
92   assert(dest);
93   res = memcpy(dest, src, n);
94   assert(res == dest);
95   return (res);
96 #else // ! DEBUG_MODE
97   return memcpy(dest, src, n);
98 #endif // <- DEBUG_MODE
99 }
100
101
102 extern void *please_use_vp_os_calloc(size_t nmemb, size_t size);
103 extern void *please_use_vp_os_malloc(size_t size);
104 extern void  please_use_vp_os_free(void *ptr);
105 extern void *please_use_vp_os_realloc(void *ptr, size_t size);
106 extern void *please_use_vp_os_memset(void *s, int c, size_t n);
107
108 #define calloc  please_use_vp_os_calloc
109 #define malloc  please_use_vp_os_malloc
110 #define memset  please_use_vp_os_memset
111 #define free    please_use_vp_os_free
112 #define realloc please_use_vp_os_realloc
113
114 #ifdef __cplusplus
115 }
116 #endif
117
118
119 #endif // ! _MALLOC_INCLUDE_OS_
120