ML Reference
Data Types

Data types available in the ML. More...

Defines

#define ML_NUM_STANDARD_TYPES   10
 Number of available compiler/scalar data types.
#define ML_MAX_COMPONENTS_EXTENDED_TYPE   512
 Maximum number of components for extended types.
#define ML_SIZE_OF_MAX_CARRIER_TYPE   ML_MAX_COMPONENTS_EXTENDED_TYPE
#define ML_INVALID_DATA_TYPE   -1
 Defines an invalid MLDataType.

Typedefs

typedef MLint32 MLDataType
 MLDataType.
typedef MLint32 MLPhysicalDataType

Enumerations

enum  MLDataTypeIds {
  MLint8Type = 0, MLuint8Type = 1, MLint16Type = 2, MLuint16Type = 3,
  MLint32Type = 4, MLuint32Type = 5, MLfloatType = 6, MLdoubleType = 7,
  MLint64Type = 8, MLuint64Type = 9, MLComplexfType, MLComplexdType,
  MLQuaternionfType, MLQuaterniondType, MLVector2fType, MLVector2dType,
  MLVector3fType, MLVector3dType, MLVector4fType, MLVector4dType,
  MLVector5fType, MLVector5dType, MLVector6fType, MLVector6dType,
  MLVector7fType, MLVector7dType, MLVector8fType, MLVector8dType,
  MLVector9fType, MLVector9dType, MLVector10fType, MLVector10dType,
  MLVector16fType, MLVector16dType, MLVector32fType, MLVector32dType,
  MLVector64fType, MLVector64dType, MLMatrix2fType, MLMatrix2dType,
  MLMatrix3fType, MLMatrix3dType, MLMatrix4fType, MLMatrix4dType,
  MLMatrix5fType, MLMatrix5dType, MLMatrix6fType, MLMatrix6dType,
  MLVector2i8Type, MLVector2i16Type, MLVector2i32Type, MLVector2i64Type,
  MLVector3i8Type, MLVector3i16Type, MLVector3i32Type, MLVector3i64Type,
  MLVector4i8Type, MLVector4i16Type, MLVector4i32Type, MLVector4i64Type,
  MLVector5i8Type, MLVector5i16Type, MLVector5i32Type, MLVector5i64Type,
  MLVector6i8Type, MLVector6i16Type, MLVector6i32Type, MLVector6i64Type,
  MLVector7i8Type, MLVector7i16Type, MLVector7i32Type, MLVector7i64Type,
  MLVector8i8Type, MLVector8i16Type, MLVector8i32Type, MLVector8i64Type,
  MLVector9i8Type, MLVector9i16Type, MLVector9i32Type, MLVector9i64Type,
  MLVector10i8Type, MLVector10i16Type, MLVector10i32Type, MLVector10i64Type,
  MLVector16i8Type, MLVector16i16Type, MLVector16i32Type, MLVector16i64Type,
  MLVector32i8Type, MLVector32i16Type, MLVector32i32Type, MLVector32i64Type,
  MLVector64i8Type, MLVector64i16Type, MLVector64i32Type, MLVector64i64Type,
  MLldoubleType
}
 MLDataType identifiers. More...

Functions

MLEXPORT MLDataType MLGetDataTypeForRange (MLdouble *min, MLdouble *max, MLint32 preferUnsigned)
 Corrects order of *min and *max and return adequate standard data type.
MLEXPORT MLDataType MLGetDataTypeForUncorrectedRange (MLdouble min, MLdouble max, MLint32 preferUnsigned)
 Like getMLDataTypeForRange with the following differences:
MLEXPORT MLDataType MLGetRangeAndPrecisionEquivalent (MLDataType dataType)
 Returns a standard data type for dataType which has a comparable precision and range behavior.
MLEXPORT MLDataType MLGetPromotedPrecision (MLDataType datatype1, MLDataType datatype2)
 Returns one of datatype1 and datatype2 which has a higher precision.
int MLisfinite (MLdouble v)
 Returns a non-zero value if and only if its argument has a finite value.
int MLisnan (MLdouble v)
 Returns a non-zero value if and only if its argument is NaN.
template<typename DT >
DT MLAbs (const DT val)
 Defines templated MLAbs version to circumvent fabs ambiguities on different platforms.
template<typename T >
bool MLFloatValuesEqual (const T a, const T b, const T m)
 Returns true if floating point numbers a and b differ less or equal than their technically availably precision, and false otherwise.

DATA TYPE MANAGEMENT.

MLEXPORT const char ** MLDataTypeNames ()
 Thread-safety: These functions are thread-safe, as long as no new datatypes are registered after startup.
MLEXPORT size_t MLNumDataTypes ()
 Returns the current number of ML data types.
MLEXPORT const char * MLNameFromDataType (MLDataType dataType)
 Function which returns the null-terminated string name for data type dataType or "" in case of error or for an invalid data type.
MLEXPORT MLDataType MLDataTypeFromName (const char *const name)
 Returns the id of the data type with name name.
MLEXPORT MLdouble MLDataTypeMax (MLDataType dataType)
 Returns the maximum value of data type dataType or 0 if dataType is invalid.
MLEXPORT MLdouble MLDataTypeMin (MLDataType dataType)
 Returns the minimum value of data type dataType or 0 if dataType is invalid.
MLEXPORT size_t MLSizeOf (MLDataType dataType)
 Returns the size of the data type dataType in bytes.
MLEXPORT MLint32 MLRangeOrder (MLDataType dataType)
 Returns order value for a data type ranges.
MLEXPORT MLint32 MLIsValidType (MLDataType dataType)
 Returns true(=1) if data type dataType seems to be valid, otherwise 0(=false).
