3 #ifdef OPENGM_CONFIGFILE
6 #include OPENGM_CONFIGFILE
7 #else // OPENGM_CONFIGFILE
19 #ifdef OPENGM_NO_TYPENAME
24 #define OPENGM_WORD_LENGTH sizeof(void *)
25 #define OPENGM_SIZE_OF_BOOL 1
26 #define OPENGM_SIZE_OF_CHAR sizeof(char)
27 #define OPENGM_SIZE_OF_SIGNED_CHAR sizeof(unsigned char)
28 #define OPENGM_SIZE_OF_UNSIGNED_CHAR sizeof(unsigned char)
29 #define OPENGM_SIZE_OF_WCHAR_T sizeof(wchar_t)
30 #define OPENGM_SIZE_OF_SHORT sizeof(short)
31 #define OPENGM_SIZE_OF_UNSIGNED_SHORT sizeof(unsigned short)
32 #define OPENGM_SIZE_OF_INT sizeof(int)
33 #define OPENGM_SIZE_OF_UNSIGNED_INT sizeof(unsigned int)
34 #define OPENGM_SIZE_OF_LONG sizeof(long)
35 #define OPENGM_SIZE_OF_UNSIGNED_LONG sizeof(unsigned long)
36 #define OPENGM_SIZE_OF_LONG_LONG sizeof(long long)
37 #define OPENGM_SIZE_OF_UNSIGNED_LONG_LONG sizeof(unsigned long long)
38 #define OPENGM_SIZE_OF_FLOAT sizeof(float)
39 #define OPENGM_SIZE_OF_DOUBLE sizeof(double)
40 #define OPENGM_SIZE_OF_LONG_DOUBLE sizeof(long double)
64 const bool NO_DEBUG =
false;
66 namespace detail_types{
70 struct NoCharOnSystem;
71 struct NoUnsignedCharOnSystem;
72 struct NoSignedCharOnSystem;
73 struct NoWCharTOnSystem;
74 struct NoShortOnSystem;
75 struct NoUnsignedShortOnSystem;
77 struct NoUnsignedIntOnSystem;
78 struct NoLongOnSystem;
79 struct NoUnsignedLongOnSystem;
80 struct NoUnsignedLongLongOnSystem;
81 struct NoLongLongOnSystem;
82 struct NoFloatOnSystem;
83 struct NoDoubleOnSystem;
84 struct NoLongDoubleOnSystem;
85 struct NoUIntTypeOnSystem;
86 struct NoIntTypeOnSystem;
87 struct NoFloatTypeOnSystem;
88 struct NoUInt8OnSystem;
89 struct NoUInt16OnSystem;
90 struct NoUInt32OnSystem;
91 struct NoUInt64OnSystem;
92 struct NoInt8OnSystem;
93 struct NoInt16OnSystem;
94 struct NoInt32OnSystem;
95 struct NoInt64OnSystem;
96 struct NoFloat32OnSystem;
97 struct NoFloat64OnSystem;
98 struct NoFloat128OnSystem;
101 #ifdef OPENGM_NO_CHAR
102 typedef opengm::meta::InvalideType<NoCharOnSystem> Char;
106 #ifdef OPENGM_NO_UNSIGNED_CHAR
107 typedef opengm::meta::InvalideType<NoUnsignedCharOnSystem> UnsignedChar;
109 typedef unsigned char UnsignedChar;
111 #ifdef OPENGM_NO_SIGNED_CHAR
112 typedef opengm::meta::InvalideType<NoSignedCharOnSystem> SignedChar;
114 typedef signed char SignedChar;
116 #ifdef OPENGM_NO_WCHAR_T
117 typedef opengm::meta::InvalideType<NoWCharTOnSystem> WCharT;
119 typedef wchar_t WCharT;
121 #ifdef OPENGM_NO_SHORT
122 typedef NoShortOnSystem Short;
126 #ifdef OPENGM_NO_UNSIGNED_SHORT
127 typedef opengm::meta::InvalideType<NoUnsignedShortOnSystem> UnsignedShort;
129 typedef unsigned short UnsignedShort;
132 typedef opengm::meta::InvalideType<NoIntOnSystem> Int;
136 #ifdef OPENGM_NO_UNSIGNED_INT
137 typedef opengm::meta::InvalideType<NoUnsignedIntOnSystem> UnsignedInt;
139 typedef unsigned int UnsignedInt;
141 #ifdef OPENGM_NO_LONG
142 typedef opengm::meta::InvalideType<NoLongOnSystem> Long;
146 #ifdef OPENGM_NO_UNSIGNED_LONG
147 typedef opengm::meta::InvalideType<NoUnsignedLongOnSystem> UnsignedLong;
149 typedef unsigned long UnsignedLong;
151 #ifdef OPENGM_NO_LONG_LONG
152 typedef opengm::meta::InvalideType<NoLongLongOnSystem> LongLong;
154 typedef long long LongLong;
156 #ifdef OPENGM_NO_UNSIGNED_LONG
157 typedef opengm::meta::InvalideType<NoUnsignedLongLongOnSystem> UnsignedLongLong;
159 typedef unsigned long long UnsignedLongLong;
161 #ifdef OPENGM_NO_Float
162 typedef opengm::meta::InvalideType<NoFloatOnSystem> Float;
166 #ifdef OPENGM_NO_DOUBLE
167 typedef opengm::meta::InvalideType<NoDoubleOnSystem> Double;
169 typedef double Double;
171 #ifdef OPENGM_NO_LONG_DOUBLE
172 typedef opengm::meta::InvalideType<NoLongDoubleOnSystem> LongDouble;
174 typedef long double LongDouble;
179 typedef opengm::meta::TypeListGenerator<
180 Float,Double , LongDouble
181 >::type StdFloatingPointTypesTypeList;
183 typedef opengm::meta::TypeListGenerator<
184 UnsignedChar,UnsignedShort, UnsignedInt, UnsignedLong, UnsignedLongLong
185 >::type StdUnsignedIntegerTypesTypeList;
187 typedef opengm::meta::TypeListGenerator<
188 Char, SignedChar, Short, Int, Long,LongLong
189 >::type StdSignedIntegerTypesTypeList;
192 typedef opengm::meta::TypeListGenerator<
193 opengm::meta::SizeT<OPENGM_SIZE_OF_FLOAT>,meta::SizeT<OPENGM_SIZE_OF_DOUBLE>,
194 opengm::meta::SizeT<OPENGM_SIZE_OF_LONG_DOUBLE>
195 >::type StdFloatingPointSizesTypeList;
197 typedef opengm::meta::TypeListGenerator<
198 opengm::meta::SizeT<OPENGM_SIZE_OF_UNSIGNED_CHAR>, opengm::meta::SizeT<OPENGM_SIZE_OF_UNSIGNED_SHORT>,
199 opengm::meta::SizeT<OPENGM_SIZE_OF_UNSIGNED_INT>, opengm::meta::SizeT<OPENGM_SIZE_OF_UNSIGNED_LONG>,
200 opengm::meta::SizeT<OPENGM_SIZE_OF_UNSIGNED_LONG_LONG>
201 >::type StdUnsignedIntegerSizesTypeList;
203 typedef opengm::meta::TypeListGenerator<
204 opengm::meta::SizeT<OPENGM_SIZE_OF_CHAR>, opengm::meta::SizeT<OPENGM_SIZE_OF_SIGNED_CHAR>,
205 opengm::meta::SizeT<OPENGM_SIZE_OF_SHORT>,opengm::meta::SizeT<OPENGM_SIZE_OF_INT>,
206 opengm::meta::SizeT<OPENGM_SIZE_OF_LONG>,opengm::meta::SizeT<OPENGM_SIZE_OF_LONG_LONG>
207 >::type StdSignedIntegerSizesTypeList;
210 typedef opengm::meta::FindSizedType<StdUnsignedIntegerTypesTypeList,StdUnsignedIntegerSizesTypeList,
211 1,meta::InvalidType<NoUInt8OnSystem > >::type
UInt8Type ;
212 typedef opengm::meta::FindSizedType<StdUnsignedIntegerTypesTypeList,StdUnsignedIntegerSizesTypeList,
213 2,meta::InvalidType<NoUInt16OnSystem> >::type
UInt16Type ;
214 typedef opengm::meta::FindSizedType<StdUnsignedIntegerTypesTypeList,StdUnsignedIntegerSizesTypeList,
215 4,meta::InvalidType<NoUInt32OnSystem> >::type
UInt32Type ;
216 typedef opengm::meta::FindSizedType<StdUnsignedIntegerTypesTypeList,StdUnsignedIntegerSizesTypeList,
217 8,meta::InvalidType<NoUInt64OnSystem> >::type
UInt64Type ;
219 typedef opengm::meta::FindSizedType<StdSignedIntegerTypesTypeList,StdSignedIntegerSizesTypeList,
220 1,meta::InvalidType<NoInt8OnSystem > >::type
Int8Type ;
221 typedef opengm::meta::FindSizedType<StdSignedIntegerTypesTypeList,StdSignedIntegerSizesTypeList,
222 2,meta::InvalidType<NoInt16OnSystem> >::type
Int16Type ;
223 typedef opengm::meta::FindSizedType<StdSignedIntegerTypesTypeList,StdSignedIntegerSizesTypeList,
224 4,meta::InvalidType<NoInt32OnSystem> >::type
Int32Type ;
225 typedef opengm::meta::FindSizedType<StdSignedIntegerTypesTypeList,StdSignedIntegerSizesTypeList,
226 8,meta::InvalidType<NoInt64OnSystem> >::type
Int64Type ;
228 typedef opengm::meta::FindSizedType<StdFloatingPointTypesTypeList,StdFloatingPointSizesTypeList,
229 4,meta::InvalidType<NoFloat32OnSystem> >::type
Float32Type ;
230 typedef opengm::meta::FindSizedType<StdFloatingPointTypesTypeList,StdFloatingPointSizesTypeList,
231 8,meta::InvalidType<NoFloat64OnSystem> >::type
Float64Type ;
232 typedef opengm::meta::FindSizedType<StdFloatingPointTypesTypeList,StdFloatingPointSizesTypeList,
233 16,meta::InvalidType<NoFloat128OnSystem> >::type Float128Type ;
236 typedef opengm::meta::TypeListGenerator<
237 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt64Type >::value >::value ,UInt64Type>,
238 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt32Type >::value >::value ,UInt32Type>,
239 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt16Type >::value >::value ,UInt16Type>,
240 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt8Type >::value >::value ,UInt8Type>
241 >::type UIntSwitchCasesBiggest;
242 typedef opengm::meta::TypeListGenerator<
243 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int64Type >::value >::value ,Int64Type>,
244 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int32Type >::value >::value ,Int32Type>,
245 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int16Type >::value >::value ,Int16Type>,
246 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int8Type >::value >::value ,Int8Type>
247 >::type IntSwitchCasesBiggest;
248 typedef opengm::meta::TypeListGenerator<
249 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Float128Type >::value >::value ,Float128Type>,
250 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Float64Type >::value >::value ,Float64Type>,
251 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Float32Type >::value >::value ,Float32Type>
252 >::type FloatSwitchCasesBiggest;
253 typedef opengm::meta::TypeListGenerator<
254 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt8Type >::value >::value ,UInt8Type>,
255 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt16Type >::value >::value ,UInt16Type>,
256 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt32Type >::value >::value ,UInt32Type>,
257 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< UInt64Type >::value >::value ,UInt64Type>
258 >::type UIntSwitchCasesSmallest;
259 typedef opengm::meta::TypeListGenerator<
260 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int8Type >::value >::value ,Int8Type>,
261 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int16Type >::value >::value ,Int16Type>,
262 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int32Type >::value >::value ,Int32Type>,
263 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Int64Type >::value >::value ,Int64Type>
264 >::type IntSwitchCasesSmallest;
265 typedef opengm::meta::TypeListGenerator<
266 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Float32Type >::value >::value,Float32Type >,
267 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Float64Type >::value >::value ,Float64Type>,
268 opengm::meta::SwitchCase< opengm::meta::Not< opengm::meta::IsInvalidType< Float128Type >::value >::value ,Float128Type>
269 >::type FloatSwitchCasesSmallest;
271 typedef opengm::meta::Switch< UIntSwitchCasesBiggest ,
273 typedef opengm::meta::Switch< IntSwitchCasesBiggest ,
275 typedef opengm::meta::Switch< FloatSwitchCasesBiggest ,
278 typedef opengm::meta::Switch< UIntSwitchCasesSmallest ,
280 typedef opengm::meta::Switch< IntSwitchCasesSmallest ,
282 typedef opengm::meta::Switch< FloatSwitchCasesSmallest ,
333 #endif // OPENGM_CONFIGFILE
detail_types::BiggestUIntType BiggestUIntType
biggest / longest uint
detail_types::Float32Type Float32Type
float32
detail_types::Int16Type Int16Type
int8
detail_types::SmallestUIntType SmallestUIntType
smallest / shortest int
detail_types::UInt8Type UInt8Type
SizeT.
BiggestUIntType UIntType
default uint (biggest / longest uint)
detail_types::Int64Type Int64Type
int32
SmallestFloatType FloatType
default uint (biggest / longest float)
const size_t USUAL_MAX_FACTOR_ORDER
usual factor order
const unsigned int VERSION_MAJOR
major version number of opengm
detail_types::SmallestFloatType SmallestFloatType
detail_types::UInt64Type UInt64Type
uint64
detail_types::Int32Type Int32Type
int16
detail_types::Int8Type Int8Type
detail_types::UInt32Type UInt32Type
uint32
detail_types::UInt16Type UInt16Type
uint16
detail_types::Float64Type Float64Type
float64
detail_types::BiggestFloatType BiggestFloatType
BiggestIntType IntType
default uint (biggest / longest int)
const unsigned int VERSION_MINOR
minor version number of opengm
detail_types::SmallestIntType SmallestIntType
detail_types::BiggestIntType BiggestIntType
biggest / longest int
const unsigned int VERSION_PATCH
patch version number of opengm