MeVisLab Toolbox Reference
mlUtilsAPI.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2007, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13#ifndef ML_UTILS_API_H
14#define ML_UTILS_API_H
15
18
19// Attention: All includes must be pure C!
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#ifndef ML_DISABLE_CPP
26#define ML_DISABLE_CPP
27#endif
28
29#include "mlUtilsSystemC.h"
30
31//--------------------------------------------------------------------------------------------
32//
35//
36//--------------------------------------------------------------------------------------------
37
40
45
49[[nodiscard]]
51
54[[nodiscard]]
56
59
65
66
67//-----------------------------------------------------------------------------------
68//
71//
72//-----------------------------------------------------------------------------------
73
76
79
83
84
85//-----------------------------------------------------------------------------------
86//
89//
90//-----------------------------------------------------------------------------------
91
96
103
104
105
106//-----------------------------------------------------------------------------------
107//
110//
111//-----------------------------------------------------------------------------------
112
115
120
121
122//-----------------------------------------------------------------------------------
123//
126//
127//-----------------------------------------------------------------------------------
128
131
134
137
142
145
149
152
154
155
156//-----------------------------------------------------------------------------------
157//
160//
161//-----------------------------------------------------------------------------------
162
169
176
184
185
186
187//--------------------------------------------------------------------------------------------------
188//
191//
192//--------------------------------------------------------------------------------------------------
193
198[[nodiscard]]
200
206[[nodiscard]]
208
213ML_UTILS_EXPORT void MLFree(void* ptr);
214ML_UTILS_EXPORT void MLFreeMemoryManagerCallback(void* ptr, const size_t size, void* userData);
216
222[[nodiscard]]
224
228[[nodiscard]]
231
232
233
234
235
236//-----------------------------------------------------------------------------------
237//
240//
241//-----------------------------------------------------------------------------------
249// void MLMessageCB(void* usrData,
250// MLErrorCode errCode,
251// MLMessageType messageType,
252// const char* messStr,
253// int line,
254// const char** infos)
278ML_UTILS_EXPORT void MLSetMessageCB(void* userData, MLMessageCB* callback);
279
283ML_UTILS_EXPORT void MLGetMessageCB(void** userData, MLMessageCB** callback);
285
286
287
288//-----------------------------------------------------------------------------------
289//
292//
293//-----------------------------------------------------------------------------------
297
302
306
310
314
318
319
320
321//-----------------------------------------------------------------------------------
322//
325//
326//-----------------------------------------------------------------------------------
346 const char* libraryPrefix,
347 const char* fPrefix,
348 const char* functionName,
349 const char* reason,
350 const char* handling,
351 const char* file,
352 int line,
354
359 int line,
361
370 const char* libraryPrefix,
371 const char* outStr,
372 const char* file,
373 int line);
375
376
377//-----------------------------------------------------------------------------------
378//
381//
382//-----------------------------------------------------------------------------------
388
393
394
395//-----------------------------------------------------------------------------------
396//
399//
400//-----------------------------------------------------------------------------------
405
409
410
411//-----------------------------------------------------------------------------------
412//
415//
416//-----------------------------------------------------------------------------------
423
428
429
430//-----------------------------------------------------------------------------------
431//
434//
435//-----------------------------------------------------------------------------------
444
448
449
450//-----------------------------------------------------------------------------------
451//
454//
455//-----------------------------------------------------------------------------------
456
471
477
478
479//-----------------------------------------------------------------------------------
480//
483//
484//-----------------------------------------------------------------------------------
485
491
496
497
503
506
510
511//-----------------------------------------------------------------------------------
512//
515//
516//-----------------------------------------------------------------------------------
517
521
525
529
530
531//-----------------------------------------------------------------------------------
532//
535//
536//-----------------------------------------------------------------------------------
537
565ML_UTILS_EXPORT void* MLStringToPtr(const char* valueString, int postError, const char* errFunc);
567
568
569
570//--------------------------------------------------------------------------------------------------
571//
574//
575//--------------------------------------------------------------------------------------------------
578
582ML_UTILS_EXPORT void MLMakeLittleEndian(unsigned char* data, size_t numBytes, size_t dTypeSize);
583
587ML_UTILS_EXPORT void MLMakeBigEndian(unsigned char* data, size_t numBytes, size_t dTypeSize);
588
594ML_UTILS_EXPORT void MLSwapBytes(unsigned char* data, size_t numBytes, size_t dTypeSize);
596
597
598//-----------------------------------------------------------------------------------
599//
602//
603//-----------------------------------------------------------------------------------
606
610
611//-----------------------------------------------------------------------------------
612//
615//
616//-----------------------------------------------------------------------------------
619
623
624//-----------------------------------------------------------------------------------
625//
628//
629//-----------------------------------------------------------------------------------
632
636
637
643
644
645#ifdef __cplusplus
646}
647#endif
648
649#undef ML_DISABLE_CPP
650
651#endif // __mlUtilsAPI_H
MLint32 MLErrorCode
Type of an ML Error code.
Definition mlTypeDefs.h:716
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
MLTerminator
Termination types for error handling.
@ MLNumTerminators
MLMemoryErrorHandling
Enumerator to specify memory error handling.
Definition mlTypeDefs.h:676
MLuint32 MLThreadId
Definition mlTypeDefs.h:604
unsigned int MLuint32
Definition mlTypeDefs.h:185
MLuint64 MLuint
An unsigned ML integer type with at least 64 bits used for index calculations on very large images ev...
Definition mlTypeDefs.h:506
void MLEventFilterApplicationHookCB(void *applicationUsrData, MLEventFilterApplicationMessage type, MLEventFilterCB *cb, void *usrData, MLuint32 fromMessageId, MLuint32 toMessageId)
Internal application event filter callback type.
INT64 MLint64
Include 64 bit integer support for Windows or Unix.
Definition mlTypeDefs.h:412
void MLMessageCB(void *usrData, MLErrorCode errCode, MLMessageType messageType, const char *messStr, int line, const char **infos)
Handling/setting/getting of ML messages callbacks.
MLint32 MLEventFilterCB(void *usrData, void *event)
Callback function type for events that are passed to the user.
signed int MLint32
Definition mlTypeDefs.h:161
MLMessageType
Message types handled by the ErrorOutput class.
Definition mlTypeDefs.h:696
#define ML_UTILS_EXPORT
Defines platform dependent DLL export macro for mlUtils.
Definition mlUtilities.h:20
ML_UTILS_EXPORT size_t MLDebugGetNumEnvNames()
Returns number of registered debug environment names.
ML_UTILS_EXPORT const char * MLTerminatorStrings[MLNumTerminators]
Strings for MLTerminator enumeration.
ML_UTILS_EXPORT MLThreadId MLGetCurrentThreadID()
Returns the thread id for the current thread.
ML_UTILS_EXPORT void MLRemoveEventFilterCB(MLEventFilterCB *cb, void *usrData)
Removes the callback that was added with MLAddEventFilterCB by calling a hook function registered by ...
ML_UTILS_EXPORT MLint32 MLIsCurrentThreadMainThread()
Returns if the current thread equals the main thread (MLGetMainThreadID() == MLGetCurrentThreadID)
ML_UTILS_EXPORT void MLSetTraceDumpMessageBits(MLuint32 messageBitMask)
Sets the trace dump mask to messageBitMask.
ML_UTILS_EXPORT void MLAddEventFilterCB(MLEventFilterCB *cb, void *usrData, MLuint32 fromMessageId, MLuint32 toMessageId)
Adds a user callback cb to the native window event handler that is called for every window message.
ML_UTILS_EXPORT const char * MLGetErrorCodeDescription(MLErrorCode errCode)
String names for each error code.
ML_UTILS_EXPORT MLint32 MLDebugHasEnvName(const char *envName)
Returns true (=1) if the debug environment name given by the null terminated string envName exists.
ML_UTILS_EXPORT void MLPrintAndNotify(MLMessageType messageType, const char *libraryPrefix, const char *fPrefix, const char *functionName, const char *reason, const char *handling, const char *file, int line, MLErrorCode errCode)
Core error printing function which can be used by other applications.
ML_UTILS_EXPORT void MLSetApplicationPropertiesHook(MLApplicationPropertyCallbacks *callbacks)
Sets the callbacks to supply access to properties of the host application, the passed struct is copie...
ML_UTILS_EXPORT MLuint32 MLIsFullDebuggingEnabled()
Returns 1 if full debugging is enabled, otherwise 0 is returned.
ML_UTILS_EXPORT MLuint32 MLGetMessageFilter()
Returns the bit mask specifying the message filter which is composed from binary ORed MLMessageTypes ...
ML_UTILS_EXPORT void MLMakeLittleEndian(unsigned char *data, size_t numBytes, size_t dTypeSize)
If the data set pointed to by data of size numBytes consisting of a dTypeSize'd data type which is in...
ML_UTILS_EXPORT MLuint32 MLGetRandomNumber()
Get a (weak) random number in the range 0 to 2^32-2.
ML_UTILS_EXPORT MLint32 MLUtilsDestroy()
Destroys MLUtils library. Returns 0 on error, 1 on success.
ML_UTILS_EXPORT MLEventFilterApplicationHookCB * MLGetEventFilterApplicationHookCB()
Returns the current MLEventFilterApplicationHookCB.
ML_UTILS_EXPORT MLuint32 MLIsExceptionHandlingEnabled()
Returns 1 if exception handling is enabled, otherwise 0 is returned.
ML_UTILS_EXPORT void MLDebugRemoveEnvName(const char *envName)
Removes a registered debug environment string given by the null terminated string envName.
ML_UTILS_EXPORT MLint32 MLIsUtilsInitialized()
Returns 1 if mlUtils is initialized, 0 otherwise.
ML_UTILS_EXPORT void * MLAlloc(MLuint numBytes, MLMemoryErrorHandling handleFailure)
Allocates a memory block of numBytes.
ML_UTILS_EXPORT void MLHandleDebugPrint(const char *envVar, const char *libraryPrefix, const char *outStr, const char *file, int line)
Core debug printing function which can be used by other applications.
ML_UTILS_EXPORT void MLSetMaxNumTraceStackDumps(MLuint32 numMaxEntries)
Sets the maximum number of trace stack entries to be shown on fatal error outputs to numMaxEntries.
ML_UTILS_EXPORT const char *const * MLGetErrorCodeDescriptionTable()
Returns the table of available error code descriptions.
ML_UTILS_EXPORT void * MLRealloc(void *ptr, MLuint numBytes, MLMemoryErrorHandling handleFailure)
The memory block pointed to by ptr is resized and copied so that it has at least numBytes.
ML_UTILS_EXPORT char * MLInt64ToStringCopy(MLint64 int64Value)
Returns a 64 bit integer value int64Value as C-String.
ML_UTILS_EXPORT MLuint32 MLGetMaxNumTraceListDumps()
Returns the maximum number of trace list entries to be shown on fatal error outputs.
ML_UTILS_EXPORT void MLDebugAddEnvName(const char *envName)
Adds the debug environment string given by the null terminated string envName.
ML_UTILS_EXPORT void MLSetTerminationType(MLMessageType level, MLTerminator term)
Sets the way the ML shall handle messages.
ML_UTILS_EXPORT MLuint32 MLGetMaxNumTraceStackDumps()
Returns the maximum number of trace stack entries to be shown on fatal error outputs.
ML_UTILS_EXPORT MLuint32 MLGetCheckBitMask()
Returns the bit mask specifying runtime and final checks of the ML; the default is 0 = no active chec...
ML_UTILS_EXPORT void MLSetEventFilterApplicationHook(MLEventFilterApplicationHookCB *cb, void *usrData)
Sets an application hook function cb which is called for each MLAddEventFilterCB and MLRemoveEventFil...
ML_UTILS_EXPORT MLint32 MLIsMultithreadingActive()
Returns true if more than one ML thread is running, otherwise false.
ML_UTILS_EXPORT MLint32 MLSetNotifyEnabled(MLint32 flag)
Enable(flag == 1) / Disable (flag ==0) the internal state change notifications (MLNotify),...
ML_UTILS_EXPORT MLErrorCode MLFindErrorCodeDescription(const char *errorString)
Returns the error code for an error string errorString.
ML_UTILS_EXPORT void MLMakeBigEndian(unsigned char *data, size_t numBytes, size_t dTypeSize)
If the data set pointed to by data of size numBytes consisting of a dTypeSize'd data type which is in...
ML_UTILS_EXPORT void MLSetMaxNumTraceListDumps(MLuint32 numMaxEntries)
Sets the maximum number of trace list entries to be shown on fatal error outputs to numMaxEntries.
ML_UTILS_EXPORT MLThreadId MLGetMainThreadID()
Returns the thread id of the main thread (which is the thread from which the DLL was loaded)
ML_UTILS_EXPORT void MLDebugRemoveAllEnvNames()
Removes all registered debug environment strings from list.
ML_UTILS_EXPORT void MLSetThreadName(const char *threadName)
Set the name of the thread for debugging purposes (currently only implemented on Windows & OSX)
ML_UTILS_EXPORT char * MLIntToStringCopy(int intValue)
Returns an integer value intValue as C-String.
ML_UTILS_EXPORT void MLSetCheckBitMask(MLuint32 bitMask)
Enables/disables runtime and final checks in the ML; see MLCheckBits enumerator in mlTypeDefs....
ML_UTILS_EXPORT void MLSetMessageCB(void *userData, MLMessageCB *callback)
Registers an MLMessage callback callback and a user data pointer userData.
ML_UTILS_EXPORT void MLSetMainThreadID(MLThreadId threadId)
Sets the thread id that is considered to be the main thread id (WARNING: this should typically never ...
ML_UTILS_EXPORT MLint32 MLInitializeUtils()
Initializes library. returns 0 on error, 1 on success.
ML_UTILS_EXPORT MLTerminator MLGetTerminationType(MLMessageType level)
Returns the way the ML shall handle messages.
ML_UTILS_EXPORT const char * MLDebugGetEnvName(MLuint32 envNameIdx)
Get pointer to nth debug environment name.
ML_UTILS_EXPORT MLuint32 MLGetTraceDumpMessageBits()
Returns the trace dump bit mask.
ML_UTILS_EXPORT MLErrorCode MLEnableFullDebugging(MLuint32 enable)
If enable is 1, all debug messages are handled by the ML errorOutput and passed to the output channel...
ML_UTILS_EXPORT MLThreadId _MLMainThreadId
The thread id that the ML considers to be the main thread, it is exported for performance reasons and...
ML_UTILS_EXPORT void * MLGetEventFilterApplicationHookCBUserData()
Returns the user data for the current MLEventFilterApplicationHookCB.
ML_UTILS_EXPORT const MLApplicationPropertyCallbacks * MLGetApplicationPropertiesHook()
Returns access to the application property callbacks.
ML_UTILS_EXPORT char * MLStrDup(const char *str, MLMemoryErrorHandling handleFailure)
Copies the passed null terminated string str in a newly allocated buffer which must be freed by the c...
ML_UTILS_EXPORT MLuint32 MLGetNumErrorCodes()
Returns the number of available error codes.
ML_UTILS_EXPORT void MLSetMessageFilter(MLuint32 messageTypes)
Sets messages to be handled by MLErrorOutput as set bits in messageType.
ML_UTILS_EXPORT int MLSetHighPrecisionMessageTimeStampsEnabled(int enabled)
Sets if high precision message time stamps, which provide microseconds, are enabled.
ML_UTILS_EXPORT char * MLDoubleToStringCopy(double doubleValue)
Returns a double value doubleValue as C-String.
ML_UTILS_EXPORT void MLFreeMemoryManagerCallback(void *ptr, const size_t size, void *userData)
ML_UTILS_EXPORT void MLPrintAndNotifyFatal(const char *file, int line, MLErrorCode errCode)
Like MLPrintAndNotify, where messageType is ML_FATAL, libraryPrefix is "ML", fPrefix,...
ML_UTILS_EXPORT MLint32 MLCompareThreadIDs(const MLThreadId &id1, const MLThreadId &id2)
Returns 1 if the thread ids id1 and id2 reference the same thread, 0 otherwise.
ML_UTILS_EXPORT void * MLStringToPtr(const char *valueString, int postError, const char *errFunc)
Converts the valueString to a 32 or 64 bit pointer if possible by parsing it a 64 bit unsigned intege...
ML_UTILS_EXPORT void MLSwapBytes(unsigned char *data, size_t numBytes, size_t dTypeSize)
Takes numBytes starting at position data and swaps byte 0 with byte numBytes - 1, byte 1 with numByte...
ML_UTILS_EXPORT void MLGetMessageCB(void **userData, MLMessageCB **callback)
Get the currently registered message callback.
ML_UTILS_EXPORT MLint32 MLIsNotifyEnabled()
Returns 1 if MLNotify is enabled, 0 otherwise.
ML_UTILS_EXPORT void * MLMemDup(const void *src, MLuint numBytes, MLMemoryErrorHandling handleFailure)
Copies the memory pointed to by src of size numBytes in a newly allocated buffer which must be freed ...
ML_UTILS_EXPORT MLErrorCode MLAddNewErrorCodeDescription(const char *errorString)
Adds a new (null terminated) error code errorString to the existing error codes and return a positive...
ML_UTILS_EXPORT void _MLSetMultithreadingActive(MLint32 isActive)
Pass 1 to specify that more than one ML thread is running, otherwise pass 0.
ML_UTILS_EXPORT MLErrorCode MLEnableExceptionHandling(MLuint32 enable)
If 1 is passed, exception handling is activated, if 0 is passed, exception catching is disabled.
ML_UTILS_EXPORT MLint32 MLIsLittleEndian()
Returns 1(=true) if machine is little endian; otherwise 0(=false) is returned.
ML_UTILS_EXPORT void MLFree(void *ptr)
Free function to be use instead of free if code is written which uses/bases on the ML.
Defines all callbacks that an application has to support for property access.