MLEXPORT MLint32 MLIsSigned (MLDataType dataType)
 Returns true(=1) if data type dataType is signed, otherwise 0(=false).
MLEXPORT MLint32 MLIsIntType (MLDataType dataType)
 Returns true(=1) if data type dataType is an integer data type, otherwise false(=0).
MLEXPORT MLint32 MLIsFloatType (MLDataType dataType)
 Returns true(=1) if data type dataType is a floating point data type, otherwise false(=0).
MLEXPORT MLint32 MLIsStandardType (MLDataType dataType)
 Returns true(=1) if data type dataType is a standard type, otherwise return false(=0).
MLEXPORT MLint32 MLIsDefaultExtendedType (MLDataType dataType)
 Returns true(=1) if data type dataType is one of the extended types that should be support out of the box, otherwise return false(=0).
MLEXPORT MLint32 MLHolds (MLDataType datatype1, MLDataType datatype2)
 Returns true(=1) if data type \ datatype1 can hold data type datatype2 without precision or sign loss.
MLEXPORT MLDataType MLGetPromotedType (MLDataType datatype1, MLDataType datatype2)
 Returns a data type which can hold the value ranges from datatype1 and datatype2 (including both).
MLEXPORT size_t MLSizeOfRegisteredType (MLDataType dataType)
 Compatibility function - obsolete, use MLSizeOf instead!
MLEXPORT MLTypeGroup MLGetTypeGroup (MLDataType dataType)
 Get the type group to which the given type belongs.
MLEXPORT MLDataType MLGetPromotedTypeWithRange (const MLDataType *inputTypes, size_t numTypes, double rangeMin, double rangeMax)
 New routine for type promotion that takes a list of input types and the target value range to find a resulting data type.
MLEXPORT MLDataType MLGetPromotedTypeWithRange1Input (MLDataType inputType1, double rangeMin, double rangeMax)
 Convenience function for MLGetPromotedTypeWithRange with 1 input.
MLEXPORT MLDataType MLGetPromotedTypeWithRange2Inputs (MLDataType inputType1, MLDataType inputType2, double rangeMin, double rangeMax)
 Convenience function for MLGetPromotedTypeWithRange with 2 inputs.
MLEXPORT MLDataType MLGetPromotedTypeWithRange3Inputs (MLDataType inputType1, MLDataType inputType2, MLDataType inputType3, double rangeMin, double rangeMax)
 Convenience function for MLGetPromotedTypeWithRange with 3 inputs.

Physical data type management

MLEXPORT size_t MLSizeOfPhysicalType (MLDataType physicalDataType)
MLEXPORT MLDataType MLGetPhysicalDataType (MLDataType dataType)
MLint8 MLTypeRangeMax (MLint8)
 Returns maximum range of the data type of any passed standard data type value.
MLuint8 MLTypeRangeMax (MLuint8)
MLint16 MLTypeRangeMax (MLint16)
MLuint16 MLTypeRangeMax (MLuint16)
MLint32 MLTypeRangeMax (MLint32)
MLuint32 MLTypeRangeMax (MLuint32)
MLfloat MLTypeRangeMax (MLfloat)
MLdouble MLTypeRangeMax (MLdouble)
MLldouble MLTypeRangeMax (MLldouble)
MLuint64 MLTypeRangeMax (MLuint64)
MLint64 MLTypeRangeMax (MLint64)
MLint8 MLTypeRangeMin (MLint8)
 Returns minimum range of the data type of any passed standard data type value.
MLuint8 MLTypeRangeMin (MLuint8)
MLint16 MLTypeRangeMin (MLint16)
MLuint16 MLTypeRangeMin (MLuint16)
MLint32 MLTypeRangeMin (MLint32)
MLuint32 MLTypeRangeMin (MLuint32)
MLfloat MLTypeRangeMin (MLfloat)
MLdouble MLTypeRangeMin (MLdouble)
MLldouble MLTypeRangeMin (MLldouble)
MLuint64 MLTypeRangeMin (MLuint64)
MLint64 MLTypeRangeMin (MLint64)
MLint8 MLTypeMinDifference (MLint8)
 Returns minimum range between two values which should be considered significant.
MLuint8 MLTypeMinDifference (MLuint8)
MLint16 MLTypeMinDifference (MLint16)
MLuint16 MLTypeMinDifference (MLuint16)
MLint32 MLTypeMinDifference (MLint32)
MLuint32 MLTypeMinDifference (MLuint32)
MLfloat MLTypeMinDifference (MLfloat)
MLdouble MLTypeMinDifference (MLdouble)
MLldouble MLTypeMinDifference (MLldouble)
MLuint64 MLTypeMinDifference (MLuint64)
MLint64 MLTypeMinDifference (MLint64)
MLfloat MLfabs (MLfloat v)
 fabs functions to implement type and platform independent MLabs function.
MLdouble MLfabs (MLdouble v)
MLldouble MLfabs (MLldouble v)
bool MLValuesAreEqual (MLint8 a, MLint8 b, MLint8)
 Returns true if values are equal (numerically safely compared), otherwise false.
bool MLValuesAreEqual (MLuint8 a, MLuint8 b, MLuint8)
bool MLValuesAreEqual (MLint16 a, MLint16 b, MLint16)
bool MLValuesAreEqual (MLuint16 a, MLuint16 b, MLuint16)
bool MLValuesAreEqual (MLint32 a, MLint32 b, MLint32)
bool MLValuesAreEqual (MLuint32 a, MLuint32 b, MLuint32)
bool MLValuesAreEqual (MLfloat a, MLfloat b, MLfloat m)
bool MLValuesAreEqual (MLdouble a, MLdouble b, MLdouble m)
bool MLValuesAreEqual (MLldouble a, MLldouble b, MLldouble m)
bool MLValuesAreEqual (MLuint64 a, MLuint64 b, MLuint64)
bool MLValuesAreEqual (MLint64 a, MLint64 b, MLint64)
template<typename T1 , typename T2 >
bool MLValuesAreEqual (T1 a, T2 b, MLint64)
bool MLValuesDiffer (MLint8 a, MLint8 b, MLint8)
 Returns true if values differ (numerically safely compared), otherwise false.
