33 template <
typename TTrue,
typename TFalse>
40 template <
typename TTrue,
typename TFalse>
45template <
bool TCond,
typename TTrue,
typename TFalse>
49struct LazyShallowConditional
51 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
52 using Type = TTrue<TParams...>;
56struct LazyShallowConditional<false>
58 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
59 using Type = TFalse<TParams...>;
63struct LazyDeepConditional
65 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
66 using Type =
typename TTrue<>::template Type<TParams...>;
70struct LazyDeepConditional<false>
72 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
73 using Type =
typename TFalse<>::template Type<TParams...>;
77struct LazyShallowDeepConditional
79 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
80 using Type = TTrue<TParams...>;
84struct LazyShallowDeepConditional<false>
86 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
87 using Type =
typename TFalse<>::template Type<TParams...>;
94 template <
typename T,
typename...>
99class FieldCheckVersionDependent
102 template <
typename T>
103 using Type = std::integral_constant<bool, T::isVersionDependent()>;
106template <
typename...>
107class FieldCheckNonDefaultRefresh
110 template <
typename T>
111 using Type = std::integral_constant<bool, T::hasNonDefaultRefresh()>;
114template <
typename...>
115class FieldCheckVarLength
118 template <
typename T>
119 using Type = std::integral_constant<bool, T::minLength() != T::maxLength()>;
122template <
typename...>
123class FieldCheckReadNoStatus
126 template <
typename T>
127 using Type = std::integral_constant<bool, T::hasReadNoStatus()>;
130template <
typename...>
131class FieldCheckWriteNoStatus
134 template <
typename T>
135 using Type = std::integral_constant<bool, T::hasWriteNoStatus()>;
138template <
typename...>
142 template <
typename...>
143 using Type = std::true_type;
146template <
typename...>
150 template <
typename...>
151 using Type = std::false_type;
154template <
typename...>
158 template <
typename T,
typename...>
162template <
typename...>
163struct LogicalOrBinaryOp
166 template <
typename TFirst,
typename TSecond>
167 using Type = std::integral_constant<bool, (TFirst::value || TSecond::value)>;
170template <
typename...>
171struct LogicalAndBinaryOp
174 template <
typename TFirst,
typename TSecond>
175 using Type = std::integral_constant<bool, (TFirst::value && TSecond::value)>;
178template <
typename...>
181 template <
typename TFirst,
typename TSecond>
183 typename Conditional<
184 (TFirst::value >= TSecond::value)
191template <
typename...>
194 template <
typename TFirst,
typename TSecond>
196 typename Conditional<
197 (TFirst::value <= TSecond::value)
204template <
typename...>
207 template <
typename TFirst,
typename TSecond>
209 std::integral_constant<typename TFirst::value_type, TFirst::value + TSecond::value>;
212template <
typename...>
213class FieldMinLengthIntType
216 template <
typename T>
217 using Type = std::integral_constant<std::size_t, T::minLength()>;
220template <
typename...>
221class FieldMaxLengthIntType
224 template <
typename T>
225 using Type = std::integral_constant<std::size_t, T::maxLength()>;
228template <
typename...>
229class FieldBitLengthIntType
232 template <
typename T>
234 typename details::FieldBitLengthIntTypeImpl<
235 T::ParsedOptions::HasFixedBitLengthLimit
239template <
typename...>
240class AlignmentIntType
243 template <
typename T>
244 using Type = std::integral_constant<std::size_t,
alignof(T)>;
247template <
typename...>
251 template <
typename T>
252 using Type = std::integral_constant<std::size_t,
sizeof(T)>;
255template <
typename...>
256class MessageCheckHasStaticId
259 template <
typename TMessage>
260 using Type = std::integral_constant<bool, TMessage::hasStaticMsgId()>;
263template <
typename...>
264struct AccumulateFromUntil
269 template<
typename...>
class TTransformOp,
270 template<
typename...>
class TBinaryOp,
274 typename details::AccumulateFromUntilImpl<
275 (0 ==
sizeof...(TRest)) || (TUntil == 0U)
285template <
typename...>
289 template<
typename...>
class TTransformOp,
290 template<
typename...>
class TBinaryOp,
294 typename AccumulateFromUntil<>::template Type<
Replacement to some types from standard type_traits.
typename Conditional< TCond >::template Type< TTrue, TFalse > ConditionalT
Replacement to std::conditional.
Definition type_traits.h:46
Main namespace for all classes / functions of COMMS library.
Replacement to std::conditional.
Definition type_traits.h:32