Itasca C++ Interface
Toggle main menu visibility
Loading...
Searching...
No Matches
basememory.h
Go to the documentation of this file.
1
#include <stdlib.h>
2
3
#pragma once
12
13
#include "
basedef.h
"
14
#include <new>
15
16
namespace
itasca
{
17
namespace
memory {
18
typedef
void(*MemoryCleanupFunction)();
19
20
void
initialize();
21
void
shutdown();
22
BASE_EXPORT
bool
heapCheck(
void
*memptr =
nullptr
);
23
BASE_EXPORT
unsigned
long
long
getMemory();
24
BASE_EXPORT
MemoryCleanupFunction addCleanupFunction(MemoryCleanupFunction func);
25
BASE_EXPORT
void
* imalloc(
size_t
s,
const
char
*file,
unsigned
len);
26
BASE_EXPORT
void
* imalloc(
size_t
s);
27
BASE_EXPORT
void
ifree(
void
*v);
28
BASE_EXPORT
void
* irealloc(
void
*v,
size_t
s);
29
}
// namespace memory
30
}
// namespace itasca
31
32
#ifdef _WIN32
33
#ifdef __INTEL_COMPILER
34
#pragma warning(disable:3663)
35
inline
void
*
operator
new
(
size_t
s) {
return
itasca::memory::imalloc(s); }
36
inline
void
*
operator
new
[](
size_t
s) {
return
itasca::memory::imalloc(s); }
37
inline
void
operator
delete
(
void
*v) { itasca::memory::ifree(v); }
38
inline
void
operator
delete
[](
void
*v) { itasca::memory::ifree(v); }
39
#endif
40
# ifndef __PLACEMENT_NEW_INLINE
41
void
*
operator
new
(size_t,
void
*v) {
return
(v); }
42
void
operator
delete
(
void
*,
void
*) { }
43
# define __PLACEMENT_NEW_INLINE
44
# endif
45
# ifndef __PLACEMENT_VEC_NEW_INLINE
46
void
*
operator
new
[](size_t,
void
*v) {
return
(v); }
47
void
operator
delete
[](
void
*,
void
*) {}
48
# define __PLACEMENT_VEC_NEW_INLINE
49
# endif
50
51
# ifdef _DEBUG
55
# define NEW(x) new(x,__FILE__,__LINE__)
56
# define NEWC(x) new(#x,__FILE__,__LINE__) x
57
inline
void
*
operator
new
(
size_t
s,
const
char
*,
const
char
*file,
unsigned
line)
58
{
59
return
itasca::memory::imalloc(s, file, line);
60
}
61
inline
void
*
operator
new
[](
size_t
s,
const
char
*,
const
char
*file,
unsigned
line)
62
{
63
return
itasca::memory::imalloc(s, file, line);
64
}
65
inline
void
operator
delete
(
void
*v,
const
char
*,
const
char
*, unsigned) { itasca::memory::ifree(v); }
66
inline
void
operator
delete
[](
void
*v,
const
char
*,
const
char
*, unsigned) { itasca::memory::ifree(v); }
67
# else
// _DEBUG
71
# define NEW(x) new
72
# define NEWC(x) new x
73
# endif
// _DEBUG
74
#endif
// _WIN32
75
76
77
#ifdef __LINUX
78
// /// These functions are provided to replace the default new and delete functionality of the library.
79
// inline void *operator new(size_t s) { return itasca::memory::imalloc(s); }
80
// /// These functions are provided to replace the default new and delete functionality of the library.
81
// inline void *operator new[](size_t s) { return itasca::memory::imalloc(s); }
82
// /// These functions are provided to replace the default new and delete functionality of the library.
83
// inline void operator delete(void *v) { itasca::memory::ifree(v); }
84
// /// These functions are provided to replace the default new and delete functionality of the library.
85
// inline void operator delete[](void *v) { itasca::memory::ifree(v); }
86
// /*
87
// # ifndef __PLACEMENT_NEW_INLINE
88
// inline void *operator new(size_t,void *v) { return(v); }
89
// inline void operator delete(void *,void *) { }
90
// # define __PLACEMENT_NEW_INLINE
91
// # endif
92
// # ifndef __PLACEMENT_VEC_NEW_INLINE
93
// inline void *operator new[](size_t,void *v) { return(v); }
94
// inline void operator delete[](void *,void *) { }
95
// # define __PLACEMENT_VEC_NEW_INLINE
96
// # endif
97
// */
98
# ifdef _DEBUG
99
// /// Using NEW or NEWC adds file and line number info to the allocated memory in debug mode.
100
// /// NEWC automatically makes the comment the constructor call - for example:
101
// /// NEWC(Fred(x,y)) expands to new("Fred(x,y)",__FILE__,__LINE__) Fred(x,y)
102
// # define NEW(x) new(x,__FILE__,__LINE__)
103
// # define NEWC(x) new(#x,__FILE__,__LINE__) x ///< \copydoc NEW
104
// inline void *operator new(size_t s, const char*, const char* file, unsigned line) {
105
// return itasca::memory::imalloc(s, file, line);
106
// }
107
// inline void *operator new[](size_t s, const char*, const char* file, unsigned line) {
108
// return itasca::memory::imalloc(s, file, line);
109
// }
110
// inline void operator delete(void* v, const char*, const char*, unsigned) { itasca::memory::ifree(v); }
111
// inline void operator delete[](void* v, const char*, const char*, unsigned) { itasca::memory::ifree(v); }
112
inline
void
*
operator
new
(
size_t
s,
const
char
*,
const
char
*, unsigned) {
return
operator
new
(s); }
113
inline
void
*
operator
new
[](
size_t
s,
const
char
*,
const
char
*, unsigned ) {
return
operator
new
(s); }
114
inline
void
operator
delete
(
void
* v,
const
char
*,
const
char
*, unsigned) { return ::operator
delete
(v); }
115
inline
void
operator
delete
[](
void
* v,
const
char
*,
const
char
*, unsigned) { return ::operator
delete
(v); }
116
# define NEW(x) new
117
# define NEWC(x) new x
118
# else
// _DEBUG
122
# define NEW(x) new
123
# define NEWC(x) new x
124
# endif
// _DEBUG
125
#endif
// ifdef linux
126
127
129
// EoF
basedef.h
Base type definitions for the engine.
BASE_EXPORT
#define BASE_EXPORT
Definition
basedef.h:24
itasca
namespace Itasca
Definition
basememory.cpp:10
common
base
src
basememory.h
Generated by
1.18.0