bool MLValuesDiffer (MLuint8 a, MLuint8 b, MLuint8)
bool MLValuesDiffer (MLint16 a, MLint16 b, MLint16)
bool MLValuesDiffer (MLuint16 a, MLuint16 b, MLuint16)
bool MLValuesDiffer (MLint32 a, MLint32 b, MLint32)
bool MLValuesDiffer (MLuint32 a, MLuint32 b, MLuint32)
bool MLValuesDiffer (MLfloat a, MLfloat b, MLfloat m)
bool MLValuesDiffer (MLdouble a, MLdouble b, MLdouble m)
bool MLValuesDiffer (MLldouble a, MLldouble b, MLldouble m)
bool MLValuesDiffer (MLuint64 a, MLuint64 b, MLuint64)
bool MLValuesDiffer (MLint64 a, MLint64 b, MLint64)
template<typename T1 , typename T2 >
bool MLValuesDiffer (T1 a, T2 b, MLint64)
bool MLValuesAreEqualWOM (MLint8 a, MLint8 b)
 Returns true if values a and b are equal, otherwise false.
bool MLValuesAreEqualWOM (MLuint8 a, MLuint8 b)
bool MLValuesAreEqualWOM (MLint16 a, MLint16 b)
bool MLValuesAreEqualWOM (MLuint16 a, MLuint16 b)
bool MLValuesAreEqualWOM (MLint32 a, MLint32 b)
bool MLValuesAreEqualWOM (MLuint32 a, MLuint32 b)
bool MLValuesAreEqualWOM (MLfloat a, MLfloat b)
bool MLValuesAreEqualWOM (MLdouble a, MLdouble b)
bool MLValuesAreEqualWOM (MLldouble a, MLldouble b)
bool MLValuesAreEqualWOM (MLuint64 a, MLuint64 b)
bool MLValuesAreEqualWOM (MLint64 a, MLint64 b)
template<typename T1 , typename T2 >
bool MLValuesAreEqualWOM (T1 a, T2 b)
bool MLValuesDifferWOM (MLint8 a, MLint8 b)
 Returns true if values differ, otherwise false.
bool MLValuesDifferWOM (MLuint8 a, MLuint8 b)
bool MLValuesDifferWOM (MLint16 a, MLint16 b)
bool MLValuesDifferWOM (MLuint16 a, MLuint16 b)
bool MLValuesDifferWOM (MLint32 a, MLint32 b)
bool MLValuesDifferWOM (MLuint32 a, MLuint32 b)
bool MLValuesDifferWOM (MLfloat a, MLfloat b)
bool MLValuesDifferWOM (MLdouble a, MLdouble b)
bool MLValuesDifferWOM (MLldouble a, MLldouble b)
bool MLValuesDifferWOM (MLuint64 a, MLuint64 b)
bool MLValuesDifferWOM (MLint64 a, MLint64 b)
template<typename T1 , typename T2 >
bool MLValuesDifferWOM (T1 a, T2 b)
bool MLValueIs0WOM (MLint8 a)
 Returns true if value is 0, otherwise false.
bool MLValueIs0WOM (MLuint8 a)
bool MLValueIs0WOM (MLint16 a)
bool MLValueIs0WOM (MLuint16 a)
bool MLValueIs0WOM (MLint32 a)
bool MLValueIs0WOM (MLuint32 a)
bool MLValueIs0WOM (MLfloat a)
bool MLValueIs0WOM (MLdouble a)
bool MLValueIs0WOM (MLldouble a)
bool MLValueIs0WOM (MLuint64 a)
bool MLValueIs0WOM (MLint64 a)
template<typename T1 >
bool MLValueIs0WOM (T1 a)

Detailed Description

Data types available in the ML.


Define Documentation

#define ML_INVALID_DATA_TYPE   -1

Defines an invalid MLDataType.

Definition at line 739 of file mlTypeDefs.h.

Referenced by ml::TSubImage< DATATYPE >::TSubImage().

#define ML_MAX_COMPONENTS_EXTENDED_TYPE   512

Maximum number of components for extended types.

Definition at line 281 of file mlTypeDefs.h.

#define ML_NUM_STANDARD_TYPES   10

Number of available compiler/scalar data types.

Definition at line 275 of file mlTypeDefs.h.

#define ML_SIZE_OF_MAX_CARRIER_TYPE   ML_MAX_COMPONENTS_EXTENDED_TYPE
Deprecated:
Compatibility value

Definition at line 289 of file mlTypeDefs.h.


Typedef Documentation

MLDataType.

An enum for all data types, predefined compiler (scalar) types and registered types.

Definition at line 708 of file mlTypeDefs.h.

Deprecated:
use MLDataType instead.

Definition at line 716 of file mlTypeDefs.h.


Enumeration Type Documentation

MLDataType identifiers.

Defines enumerations for all data types used by the ML by default.

Enumerator:
MLint8Type 

Enumerator for the signed 8 bit ML integer type.

MLuint8Type 

Enumerator for the unsigned 8 bit ML integer type.

MLint16Type 

Enumerator for the signed 16 bit ML integer type.

MLuint16Type 

Enumerator for the unsigned 16 bit ML integer type.

