DSDP
dsdpmem.h
Go to the documentation of this file.
1 
2 #if !defined(__DSDP_MEM_H)
3 #define __DSDP_MEM_H
4 
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <math.h>
10 #include <string.h>
11 #include <float.h>
12 
13 extern int DSDPMMalloc(const char*, size_t, void**);
14 extern int DSDPFFree(void**);
15 /* Define some macros for memory management */
16 
17 /*
18 #define DSDPFree(a) 0;printf("FREE: %s\n",__FUNCT__); free((*a))
19 #define DSDPMalloc(a,b) 0;printf("Malloc: %s\n",__FUNCT__); if (b){*(b)=malloc((a)); }
20 */
21 
22 #ifdef DSDPMATLAB
23 
24 #define DSDPCALLOC1(VAR,TYPE,MERR) { \
25  *(VAR) = (TYPE*)mxMalloc(sizeof(TYPE)); \
26  *MERR=0; \
27  if ( *(VAR)==0){*(MERR)=1;} \
28  else {memset(*(VAR),0,sizeof(TYPE));} }
29 
30 #define DSDPCALLOC2(VAR,TYPE,SIZE,MERR) { \
31  *MERR=0; \
32  *VAR=0; \
33  if (SIZE>0){ \
34  *(VAR) = (TYPE*)mxMalloc((SIZE)*sizeof(TYPE)); \
35  if (*(VAR)==0){ *(MERR)=1;} \
36  else {memset(*(VAR),0,(SIZE)*sizeof(TYPE));} \
37  } \
38 }
39 
40 #define DSDPFREE(VAR,MERR) {if (*(VAR)){mxFree(*(VAR));}*(VAR)=0;*(MERR)=0;}
41 #endif
42 
43 /*
44 #ifndef DSDPCALLOC1
45 #define DSDPCALLOC1(VAR,TYPE,MERR) { (*MERR)=DSDPMMalloc(__FUNCT__,sizeof(TYPE),(void**)(VAR));}
46 #endif
47 
48 #ifndef DSDPCALLOC2
49 #define DSDPCALLOC2(VAR,TYPE,SIZE,MERR) { (*MERR)=DSDPMMalloc(__FUNCT__,(SIZE)*sizeof(TYPE),(void**)(VAR));}
50 #endif
51 
52 #ifndef DSDPFREE
53 #define DSDPFREE(a,b) {*(b)=DSDPFFree((void**)(a));}
54 #endif
55 */
56 
57 #ifndef DSDPCALLOC1
58 #define DSDPCALLOC1(VAR,TYPE,MERR) { \
59  *(VAR) = (TYPE*)calloc(1, sizeof(TYPE)); \
60  *MERR=0; \
61  if ( *(VAR)==0){*(MERR)=1;} \
62  else { memset(*(VAR),0,sizeof(TYPE)); } \
63 }
64 #endif
65 
66 #ifndef DSDPCALLOC2
67 #define DSDPCALLOC2(VAR,TYPE,SIZE,MERR) { \
68  *MERR=0; \
69  *VAR=0; \
70  if (SIZE>0){ \
71  *(VAR) = (TYPE*)calloc(SIZE, sizeof(TYPE)); \
72  if (*(VAR)==0){ *(MERR)=1;} \
73  else { memset(*(VAR),0,(SIZE)*sizeof(TYPE)); } \
74  } \
75 }
76 #endif
77 
78 #ifndef DSDPFREE
79 #define DSDPFREE(VAR,MERR) {if (*(VAR)){free(*(VAR));}*(VAR)=0;*(MERR)=0;}
80 #endif
81 
82 /*
83 #ifndef DSDPCALLOC1
84 #define DSDPCALLOC1(VAR,TYPE,SIZE,MERR) {*(VAR) = new TYPE;*MERR=0;}
85 #endif
86 #ifndef DSDPCALLOC2
87 #define DSDPCALLOC2(VAR,TYPE,SIZE,MERR) {*(VAR) = new TYPE[SIZE];*MERR=0;}
88 #endif
89 #ifndef DSDPFREE
90 #define DSDPFREE(a,b) {delete(*(a));*(a)=0;*(b)=0;}
91 #endif
92 */
93 
94 
95 #endif