13#ifndef ML_MEMORY_MANAGER_H
14#define ML_MEMORY_MANAGER_H
19#include "../mlMemoryManagerDllExport.h"
35#define ML_BYTE_TO_KB(x) ((x) >> 10)
37#define ML_BYTE_TO_MB(x) ((x) >> 20)
39#define ML_BYTE_TO_GB(x) ((x) >> 30)
41#define ML_KB_TO_BYTE(x) ((x) << 10)
43#define ML_MB_TO_BYTE(x) ((x) << 20)
45#define ML_GB_TO_BYTE(x) ((x) << 30)
53#ifndef DOXYGEN_SHOULD_SKIP_THIS
56class MLMemoryManagerPrivate;
137 void* deleteMemoryBlockCallbackUserData);
208 template <
typename T>
213 UserDataOwnershipGoesToMemoryBlock};
215 template <
typename T>
218 const void *userData);
225 template <
typename T>
230 void **oldUserData =
nullptr)
const;
244#ifndef DOXYGEN_SHOULD_SKIP_THIS
251 MLMemoryManagerPrivate* _private;
253 friend class MLMemoryBlock;
268 const void *userData);
static MLMemoryManager * singleton()
void clearMemoryBlockHandles(MLMemoryBlockHandle **handles, size_t handleCount)
void setErrorHandlingCallback(MLMemoryManagerErrorHandler errorHandler)
unsigned int registerLibrary(const std::string &libraryName)
void clearMemoryBlockHandles(MLWeakMemoryBlockHandle **handles, size_t handleCount)
static Ownership deregisterDeletionCallbackUnsafe(const T &handle, MLDeleteMemoryBlockCallback callback, const void *userData)
void replaceDeletionCallback(const T &handle, MLDeleteMemoryBlockCallback newCallback, void *newUserData, MLDeleteMemoryBlockCallback *oldCallback=nullptr, void **oldUserData=nullptr) const
static void deinitialize()
boost::mutex & getCacheAccessMutex()
static bool registerDeletionCallbackUnsafe(const T &handle, MLDeleteMemoryBlockCallback callback, void *userData)
void setCacheAndLockedMemorySizeLimit(const size_t cacheSizeLimit)
size_t lockedMemorySize() const
size_t clearCachedMemory(size_t numBytes)
MLMemoryBlockHandle allocate(unsigned int id, size_t size)
void setStatisticsEnabled(bool enabled)
size_t cacheAndLockedMemorySizeLimit() const
MLMemoryBlockHandle addAllocatedMemory(unsigned int id, void *data, size_t size, MLDeleteMemoryBlockCallback deleteMemoryBlockCallback, void *deleteMemoryBlockCallbackUserData)
void printStatistics(std::ostream &out)
void printCache(std::ostream &out) const
size_t cacheAndLockedMemorySize() const
void(* MLDeleteMemoryBlockCallback)(void *data, size_t size, void *userData)
MLMemoryManagerErrorHandlingType
@ NotifyUser
An error occurred and the user should be notified about it.
void(* MLMemoryManagerErrorHandler)(const std::string &message, const char *file, int line, MLMemoryManagerErrorHandlingType errorHandling)
Function callback to handle memory manager errors.
MLMEMORYMANAGER_EXPORT std::string mlByteToHumanReadable(size_t byte)
Forward declaration for the boost::mutex class.