MLint32Type 

Enumerator for the signed 32 bit ML integer type.

MLuint32Type 

Enumerator for the unsigned 32 bit ML integer type.

MLfloatType 

Enumerator for the signed 32 bit ML floating point type.

MLdoubleType 

Enumerator for the signed 64 bit ML floating point type.

MLint64Type 

Enumerator for the signed 64 bit ML integer type.

MLuint64Type 

Enumerator for the unsigned 64 bit ML integer type.

MLComplexfType 
MLComplexdType 
MLQuaternionfType 
MLQuaterniondType 
MLVector2fType 
MLVector2dType 
MLVector3fType 
MLVector3dType 
MLVector4fType 
MLVector4dType 
MLVector5fType 
MLVector5dType 
MLVector6fType 
MLVector6dType 
MLVector7fType 
MLVector7dType 
MLVector8fType 
MLVector8dType 
MLVector9fType 
MLVector9dType 
MLVector10fType 
MLVector10dType 
MLVector16fType 
MLVector16dType 
MLVector32fType 
MLVector32dType 
MLVector64fType 
MLVector64dType 
MLMatrix2fType 
MLMatrix2dType 
MLMatrix3fType 
MLMatrix3dType 
MLMatrix4fType 
MLMatrix4dType 
MLMatrix5fType 
MLMatrix5dType 
MLMatrix6fType 
MLMatrix6dType 
MLVector2i8Type 
MLVector2i16Type 
MLVector2i32Type 
MLVector2i64Type 
MLVector3i8Type 
MLVector3i16Type 
MLVector3i32Type 
MLVector3i64Type 
MLVector4i8Type 
MLVector4i16Type 
MLVector4i32Type 
MLVector4i64Type 
MLVector5i8Type 
MLVector5i16Type 
MLVector5i32Type 
MLVector5i64Type 
MLVector6i8Type 
MLVector6i16Type 
MLVector6i32Type 
MLVector6i64Type 
MLVector7i8Type 
MLVector7i16Type 
MLVector7i32Type 
MLVector7i64Type 
MLVector8i8Type 
MLVector8i16Type 
MLVector8i32Type 
MLVector8i64Type 
MLVector9i8Type 
MLVector9i16Type 
MLVector9i32Type 
MLVector9i64Type 
MLVector10i8Type 
MLVector10i16Type 
MLVector10i32Type 
MLVector10i64Type 
MLVector16i8Type 
MLVector16i16Type 
MLVector16i32Type 
MLVector16i64Type 
MLVector32i8Type 
MLVector32i16Type 
MLVector32i32Type 
MLVector32i64Type 
MLVector64i8Type 
MLVector64i16Type 
MLVector64i32Type 
MLVector64i64Type 
MLldoubleType 

Definition at line 745 of file mlTypeDefs.h.


Function Documentation

template<typename DT >
DT MLAbs ( const DT  val) [inline]
MLEXPORT MLDataType MLDataTypeFromName ( const char *const  name)

Returns the id of the data type with name name.

If name is not valid then ML_INVALID_DATA_TYPE is returned.

MLEXPORT MLdouble MLDataTypeMax ( MLDataType  dataType)

Returns the maximum value of data type dataType or 0 if dataType is invalid.

MLEXPORT MLdouble MLDataTypeMin ( MLDataType  dataType)

Returns the minimum value of data type dataType or 0 if dataType is invalid.

MLEXPORT const char** MLDataTypeNames ( )

Thread-safety: These functions are thread-safe, as long as no new datatypes are registered after startup.

Function which returns the table of c-strings of all scalar and registered data types. The returned array is usually stable unless new data types are registered.

MLdouble MLfabs ( MLdouble  v) [inline]

Definition at line 85 of file mlTypeDefTraits.h.

MLldouble MLfabs ( MLldouble  v) [inline]

Definition at line 86 of file mlTypeDefTraits.h.

MLfloat MLfabs ( MLfloat  v) [inline]

fabs functions to implement type and platform independent MLabs function.

Definition at line 84 of file mlTypeDefTraits.h.

Referenced by MLFloatValuesEqual(), MLValueIs0WOM(), MLValuesAreEqualWOM(), and MLValuesDifferWOM().

template<typename T >
bool MLFloatValuesEqual ( const T  a,
const T  b,
const T  m 
) [inline]

Returns true if floating point numbers a and b differ less or equal than their technically availably precision, and false otherwise.

For a sensible comparison the available precision of the floating point number needs to be scaled to the order of magnitude m in which the two compared numbers reside. This becomes understandably when looking to the following example: The minimal technically difference between two double numbers near 1 are given by the constant DBL_EPSILON which is about 10e-16 in many systems. The technically available difference between numbers around 10e200 is DBL_EPSILON * 10e200 which is about 10e-16 * 10e200 = 10e184. Thus numbers which differ less than 10e184 are technically equal. This concept also holds for very small numbers. Thus m should be a value from the range in which a and b normally occur.

Definition at line 141 of file mlTypeDefTraits.h.

References MLfabs(), and MLTypeMinDifference().

Referenced by MLValuesAreEqual(), and MLValuesDiffer().

MLEXPORT MLDataType MLGetDataTypeForRange ( MLdouble min,
MLdouble max,
MLint32  preferUnsigned 
)

Corrects order of *min and *max and return adequate standard data type.

