Adding SATCHECK_CONFIG to make switching easier ...
[satune.git] / src / mymemory.h
1 /*      Copyright (c) 2015 Regents of the University of California
2  *
3  *      Author: Brian Demsky <bdemsky@uci.edu>
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  *      version 2 as published by the Free Software Foundation.
8  */
9
10 /** @file mymemory.h
11  *  @brief Memory allocation functions.
12  */
13
14 #ifndef CSAT_MY_MEMORY_H
15 #define CSAT_MY_MEMORY_H
16 #include <limits.h>
17 #include <stddef.h>
18 #include <stdlib.h>
19
20 #include "config.h"
21
22 /*
23    void * ourmalloc(size_t size);
24    void ourfree(void *ptr);
25    void * ourcalloc(size_t count, size_t size);
26    void * ourrealloc(void *ptr, size_t size);
27  */
28
29 #ifdef SATCHECK_CONFIG
30 void *model_malloc(size_t size);
31 void model_free(void *ptr);
32 void *model_calloc(size_t count, size_t size);
33 void *model_realloc(void *ptr, size_t size);
34
35
36 #define ourmalloc model_malloc
37 #define ourfree model_free
38 #define ourrealloc model_realloc
39 #define ourcalloc model_calloc
40
41 #else
42 static inline void *ourmalloc(size_t size) { return malloc(size); }
43 static inline void ourfree(void *ptr) { free(ptr); }
44 static inline void *ourcalloc(size_t count, size_t size) { return calloc(count, size); }
45 static inline void *ourrealloc(void *ptr, size_t size) { return realloc(ptr, size); }
46 #endif
47
48 #define CMEMALLOC                           \
49         void *operator new(size_t size) {       \
50                 return ourmalloc(size);                \
51         }                                                  \
52         void operator delete(void *p, size_t size) {       \
53                 ourfree(p);                                      \
54         }                                                  \
55         void *operator new[](size_t size) {               \
56                 return ourmalloc(size);                          \
57         }                                                    \
58         void operator delete[](void *p, size_t size) {       \
59                 ourfree(p);                                        \
60         }                                                                     \
61         void *operator new(size_t size, void *p) {                                                                                                                      /* placement new */ \
62                 return p;                                                           \
63         }
64
65 #endif/* _MY_MEMORY_H */