17 #ifndef DOXYGEN_SHOULD_SKIP_THIS
24 void*
operator new(
size_t size)
throw (std::bad_alloc);
25 void operator delete(
void *p)
throw();
28 void*
operator new[](
size_t size)
throw(std::bad_alloc);
29 void operator delete[](
void *p)
throw();
31 #ifdef TRACE_MEMORY_ALLOCS
32 #define SG_MALLOC(type, len) sg_generic_malloc<type>(size_t(len), __FILE__, __LINE__)
33 #define SG_CALLOC(type, len) sg_generic_calloc<type>(size_t(len), __FILE__, __LINE__)
34 #define SG_REALLOC(type, ptr, old_len, len) sg_generic_realloc<type>(ptr, size_t(old_len), size_t(len), __FILE__, __LINE__)
35 #define SG_FREE(ptr) sg_generic_free(ptr)
36 #else //TRACE_MEMORY_ALLOCS
38 #define SG_MALLOC(type, len) sg_generic_malloc<type>(size_t(len))
39 #define SG_CALLOC(type, len) sg_generic_calloc<type>(size_t(len))
40 #define SG_REALLOC(type, ptr, old_len, len) sg_generic_realloc<type>(ptr, size_t(old_len), size_t(len))
41 #define SG_FREE(ptr) sg_generic_free(ptr)
42 #endif //TRACE_MEMORY_ALLOCS
46 template <
class T>
class SGVector;
47 template <
class T>
class SGSparseVector;
48 template <
class T>
class SGMatrix;
50 #ifdef TRACE_MEMORY_ALLOCS
51 void*
sg_malloc(
size_t size,
const char* file,
int line);
52 template <
class T> T* sg_generic_malloc(
size_t len,
const char* file,
int line)
54 return (T*)
sg_malloc(
sizeof(T)*len, file, line);
57 void*
sg_calloc(
size_t num,
size_t size,
const char* file,
int line);
58 template <
class T> T* sg_generic_calloc(
size_t len,
const char* file,
int line)
60 return (T*)
sg_calloc(len,
sizeof(T), file, line);
63 void*
sg_realloc(
void* ptr,
size_t size,
const char* file,
int line);
64 template <
class T> T* sg_generic_realloc(T* ptr,
size_t old_len,
size_t len,
const char* file,
int line)
66 return (T*)
sg_realloc(ptr,
sizeof(T)*len, file, line);
70 template <
class T>
void sg_generic_free(T* ptr)
74 #else //TRACE_MEMORY_ALLOCS
76 template <
class T> T* sg_generic_malloc(
size_t len)
82 template <
class T> T* sg_generic_realloc(T* ptr,
size_t old_len,
size_t len)
88 template <
class T> T* sg_generic_calloc(
size_t len)
94 template <
class T>
void sg_generic_free(T* ptr)
98 #endif //TRACE_MEMORY_ALLOCS
99 #ifdef TRACE_MEMORY_ALLOCS
110 MemoryBlock(
void* p);
117 MemoryBlock(
void* p,
size_t sz,
const char* fname=NULL,
int linenr=-1);
121 MemoryBlock(
const MemoryBlock &b);
139 void list_memory_allocs();
142 #ifdef TRACE_MEMORY_ALLOCS
143 #define SG_SPECIALIZED_MALLOC(type) \
144 template<> type* sg_generic_malloc<type >(size_t len, const char* file, int line); \
145 template<> type* sg_generic_calloc<type >(size_t len, const char* file, int line); \
146 template<> type* sg_generic_realloc<type >(type* ptr, size_t old_len, size_t len, const char* file, int line); \
147 template<> void sg_generic_free<type >(type* ptr);
148 #else // TRACE_MEMORY_ALLOCS
149 #define SG_SPECIALIZED_MALLOC(type) \
150 template<> type* sg_generic_malloc<type >(size_t len); \
151 template<> type* sg_generic_calloc<type >(size_t len); \
152 template<> type* sg_generic_realloc<type >(type* ptr, size_t old_len, size_t len); \
153 template<> void sg_generic_free<type >(type* ptr);
154 #endif // TRACE_MEMORY_ALLOCS
200 #undef SG_SPECIALIZED_MALLOC
202 void* get_copy(
void* src,
size_t len);
203 char* get_strdup(
const char* str);
206 #endif // DOXYGEN_SHOULD_SKIP_THIS
208 #endif // __MEMORY_H__
void * sg_calloc(size_t num, size_t size)
std::complex< float64_t > complex128_t
bool operator==(const Any &lhs, const Any &rhs)
void * sg_malloc(size_t size)
all of classes and functions are contained in the shogun namespace
#define SG_SPECIALIZED_MALLOC(type)
void * sg_realloc(void *ptr, size_t size)