If *min == *max, *max = *min+1 is returned. If preferUnsigned is true (not 0), unsigned data types are preferred instead of signed types if both are sensible responses for the range given by [*min, *max]. Float values are chosen if -integer ranges are not sufficient or -difference between min and max is smaller or equal 1. Examples: [min,max]=[3, 5] : 8 bit (unsigned) integer [min,max]=[3.1, 5] : 8 bit (unsigned) integer [min,max]=[1,2] : Float [min,max]=[1,3] : 8 bit (unsigned) integer [min,max]=[10,2000] : 16 bit (unsigned) integer [min,max]=[10,1831.1] : 16 bit (unsigned) integer [min,max]=[-1,1] : 8 bit signed integer [min,max]=[0,0] : 8 bit signed integer where max becomes 1. If min or max pointer is invalid then MLdoubleType is returned.

MLEXPORT MLDataType MLGetDataTypeForUncorrectedRange ( MLdouble  min,
MLdouble  max,
MLint32  preferUnsigned 
)

Like getMLDataTypeForRange with the following differences:

  • min / max is not changed even if invalid.
  • min / max order is corrected only internally but max is not incremented even if min and max are equal.
MLEXPORT MLDataType MLGetPhysicalDataType ( MLDataType  dataType)
Deprecated:
This function simply returns its argument
MLEXPORT MLDataType MLGetPromotedPrecision ( MLDataType  datatype1,
MLDataType  datatype2 
)

Returns one of datatype1 and datatype2 which has a higher precision.

On equal precisions, the one with higher range is returned. On equal precisions and equal ranges, datatype1 is returned. For registered data types, the MLPrecisionEquivalent is used for comparison.

MLEXPORT MLDataType MLGetPromotedType ( MLDataType  datatype1,
MLDataType  datatype2 
)

Returns a data type which can hold the value ranges from datatype1 and datatype2 (including both).

If the resulting type cannot be determined or one of the parameters is invalid then ML_INVALID_DATA_TYPE is returned. (This happens e.g., if MLdoubleType and complex<float> shall be merged but complex<float> cannot hold double and double cannot hold complex<float> and both have no conversion types which could be used instead.)

MLEXPORT MLDataType MLGetPromotedTypeWithRange ( const MLDataType inputTypes,
size_t  numTypes,
double  rangeMin,
double  rangeMax 
)

New routine for type promotion that takes a list of input types and the target value range to find a resulting data type.

It does so in 2-3 steps:
Step1: Find a common base type for the input types. (For extended types the component types are regarded separately.)
Rules: If all input types are integer, use an integer type, else a float type. Use a signed integer if at least one input integer type is signed. Use a type with the byte size of the type with the biggest byte size. (This means that int32 and float will give float, but int64 and float will give double).
Step2: Promote the common base type to cover the target value range.
Rules: If the common base type is integer, try to stay integer. If the common base type is unsigned, try to stay unsigned, otherwise use signed.
If the common base type was a scalar type this is the result, else there follows
Step3: Select an extended type to cover the common component types. Rules: The type must have the same number of components and the same type group as the first type that had the maximum number of components (e.g. when mixing complex and vec2 the first one wins, when mixing complex and vec3 the second wins - because it had more components). Select the "smallest" possible type that can hold the components as determined with step 1 and 2. If no such type can be found, fall back to the first input type that had the maximum number of components).

MLEXPORT MLDataType MLGetPromotedTypeWithRange1Input ( MLDataType  inputType1,
double  rangeMin,
double  rangeMax 
)

Convenience function for MLGetPromotedTypeWithRange with 1 input.

MLEXPORT MLDataType MLGetPromotedTypeWithRange2Inputs ( MLDataType  inputType1,
MLDataType  inputType2,
double  rangeMin,
double  rangeMax 
)

Convenience function for MLGetPromotedTypeWithRange with 2 inputs.

MLEXPORT MLDataType MLGetPromotedTypeWithRange3Inputs ( MLDataType  inputType1,
MLDataType  inputType2,
MLDataType  inputType3,
double  rangeMin,
double  rangeMax 
)

Convenience function for MLGetPromotedTypeWithRange with 3 inputs.

MLEXPORT MLDataType MLGetRangeAndPrecisionEquivalent ( MLDataType  dataType)

Returns a standard data type for dataType which has a comparable precision and range behavior.

If dataType is a standard data type then dataType is returned. For invalid data types ML_INVALID_DATA_TYPE is returned.

MLEXPORT MLTypeGroup MLGetTypeGroup ( MLDataType  dataType)

Get the type group to which the given type belongs.

Different type groups usually have different semantics.

MLEXPORT MLint32 MLHolds ( MLDataType  datatype1,
MLDataType  datatype2 
)

Returns true(=1) if data type \ datatype1 can hold data type datatype2 without precision or sign loss.

It is assumed that all float types can hold any integer type. Note: This is not really correct for 32/64 bit integers and float!

MLEXPORT MLint32 MLIsDefaultExtendedType ( MLDataType  dataType)

Returns true(=1) if data type dataType is one of the extended types that should be support out of the box, otherwise return false(=0).

int MLisfinite ( MLdouble  v) [inline]

Returns a non-zero value if and only if its argument has a finite value.

Definition at line 91 of file mlTypeDefTraits.h.

References __ML_1ST_WINDOWS_2ND_UNIX_FUNCTION.

MLEXPORT MLint32 MLIsFloatType ( MLDataType  dataType)

Returns true(=1) if data type dataType is a floating point data type, otherwise false(=0).

MLEXPORT MLint32 MLIsIntType ( MLDataType  dataType)

Returns true(=1) if data type dataType is an integer data type, otherwise false(=0).

Referenced by ml::TScaleShiftData< MLdouble >::setFromMinMaxToMinMax().

int MLisnan ( MLdouble  v) [inline]

Returns a non-zero value if and only if its argument is NaN.

Definition at line 95 of file mlTypeDefTraits.h.

References __ML_1ST_WINDOWS_2ND_UNIX_FUNCTION.

