DSDP
dsdpmem.h
Go to the documentation of this file.
1
2#if !defined(__DSDP_MEM_H)
3#define __DSDP_MEM_H
7#include <stdio.h>
8#include <stdlib.h>
9#include <math.h>
10#include <string.h>
11#include <float.h>
12
13extern int DSDPMMalloc(const char*, size_t, void**);
14extern 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