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
22 extern "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 
151 ML_UTILS_EXPORT void MLSetThreadName(const char* threadName);
152 
154 
155 
156 //-----------------------------------------------------------------------------------
157 //
160 //
161 //-----------------------------------------------------------------------------------
162 
168 ML_UTILS_EXPORT char* MLIntToStringCopy(int intValue);
169 
176 
182 ML_UTILS_EXPORT char* MLDoubleToStringCopy(double doubleValue);
184 
185 
186 
187 //--------------------------------------------------------------------------------------------------
188 //
191 //
192 //--------------------------------------------------------------------------------------------------
193 
198 [[nodiscard]]
199 ML_UTILS_EXPORT void* MLAlloc(MLuint numBytes, MLMemoryErrorHandling handleFailure);
200 
206 [[nodiscard]]
207 ML_UTILS_EXPORT void* MLRealloc(void* ptr, MLuint numBytes, MLMemoryErrorHandling handleFailure);
208 
213 ML_UTILS_EXPORT void MLFree(void* ptr);
214 ML_UTILS_EXPORT void MLFreeMemoryManagerCallback(void* ptr, const size_t size, void* userData);
216 
222 [[nodiscard]]
223 ML_UTILS_EXPORT void* MLMemDup(const void* src, MLuint numBytes, MLMemoryErrorHandling handleFailure);
224 
228 [[nodiscard]]
229 ML_UTILS_EXPORT char* MLStrDup(const char* str, MLMemoryErrorHandling handleFailure);
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)
278 ML_UTILS_EXPORT void MLSetMessageCB(void* userData, MLMessageCB* callback);
279 
283 ML_UTILS_EXPORT void MLGetMessageCB(void** userData, MLMessageCB** callback);
285 
286 
287 
288 //-----------------------------------------------------------------------------------
289 //
292 //
293 //-----------------------------------------------------------------------------------
296 ML_UTILS_EXPORT void MLDebugAddEnvName(const char* envName);
297 
301 ML_UTILS_EXPORT void MLDebugRemoveEnvName(const char* envName);
302 
306 
309 ML_UTILS_EXPORT const char * MLDebugGetEnvName(MLuint32 envNameIdx);
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,
353  MLErrorCode errCode);
354 
359  int line,
360  MLErrorCode errCode);
361 
369 ML_UTILS_EXPORT void MLHandleDebugPrint(const char* envVar,
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 
470  MLuint32 fromMessageId, MLuint32 toMessageId);
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 
565 ML_UTILS_EXPORT void* MLStringToPtr(const char* valueString, int postError, const char* errFunc);
567 
568 
569 
570 //--------------------------------------------------------------------------------------------------
571 //
574 //
575 //--------------------------------------------------------------------------------------------------
578 
582 ML_UTILS_EXPORT void MLMakeLittleEndian(unsigned char* data, size_t numBytes, size_t dTypeSize);
583 
587 ML_UTILS_EXPORT void MLMakeBigEndian(unsigned char* data, size_t numBytes, size_t dTypeSize);
588 
594 ML_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:818
MLTerminator
Termination types for error handling.
Definition: mlTypeDefs.h:1162
@ MLNumTerminators
Definition: mlTypeDefs.h:1167
MLMemoryErrorHandling
Enumerator to specify memory error handling.
Definition: mlTypeDefs.h:778
MLuint32 MLThreadId
Definition: mlTypeDefs.h:706
unsigned int MLuint32
Definition: mlTypeDefs.h:191
MLuint64 MLuint
An unsigned ML integer type with at least 64 bits used for index calculations on very large images ev...
Definition: mlTypeDefs.h:594
void MLEventFilterApplicationHookCB(void *applicationUsrData, MLEventFilterApplicationMessage type, MLEventFilterCB *cb, void *usrData, MLuint32 fromMessageId, MLuint32 toMessageId)
Internal application event filter callback type.
Definition: mlTypeDefs.h:1389
INT64 MLint64
Include 64 bit integer support for Windows or Unix.
Definition: mlTypeDefs.h:500
void MLMessageCB(void *usrData, MLErrorCode errCode, MLMessageType messageType, const char *messStr, int line, const char **infos)
Handling/setting/getting of ML messages callbacks.
Definition: mlTypeDefs.h:1289
MLint32 MLEventFilterCB(void *usrData, void *event)
Callback function type for events that are passed to the user.
Definition: mlTypeDefs.h:1352
signed int MLint32
Definition: mlTypeDefs.h:167
MLMessageType
Message types handled by the ErrorOutput class.
Definition: mlTypeDefs.h:798
#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 void * MLAlloc(MLuint numBytes, MLMemoryErrorHandling handleFailure)
Allocates a memory block of numBytes.
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 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 char * MLInt64ToStringCopy(MLint64 int64Value)
Returns a 64 bit integer value int64Value as C-String.
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 MLuint32 MLIsExceptionHandlingEnabled()
Returns 1 if exception handling is enabled, otherwise 0 is returned.
ML_UTILS_EXPORT const char * MLDebugGetEnvName(MLuint32 envNameIdx)
Get pointer to nth debug environment name.
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 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 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 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 MLuint32 MLGetMaxNumTraceStackDumps()
Returns the maximum number of trace stack entries to be shown on fatal error outputs.
ML_UTILS_EXPORT MLEventFilterApplicationHookCB * MLGetEventFilterApplicationHookCB()
Returns the current MLEventFilterApplicationHookCB.
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 const char * MLGetErrorCodeDescription(MLErrorCode errCode)
String names for each error code.
ML_UTILS_EXPORT MLint32 MLIsMultithreadingActive()
Returns true if more than one ML thread is running, otherwise false.
ML_UTILS_EXPORT const MLApplicationPropertyCallbacks * MLGetApplicationPropertiesHook()
Returns access to the application property callbacks.
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 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 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 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 MLThreadId _MLMainThreadId
The thread id that the ML considers to be the main thread, it is exported for performance reasons and...
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 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 int MLSetHighPrecisionMessageTimeStampsEnabled(int enabled)
Sets if high precision message time stamps, which provide microseconds, are enabled.
ML_UTILS_EXPORT void MLFreeMemoryManagerCallback(void *ptr, const size_t size, void *userData)
ML_UTILS_EXPORT char * MLIntToStringCopy(int intValue)
Returns an integer value intValue as C-String.
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 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 char * MLDoubleToStringCopy(double doubleValue)
Returns a double value doubleValue as C-String.
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 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 void * MLGetEventFilterApplicationHookCBUserData()
Returns the user data for the current MLEventFilterApplicationHookCB.
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.
MLCSO_EXPORT void level(CSO *cso)
Determines the normal and the center of gravity of the given CSO.
Defines all callbacks that an application has to support for property access.
Definition: mlTypeDefs.h:1359