MLEXPORT MLint32 MLIsSigned ( MLDataType  dataType)

Returns true(=1) if data type dataType is signed, otherwise 0(=false).

MLEXPORT MLint32 MLIsStandardType ( MLDataType  dataType)

Returns true(=1) if data type dataType is a standard type, otherwise return false(=0).

MLEXPORT MLint32 MLIsValidType ( MLDataType  dataType)

Returns true(=1) if data type dataType seems to be valid, otherwise 0(=false).

MLEXPORT const char* MLNameFromDataType ( MLDataType  dataType)

Function which returns the null-terminated string name for data type dataType or "" in case of error or for an invalid data type.

Referenced by ml::internal::TypedHandlerBase< ProcessAllPagesHandler, Derived, NumberOfInputImages >::verifyProperties().

MLEXPORT size_t MLNumDataTypes ( )

Returns the current number of ML data types.

The returned value changes when new data types are registered.

MLEXPORT MLint32 MLRangeOrder ( MLDataType  dataType)

Returns order value for a data type ranges.

They are useful for precision comparison. Low ranges return low values, same ranges return same values, large ranges return large values. So e.g., ML_RANGE_ORDER(MLint8Type)==ML_RANGE_ORDER(MLuint8Type) (both 256) are identical, but ML_RANGE_ORDER(MLint8Type) < ML_RANGE_ORDER(MLfloatType) (256 <-> about 10e35). If dataType is a registered data type, its MLGetRangeAndPrecisionEquivalent is used for range order determination. If an invalid data type is passed, -1 is returned.

MLEXPORT size_t MLSizeOf ( MLDataType  dataType)

Returns the size of the data type dataType in bytes.

On invalid types 0 is returned.

Referenced by ml::TSubImage< DATATYPE >::copySubImageTyped(), ml::ImageProperties::getSizeInBytes(), and ml::SubImage::setDataType().

MLEXPORT size_t MLSizeOfPhysicalType ( MLDataType  physicalDataType)
Deprecated:
Use MLSizeOf instead
MLEXPORT size_t MLSizeOfRegisteredType ( MLDataType  dataType)

Compatibility function - obsolete, use MLSizeOf instead!

MLuint16 MLTypeMinDifference ( MLuint16  ) [inline]

Definition at line 71 of file mlTypeDefTraits.h.

MLint32 MLTypeMinDifference ( MLint32  ) [inline]

Definition at line 72 of file mlTypeDefTraits.h.

MLuint32 MLTypeMinDifference ( MLuint32  ) [inline]

Definition at line 73 of file mlTypeDefTraits.h.

MLfloat MLTypeMinDifference ( MLfloat  ) [inline]

Definition at line 74 of file mlTypeDefTraits.h.

References ML_FLOAT_EPSILON.

MLdouble MLTypeMinDifference ( MLdouble  ) [inline]

Definition at line 75 of file mlTypeDefTraits.h.

References ML_DOUBLE_EPSILON.

MLldouble MLTypeMinDifference ( MLldouble  ) [inline]

Definition at line 76 of file mlTypeDefTraits.h.

References ML_LDOUBLE_EPSILON.

MLuint64 MLTypeMinDifference ( MLuint64  ) [inline]

Definition at line 77 of file mlTypeDefTraits.h.

MLint64 MLTypeMinDifference ( MLint64  ) [inline]

Definition at line 78 of file mlTypeDefTraits.h.

MLint8 MLTypeMinDifference ( MLint8  ) [inline]

Returns minimum range between two values which should be considered significant.

Definition at line 68 of file mlTypeDefTraits.h.

Referenced by MLFloatValuesEqual().

MLuint8 MLTypeMinDifference ( MLuint8  ) [inline]

Definition at line 69 of file mlTypeDefTraits.h.

MLint16 MLTypeMinDifference ( MLint16  ) [inline]

Definition at line 70 of file mlTypeDefTraits.h.

MLuint8 MLTypeRangeMax ( MLuint8  ) [inline]

Definition at line 37 of file mlTypeDefTraits.h.

References ML_UINT8_MAX.

MLint16 MLTypeRangeMax ( MLint16  ) [inline]

Definition at line 38 of file mlTypeDefTraits.h.

References ML_INT16_MAX.

MLuint16 MLTypeRangeMax ( MLuint16  ) [inline]

Definition at line 39 of file mlTypeDefTraits.h.

References ML_UINT16_MAX.

MLint32 MLTypeRangeMax ( MLint32  ) [inline]

Definition at line 40 of file mlTypeDefTraits.h.

References ML_INT32_MAX.

MLint8 MLTypeRangeMax ( MLint8  ) [inline]

Returns maximum range of the data type of any passed standard data type value.

Definition at line 36 of file mlTypeDefTraits.h.

References ML_INT8_MAX.

MLuint32 MLTypeRangeMax ( MLuint32  ) [inline]

Definition at line 41 of file mlTypeDefTraits.h.

References ML_UINT32_MAX.

MLfloat MLTypeRangeMax ( MLfloat  ) [inline]

Definition at line 42 of file mlTypeDefTraits.h.

References ML_FLOAT_MAX.

MLdouble MLTypeRangeMax ( MLdouble  ) [inline]

Definition at line 43 of file mlTypeDefTraits.h.

References ML_DOUBLE_MAX.

MLldouble MLTypeRangeMax ( MLldouble  ) [inline]

Definition at line 44 of file mlTypeDefTraits.h.

References ML_LDOUBLE_MAX.

MLuint64 MLTypeRangeMax ( MLuint64  ) [inline]

Definition at line 45 of file mlTypeDefTraits.h.

References ML_UINT64_MAX.

