| 
    ML Reference
    
   | 
 
Classes | |
| class | ml::Barrier | 
| A barrier class that handles synchronization of multiple threads Thread-safety: This class is thread-safe.  More... | |
| class | ml::WaitCondition | 
| WaitCondition implements a wait condition for thread synchronization.  More... | |
Typedefs | |
| using | ml::AtomicCounter = std::atomic_int32_t | 
| AtomicCounter is a thread-safe integer counter.   | |
| typedef boost::recursive_mutex | ml::RecursiveMutex | 
| Defines a recursive mutex.   | |
| typedef boost::mutex | ml::Mutex | 
| Defines a non-recursive mutex.   | |
HIDDEN CODE WHICH IS REQUIRED TO BE PUBLIC FOR MACRO USAGE | |
The following functions are called by macros and therefore they need to be public. Nevertheless, these functions should not be called directly by any user or application.  | |
| void | ml::ErrorOutput::printAndNotify (MLMessageType messageType, const std::string &libraryPrefix, const std::string &fPrefix, const std::string &functionName, const std::string &reason, const std::string &handling="", const std::string &file="", int line=-1, const void *dumpObj=nullptr, const RuntimeType *dumpObjRT=nullptr, MLErrorCode errCode=ML_RESULT_OK) const | 
| Core error printing function used by all other functions.   | |
| void | ml::ErrorOutput::printAndNotify (MLMessageType messageType, const std::string &libraryPrefix, const std::string &fPrefix, const std::string &functionName, MLErrorCode reason, const std::string &handling="", const std::string &file="", int line=-1, const void *dumpObj=nullptr, const RuntimeType *dumpObjRT=nullptr) const | 
Similar to the other printAndNotify() function with the difference that reason is an MLErrorCode that is automatically translated to a string so that it is not needed to pass it manually as the last parameter.   | |
| void | ml::ErrorOutput::handleDebugPrint (const std::string &envVar, const std::string &libraryPrefix, std::stringstream &reason, const char *file, int line) const | 
| Function called from mlDebugPrint.   | |
| void | ml::ErrorOutput::handleDebugPrint (const std::string &envVar, const std::string &libraryPrefix, const char *reason, const char *file, int line) const | 
| Function called from mlDebugPrint.   | |
| MLMemoryBlockHandle & | MLMemoryBlockHandle::operator= (const MLMemoryBlockHandle &memoryBlockHandle) | 
| Creates a memory block handle from the memory block handle.   | |
| MLMemoryBlockHandle & | MLMemoryBlockHandle::operator= (const MLWeakMemoryBlockHandle &weakMemoryBlockHandle) | 
| Creates a memory block handle from the weak memory block handle.   | |
| MLMemoryBlockHandle | MLMemoryManager::allocate (unsigned int id, size_t size) | 
| Allocates a memory block with the given size in bytes.   | |
| MLMemoryBlockHandle | MLMemoryManager::addAllocatedMemory (unsigned int id, void *data, size_t size, MLDeleteMemoryBlockCallback deleteMemoryBlockCallback, void *deleteMemoryBlockCallbackUserData) | 
| Adds a pre-allocated memory block of the given size in bytes that is later deleted by the given callback.   | |
| void | MLMemoryManager::setCacheAndLockedMemorySizeLimit (const size_t cacheSizeLimit) | 
| The memory manager deletes memory blocks in the cache list automatically if the cache and locked memory size limit is reached or exceeded.   | |
| size_t | MLMemoryManager::clearCachedMemory (size_t numBytes) | 
| Frees the given amount of memory by deleting cached memory blocks.   | |
| void | MLMemoryManager::clearCache () | 
| Deletes all cached memory blocks.   | |
| void | MLMemoryManager::clearCacheToLimit () | 
| Deletes cached memory blocks list until the cache and locked memory size is not greater than the limit.   | |
| size_t | MLMemoryManager::cacheAndLockedMemorySizeLimit () const | 
| Returns the limit of the accumulated sizes in bytes of the cache and the locked memory.   | |
| size_t | MLMemoryManager::cacheSize () const | 
| Returns the current size in bytes of the cache list.   | |
| size_t | MLMemoryManager::lockedMemorySize () const | 
| Returns the current size in bytes of the locked memory.   | |
| size_t | MLMemoryManager::cacheAndLockedMemorySize () const | 
| Returns the sum of the cache and locked memory size in bytes.   | |
| void | MLMemoryManager::printCache (std::ostream &out) const | 
| Prints some cache information to the ostream.   | |
| void | MLMemoryManager::setStatisticsEnabled (bool enabled) | 
| Sets whether collecting statistic data is enabled.   | |
| void | MLMemoryManager::printStatistics (std::ostream &out) | 
| Prints the current statistics.   | |
| MLWeakMemoryBlockHandle & | MLWeakMemoryBlockHandle::operator= (const MLMemoryBlockHandle &memoryBlockHandle) | 
| Creates a weak memory block handle from the memory block handle.   | |
| MLWeakMemoryBlockHandle & | MLWeakMemoryBlockHandle::operator= (const MLWeakMemoryBlockHandle &weakMemoryBlockHandle) | 
| Creates a weak memory block handle from the memory block handle.   | |
| bool | MLWeakMemoryBlockHandle::isNull () const | 
Returns true if the weak memory block references a NULL memory block.   | |
The following classes and methods in the ML are known to be thread-safe.
Note: This list is not yet complete, but it will grow over time.
| using ml::AtomicCounter = std::atomic_int32_t | 
AtomicCounter is a thread-safe integer counter.
Thread-safety: This class is thread-safe.
Definition at line 29 of file mlAtomicCounter.h.
| typedef boost::mutex ml::Mutex | 
| typedef boost::recursive_mutex ml::RecursiveMutex | 
| MLMemoryBlockHandle MLMemoryManager::addAllocatedMemory | ( | unsigned int | id, | 
| void * | data, | ||
| size_t | size, | ||
| MLDeleteMemoryBlockCallback | deleteMemoryBlockCallback, | ||
| void * | deleteMemoryBlockCallbackUserData ) | 
Adds a pre-allocated memory block of the given size in bytes that is later deleted by the given callback.
| id | is used for statistics and should be the same for all allocations from the same library. For example, the ML uses one ID for all allocations. This method is thread-safe. | 
| data | Must be a valid pointer to the pre-allocated memory. | 
| size | The size of the pre-allocated memory in bytes. | 
| deleteMemoryBlockCallback | Is required. It is called to delete the data when the memory block is destroyed. | 
| deleteMemoryBlockCallbackUserData | Is passed to the callback and may be NULL if it is not required for deleting the data. | 
| MLMemoryBlockHandle MLMemoryManager::allocate | ( | unsigned int | id, | 
| size_t | size ) | 
Allocates a memory block with the given size in bytes.
| id | is used for statistics and should be the same for all allocations from the same library. For example, the ML uses one ID for all allocations. This method is thread-safe. | 
| size | The size of the memory block in bytes. It is allowed to pass 0, which results in a valid data pointer. | 
| size_t MLMemoryManager::cacheAndLockedMemorySize | ( | ) | const | 
Returns the sum of the cache and locked memory size in bytes.
This method is thread-safe.
| size_t MLMemoryManager::cacheAndLockedMemorySizeLimit | ( | ) | const | 
Returns the limit of the accumulated sizes in bytes of the cache and the locked memory.
This method is thread-safe.
| size_t MLMemoryManager::cacheSize | ( | ) | const | 
Returns the current size in bytes of the cache list.
This method is thread-safe.
| void MLMemoryManager::clearCache | ( | ) | 
Deletes all cached memory blocks.
Locked memory is not cached and remains untouched. This method is thread-safe.
| size_t MLMemoryManager::clearCachedMemory | ( | size_t | numBytes | ) | 
Frees the given amount of memory by deleting cached memory blocks.
Returns the actually freed amount of memory.
| void MLMemoryManager::clearCacheToLimit | ( | ) | 
Deletes cached memory blocks list until the cache and locked memory size is not greater than the limit.
This method is thread-safe.
| void ml::ErrorOutput::handleDebugPrint | ( | const std::string & | envVar, | 
| const std::string & | libraryPrefix, | ||
| const char * | reason, | ||
| const char * | file, | ||
| int | line ) const | 
Function called from mlDebugPrint.
Does the same like the other mlDebugPrint version, only the reason is passed as character string constant and not as std::strstream. 
| envVar | Specifies the debug symbol that must be defined to print the message given in reason. | 
| libraryPrefix | Specifies the library string code to see from where the debug message comes. | 
| reason | The message to be printed. NULL is legal and is handled as "". | 
| file | The file name where the debug message (i.e., this call) comes from. May be passed as NULL and will be handled as "" then. | 
| line | The line of file where the debug message (i.e., this call) comes from. Unknown line numbers should be passed as -1. | 
| void ml::ErrorOutput::handleDebugPrint | ( | const std::string & | envVar, | 
| const std::string & | libraryPrefix, | ||
| std::stringstream & | reason, | ||
| const char * | file, | ||
| int | line ) const | 
Function called from mlDebugPrint.
The message in reason is passed as a std::stringstream. 
| envVar | Specifies the debug symbol that must be defined to print the message given in reason. | 
| libraryPrefix | Specifies the library string code to see from where the debug message comes. | 
| reason | The message to be printed. | 
| file | The file name where the debug message (i.e., this call) comes from. May be passed as NULL and will be handled as "" then. | 
| line | The line of file where the debug message (i.e., this call) comes from. Unknown line numbers should be passed as -1. | 
| bool MLWeakMemoryBlockHandle::isNull | ( | ) | const | 
Returns true if the weak memory block references a NULL memory block. 
| size_t MLMemoryManager::lockedMemorySize | ( | ) | const | 
Returns the current size in bytes of the locked memory.
This method is thread-safe.
| MLMemoryBlockHandle & MLMemoryBlockHandle::operator= | ( | const MLMemoryBlockHandle & | memoryBlockHandle | ) | 
Creates a memory block handle from the memory block handle.
This operation is thread-safe.
| MLWeakMemoryBlockHandle & MLWeakMemoryBlockHandle::operator= | ( | const MLMemoryBlockHandle & | memoryBlockHandle | ) | 
Creates a weak memory block handle from the memory block handle.
This operation is thread-safe.
| MLMemoryBlockHandle & MLMemoryBlockHandle::operator= | ( | const MLWeakMemoryBlockHandle & | weakMemoryBlockHandle | ) | 
Creates a memory block handle from the weak memory block handle.
This operation is thread-safe.
| MLWeakMemoryBlockHandle & MLWeakMemoryBlockHandle::operator= | ( | const MLWeakMemoryBlockHandle & | weakMemoryBlockHandle | ) | 
Creates a weak memory block handle from the memory block handle.
This operation is thread-safe.
| void ml::ErrorOutput::printAndNotify | ( | MLMessageType | messageType, | 
| const std::string & | libraryPrefix, | ||
| const std::string & | fPrefix, | ||
| const std::string & | functionName, | ||
| const std::string & | reason, | ||
| const std::string & | handling = "", | ||
| const std::string & | file = "", | ||
| int | line = -1, | ||
| const void * | dumpObj = nullptr, | ||
| const RuntimeType * | dumpObjRT = nullptr, | ||
| MLErrorCode | errCode = ML_RESULT_OK ) const | 
Core error printing function used by all other functions.
Thread-safety: This method is thread-safe.
It calculates the ErrorOutputInfos and calls all registered callback functions to propagate the ErrorOutputInfos. It redirects an error message or a debug print to all registered routines.
| messageType | Specifies the message type. | 
| libraryPrefix | Specifies the library the message comes from. | 
| fPrefix | String inserted before function names. | 
| functionName | Specifies the calling function or the environment variable related to the debug print. | 
| reason | The reason for the error call or the debug information. | 
| handling | The way how the error is handled. | 
| file | The file calling this function. | 
| line | The line number in the file calling this function. | 
| dumpObj | A NULL or object pointer to a runtime typed object. If there is a registered dump function in the ML C-API, then it will be dumped and appended to the error output. | 
| dumpObjRT | The runtime type of the object to be dumped or NULL. | 
| errCode | The code of the error causing this call. | 
Calling example:
Note that this routine does not print anything directly. It only converts all parameters into a struct form and calls all registered routines.
| void ml::ErrorOutput::printAndNotify | ( | MLMessageType | messageType, | 
| const std::string & | libraryPrefix, | ||
| const std::string & | fPrefix, | ||
| const std::string & | functionName, | ||
| MLErrorCode | reason, | ||
| const std::string & | handling = "", | ||
| const std::string & | file = "", | ||
| int | line = -1, | ||
| const void * | dumpObj = nullptr, | ||
| const RuntimeType * | dumpObjRT = nullptr ) const | 
Similar to the other printAndNotify() function with the difference that reason is an MLErrorCode that is automatically translated to a string so that it is not needed to pass it manually as the last parameter. 
| void MLMemoryManager::printCache | ( | std::ostream & | out | ) | const | 
Prints some cache information to the ostream.
This method is thread-safe.
| void MLMemoryManager::printStatistics | ( | std::ostream & | out | ) | 
Prints the current statistics.
Do not rely on the output format, as it may change in the future. All information is queryable from the memory manager. This method is thread-safe.
| void MLMemoryManager::setCacheAndLockedMemorySizeLimit | ( | const size_t | cacheSizeLimit | ) | 
The memory manager deletes memory blocks in the cache list automatically if the cache and locked memory size limit is reached or exceeded.
This method is thread-safe.
| cacheSizeLimit | The new limit for the cache and locked memory size in bytes. | 
| void MLMemoryManager::setStatisticsEnabled | ( | bool | enabled | ) | 
Sets whether collecting statistic data is enabled.
This method is thread-safe.