34 #ifndef CARTOBASE_TYPE_DATATYPETRAITS_H
35 #define CARTOBASE_TYPE_DATATYPETRAITS_H
44 #define DATA_TYPE_TRAITS_DECLARE_SPECIALIZATION_SINGLE_CHANNEL( T, IS_SCALAR, LONG, HAS_BOOL_CONVERSION ) \
46 struct DataTypeTraits< T > \
49 typedef T ChannelType; \
50 typedef LONG LongType; \
52 static const bool is_scalar = IS_SCALAR; \
53 static const bool is_multichannel = false; \
54 static const bool has_bool_conversion = HAS_BOOL_CONVERSION; \
55 static const unsigned int channelcount = 1; \
58 #define DATA_TYPE_TRAITS_DECLARE_SPECIALIZATION_MULTI_CHANNEL( T, IS_SCALAR, LONG, HAS_BOOL_CONVERSION ) \
60 struct DataTypeTraits< T > \
63 typedef T::ChannelType ChannelType; \
64 typedef LONG LongType; \
66 static const bool is_scalar = false; \
67 static const bool is_multichannel = true; \
68 static const bool has_bool_conversion = HAS_BOOL_CONVERSION; \
69 static const unsigned int channelcount = T::channelcount; \
72 #define DATA_TYPE_TRAITS_DECLARE_SPECIALIZATION( T, IS_SCALAR, IS_MULTICHANNEL, LONG, HAS_BOOL_CONVERSION ) \
73 DATA_TYPE_TRAITS_DECLARE_SPECIALIZATION_##IS_MULTICHANNEL(T, IS_SCALAR, LONG, HAS_BOOL_CONVERSION) \
75 #define DATA_TYPE_TRAITS_INSTANCIATE_SPECIALIZATION( T ) \
76 const bool carto::DataTypeTraits< T >::is_scalar; \
77 const bool carto::DataTypeTraits< T >::is_multichannel; \
78 const bool carto::DataTypeTraits< T >::has_bool_conversion; \
79 const unsigned int carto::DataTypeTraits< T >::channelcount; \
81 #define DATA_TYPE_TRAITS_INSTANCIATE_TEMPLATE_SPECIALIZATION( T ) \
82 template<> const bool carto::DataTypeTraits< T >::is_scalar; \
83 template<> const bool carto::DataTypeTraits< T >::is_multichannel; \
84 template<> const bool carto::DataTypeTraits< T >::has_bool_conversion; \
85 template<> const unsigned int carto::DataTypeTraits< T >::channelcount; \
102 template<
typename DataType>
Void does not contain anything.
#define DATA_TYPE_TRAITS_DECLARE_SPECIALIZATION(T, IS_SCALAR, IS_MULTICHANNEL, LONG, HAS_BOOL_CONVERSION)
Properties of data types.
static const bool has_bool_conversion
static const unsigned int channelcount
static const bool is_multichannel
static const bool is_scalar
std::complex< double > cdouble
Complex 64 bits float.
std::complex< float > cfloat
Complex 32 bits float.