MLint64 MLTypeRangeMax ( MLint64  ) [inline]

Definition at line 46 of file mlTypeDefTraits.h.

References ML_INT64_MAX.

MLint8 MLTypeRangeMin ( MLint8  ) [inline]

Returns minimum range of the data type of any passed standard data type value.

Definition at line 52 of file mlTypeDefTraits.h.

References ML_INT8_MIN.

MLuint8 MLTypeRangeMin ( MLuint8  ) [inline]

Definition at line 53 of file mlTypeDefTraits.h.

References ML_UINT8_MIN.

MLint16 MLTypeRangeMin ( MLint16  ) [inline]

Definition at line 54 of file mlTypeDefTraits.h.

References ML_INT16_MIN.

MLuint16 MLTypeRangeMin ( MLuint16  ) [inline]

Definition at line 55 of file mlTypeDefTraits.h.

References ML_UINT16_MIN.

MLint32 MLTypeRangeMin ( MLint32  ) [inline]

Definition at line 56 of file mlTypeDefTraits.h.

References ML_INT32_MIN.

MLuint32 MLTypeRangeMin ( MLuint32  ) [inline]

Definition at line 57 of file mlTypeDefTraits.h.

References ML_UINT32_MIN.

MLfloat MLTypeRangeMin ( MLfloat  ) [inline]

Definition at line 58 of file mlTypeDefTraits.h.

References ML_FLOAT_MAX.

MLdouble MLTypeRangeMin ( MLdouble  ) [inline]

Definition at line 59 of file mlTypeDefTraits.h.

References ML_DOUBLE_MAX.

MLldouble MLTypeRangeMin ( MLldouble  ) [inline]

Definition at line 60 of file mlTypeDefTraits.h.

References ML_LDOUBLE_MAX.

MLuint64 MLTypeRangeMin ( MLuint64  ) [inline]

Definition at line 61 of file mlTypeDefTraits.h.

References ML_UINT64_MIN.

MLint64 MLTypeRangeMin ( MLint64  ) [inline]

Definition at line 62 of file mlTypeDefTraits.h.

References ML_INT64_MIN.

template<typename T1 >
bool MLValueIs0WOM ( T1  a) [inline]

Definition at line 243 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLldouble  a) [inline]

Definition at line 237 of file mlTypeDefTraits.h.

References ML_LDOUBLE_MIN, and MLfabs().

bool MLValueIs0WOM ( MLfloat  a) [inline]

Definition at line 235 of file mlTypeDefTraits.h.

References ML_FLOAT_MIN, and MLfabs().

bool MLValueIs0WOM ( MLuint8  a) [inline]

Definition at line 230 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLint16  a) [inline]

Definition at line 231 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLint64  a) [inline]

Definition at line 239 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLuint64  a) [inline]

Definition at line 238 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLint32  a) [inline]

Definition at line 233 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLuint32  a) [inline]

Definition at line 234 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLuint16  a) [inline]

Definition at line 232 of file mlTypeDefTraits.h.

bool MLValueIs0WOM ( MLdouble  a) [inline]

Definition at line 236 of file mlTypeDefTraits.h.

References ML_DOUBLE_MIN, and MLfabs().

bool MLValuesAreEqual ( MLint32  a,
MLint32  b,
MLint32   
) [inline]

Definition at line 153 of file mlTypeDefTraits.h.

bool MLValuesAreEqual ( MLint8  a,
MLint8  b,
MLint8   
) [inline]

Returns true if values are equal (numerically safely compared), otherwise false.

For parameters see MLFloatValuesAreEqual.

Definition at line 149 of file mlTypeDefTraits.h.

Referenced by ml::TSubImage< DATATYPE >::copySubImageReorderColorPlanesToInterleaved(), and ml::TSubImage< DATATYPE >::copySubImageTyped().

bool MLValuesAreEqual ( MLuint8  a,
MLuint8  b,
MLuint8   
) [inline]

Definition at line 150 of file mlTypeDefTraits.h.

bool MLValuesAreEqual ( MLuint16  a,
MLuint16  b,
MLuint16   
) [inline]

Definition at line 152 of file mlTypeDefTraits.h.

bool MLValuesAreEqual ( MLuint32  a,
MLuint32  b,
MLuint32   
) [inline]

Definition at line 154 of file mlTypeDefTraits.h.

bool MLValuesAreEqual ( MLdouble  a,
MLdouble  b,
MLdouble  m 
) [inline]

Definition at line 156 of file mlTypeDefTraits.h.

References MLFloatValuesEqual().

bool MLValuesAreEqual ( MLuint64  a,
MLuint64  b,
MLuint64   
) [inline]

Definition at line 158 of file mlTypeDefTraits.h.

template<typename T1 , typename T2 >
bool MLValuesAreEqual ( T1  a,
T2  b,
MLint64   
) [inline]

Definition at line 163 of file mlTypeDefTraits.h.

bool MLValuesAreEqual ( MLfloat  a,
MLfloat  b,
MLfloat  m 
) [inline]

Definition at line 155 of file mlTypeDefTraits.h.

References MLFloatValuesEqual().

bool MLValuesAreEqual ( MLint64  a,
MLint64  b,
MLint64   
) [inline]

Definition at line 159 of file mlTypeDefTraits.h.

bool MLValuesAreEqual ( MLldouble  a,
MLldouble  b,
MLldouble  m 
) [inline]

Definition at line 157 of file mlTypeDefTraits.h.

References MLFloatValuesEqual().

bool MLValuesAreEqual ( MLint16  a,
MLint16  b,
MLint16   
) [inline]

Definition at line 151 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLfloat  a,
MLfloat  b 
) [inline]

