cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Functions
cmnTypeTraits.h File Reference

Declaration of the class cmnTypeTraits. More...

#include <cisstCommon/cmnPortability.h>
#include <string>
#include <limits.h>
#include <float.h>
#include <cisstCommon/cmnExport.h>

Go to the source code of this file.

Classes

class  cmnVaArgPromotion< _type >
 
class  cmnVaArgPromotion< float >
 
class  cmnVaArgPromotion< short >
 
class  cmnVaArgPromotion< char >
 
class  cmnVaArgPromotion< unsigned short >
 
class  cmnVaArgPromotion< unsigned char >
 
class  cmnVaArgPromotion< bool >
 
class  cmnTypeTraits< _elementType >
 A collection of useful information about the C++ basic types, represented in a generic programming way. More...
 
class  cmnIsDerivedFrom< T, Base >
 
class  cmnIsDerivedFromTemplated< T, Base >
 
struct  cmnIsDerivedFromAssert< Derived, Base, b >
 
struct  cmnIsDerivedFromAssert< Derived, Base, true >
 

Macros

#define _cmnTypeTraits_h
 
#define CMN_TYPE_TRAITS_SPECIALIZE_LIMITS(type, maxPositiveValue, minPositiveValue, maxNegativeValue, minNegativeValue)
 
#define CMN_IS_DERIVED_FROM_ASSERT(Derived, Base)   typedef cmnIsDerivedFromAssert<Derived, Base, cmnIsDerivedFrom<Derived, Base>::IS_DERIVED>::ASSERT Derived##_##Base;
 

Functions

 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (float, FLT_MAX, FLT_MIN,-FLT_MIN,-FLT_MAX)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (double, DBL_MAX, DBL_MIN,-DBL_MIN,-DBL_MAX)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (int, INT_MAX, 1,-1, INT_MIN)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (unsigned int, UINT_MAX, 1, 0, 0)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (char, CHAR_MAX, 1,-1, CHAR_MIN)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (unsigned char, CHAR_MAX, 1, 0, 0)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (short, SHRT_MAX, 1,-1, SHRT_MIN)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (unsigned short, SHRT_MAX, 1, 0, 0)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (long int, LLONG_MAX, 1,-1, LLONG_MIN)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (long long int, LLONG_MAX, 1,-1, LLONG_MIN)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (unsigned long int, LLONG_MAX, 1, 0, 0)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (unsigned long long int, LLONG_MAX, 1, 0, 0)
 
 CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (bool, true, true, false, false)
 

Detailed Description

Declaration of the class cmnTypeTraits.

Macro Definition Documentation

#define _cmnTypeTraits_h
#define CMN_IS_DERIVED_FROM_ASSERT (   Derived,
  Base 
)    typedef cmnIsDerivedFromAssert<Derived, Base, cmnIsDerivedFrom<Derived, Base>::IS_DERIVED>::ASSERT Derived##_##Base;
#define CMN_TYPE_TRAITS_SPECIALIZE_LIMITS (   type,
  maxPositiveValue,
  minPositiveValue,
  maxNegativeValue,
  minNegativeValue 
)
Value:
template<> inline type cmnTypeTraits<type>::MaxPositiveValue(void) { \
return maxPositiveValue; \
} \
template<> inline type cmnTypeTraits<type>::MinPositiveValue(void) { \
return minPositiveValue; \
} \
template<> inline type cmnTypeTraits<type>::MaxNegativeValue(void) { \
return maxNegativeValue; \
} \
template<> inline type cmnTypeTraits<type>::MinNegativeValue(void) { \
return minNegativeValue; \
}
static CISST_EXPORT Type MaxPositiveValue(void)
static CISST_EXPORT Type MinPositiveValue(void)
static CISST_EXPORT Type MinNegativeValue(void)
static CISST_EXPORT Type MaxNegativeValue(void)

Function Documentation

CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( float  ,
FLT_MAX  ,
FLT_MIN  ,
FLT_MIN,
FLT_MAX 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( double  ,
DBL_MAX  ,
DBL_MIN  ,
DBL_MIN,
DBL_MAX 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( int  ,
INT_MAX  ,
,
1,
INT_MIN   
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( unsigned  int,
UINT_MAX  ,
,
,
 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( char  ,
CHAR_MAX  ,
,
1,
CHAR_MIN   
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( unsigned  char,
CHAR_MAX  ,
,
,
 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( short  ,
SHRT_MAX  ,
,
1,
SHRT_MIN   
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( unsigned  short,
SHRT_MAX  ,
,
,
 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( long  int,
LLONG_MAX  ,
,
1,
LLONG_MIN   
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( long long  int,
LLONG_MAX  ,
,
1,
LLONG_MIN   
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( unsigned long  int,
LLONG_MAX  ,
,
,
 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( unsigned long long  int,
LLONG_MAX  ,
,
,
 
)
CMN_TYPE_TRAITS_SPECIALIZE_LIMITS ( bool  ,
true  ,
true  ,
false  ,
false   
)