Definition at line 195 of file mlTypeDefTraits.h.

References ML_FLOAT_MIN, and MLfabs().

bool MLValuesAreEqualWOM ( MLint8  a,
MLint8  b 
) [inline]

Returns true if values a and b are equal, otherwise false.

Comparison is done warn free without order of magnitude, i.e., also numerically unsafe.

Definition at line 189 of file mlTypeDefTraits.h.

Referenced by ml::MLTStdTypeInfos< VTYP >::MLTYPE_isEqualToType(), ml::TQuaternion< DT >::operator==(), and ml::TScaleShiftData< MLdouble >::operator==().

bool MLValuesAreEqualWOM ( MLint32  a,
MLint32  b 
) [inline]

Definition at line 193 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLuint16  a,
MLuint16  b 
) [inline]

Definition at line 192 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLint64  a,
MLint64  b 
) [inline]

Definition at line 199 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLint16  a,
MLint16  b 
) [inline]

Definition at line 191 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLdouble  a,
MLdouble  b 
) [inline]

Definition at line 196 of file mlTypeDefTraits.h.

References ML_DOUBLE_MIN, and MLfabs().

bool MLValuesAreEqualWOM ( MLuint32  a,
MLuint32  b 
) [inline]

Definition at line 194 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLuint64  a,
MLuint64  b 
) [inline]

Definition at line 198 of file mlTypeDefTraits.h.

template<typename T1 , typename T2 >
bool MLValuesAreEqualWOM ( T1  a,
T2  b 
) [inline]

Definition at line 203 of file mlTypeDefTraits.h.

bool MLValuesAreEqualWOM ( MLldouble  a,
MLldouble  b 
) [inline]

Definition at line 197 of file mlTypeDefTraits.h.

References ML_LDOUBLE_MIN, and MLfabs().

bool MLValuesAreEqualWOM ( MLuint8  a,
MLuint8  b 
) [inline]

Definition at line 190 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLuint16  a,
MLuint16  b,
MLuint16   
) [inline]

Definition at line 172 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLuint32  a,
MLuint32  b,
MLuint32   
) [inline]

Definition at line 174 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLint32  a,
MLint32  b,
MLint32   
) [inline]

Definition at line 173 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLint16  a,
MLint16  b,
MLint16   
) [inline]

Definition at line 171 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLuint64  a,
MLuint64  b,
MLuint64   
) [inline]

Definition at line 178 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLdouble  a,
MLdouble  b,
MLdouble  m 
) [inline]

Definition at line 176 of file mlTypeDefTraits.h.

References MLFloatValuesEqual().

template<typename T1 , typename T2 >
bool MLValuesDiffer ( T1  a,
T2  b,
MLint64   
) [inline]

Definition at line 183 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLfloat  a,
MLfloat  b,
MLfloat  m 
) [inline]

Definition at line 175 of file mlTypeDefTraits.h.

References MLFloatValuesEqual().

bool MLValuesDiffer ( MLldouble  a,
MLldouble  b,
MLldouble  m 
) [inline]

Definition at line 177 of file mlTypeDefTraits.h.

References MLFloatValuesEqual().

bool MLValuesDiffer ( MLint8  a,
MLint8  b,
MLint8   
) [inline]

Returns true if values differ (numerically safely compared), otherwise false.

For parameters see MLFloatValuesAreEqual.

Definition at line 169 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLuint8  a,
MLuint8  b,
MLuint8   
) [inline]

Definition at line 170 of file mlTypeDefTraits.h.

bool MLValuesDiffer ( MLint64  a,
MLint64  b,
MLint64   
) [inline]

Definition at line 179 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLint32  a,
MLint32  b 
) [inline]

Definition at line 213 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLint16  a,
MLint16  b 
) [inline]

Definition at line 211 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLuint8  a,
MLuint8  b 
) [inline]

Definition at line 210 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLint64  a,
MLint64  b 
) [inline]

Definition at line 219 of file mlTypeDefTraits.h.

template<typename T1 , typename T2 >
bool MLValuesDifferWOM ( T1  a,
T2  b 
) [inline]

Definition at line 223 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLuint64  a,
MLuint64  b 
) [inline]

Definition at line 218 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLdouble  a,
MLdouble  b 
) [inline]

Definition at line 216 of file mlTypeDefTraits.h.

References ML_DOUBLE_MIN, and MLfabs().

bool MLValuesDifferWOM ( MLint8  a,
MLint8  b 
) [inline]

Returns true if values differ, otherwise false.

Comparison is done warn free without order of magnitude, i.e., also numerically unsafe.

Definition at line 209 of file mlTypeDefTraits.h.

Referenced by ml::MLTStdTypeInfos< VTYP >::MLTYPE_castToBool(), ml::FloatingPointVector< T, size, DataContainer >::operator!=(), ml::FloatingPointVector< T, size, DataContainer >::operator<(), ml::FloatingPointVector< T, size, DataContainer >::operator==(), and ml::Tvec3< MLdouble >::Tvec3().

bool MLValuesDifferWOM ( MLuint32  a,
MLuint32  b 
) [inline]

Definition at line 214 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLuint16  a,
MLuint16  b 
) [inline]

Definition at line 212 of file mlTypeDefTraits.h.

bool MLValuesDifferWOM ( MLfloat  a,
MLfloat  b 
) [inline]

Definition at line 215 of file mlTypeDefTraits.h.

References ML_FLOAT_MIN, and MLfabs().

bool MLValuesDifferWOM ( MLldouble  a,
MLldouble  b 
) [inline]

Definition at line 217 of file mlTypeDefTraits.h.

References ML_LDOUBLE_MIN, and MLfabs().