30 template <
typename TTrue,
typename TFalse>
37 template <
typename TTrue,
typename TFalse>
42template <
bool TCond,
typename TTrue,
typename TFalse>
46struct LazyShallowConditional
48 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
49 using Type = TTrue<TParams...>;
53struct LazyShallowConditional<false>
55 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
56 using Type = TFalse<TParams...>;
60struct LazyDeepConditional
62 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
63 using Type =
typename TTrue<>::template Type<TParams...>;
67struct LazyDeepConditional<false>
69 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
70 using Type =
typename TFalse<>::template Type<TParams...>;
74struct LazyShallowDeepConditional
76 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
77 using Type = TTrue<TParams...>;
81struct LazyShallowDeepConditional<false>
83 template <
template<
typename...>
class TTrue,
template<
typename...>
class TFalse,
typename... TParams>
84 using Type =
typename TFalse<>::template Type<TParams...>;
91 template <
typename T,
typename...>
96class FieldCheckVersionDependent
100 using Type = std::integral_constant<bool, T::isVersionDependent()>;
103template <
typename...>
104class FieldCheckNonDefaultRefresh
107 template <
typename T>
108 using Type = std::integral_constant<bool, T::hasNonDefaultRefresh()>;
111template <
typename...>
112class FieldCheckVarLength
115 template <
typename T>
116 using Type = std::integral_constant<bool, T::minLength() != T::maxLength()>;
119template <
typename...>
120class FieldCheckReadNoStatus
123 template <
typename T>
124 using Type = std::integral_constant<bool, T::hasReadNoStatus()>;
127template <
typename...>
128class FieldCheckWriteNoStatus
131 template <
typename T>
132 using Type = std::integral_constant<bool, T::hasWriteNoStatus()>;
135template <
typename...>
139 template <
typename...>
140 using Type = std::true_type;
144template <
typename...>
148 template <
typename...>
149 using Type = std::false_type;
152template <
typename...>
156 template <
typename T,
typename...>
160template <
typename...>
161struct LogicalOrBinaryOp
164 template <
typename TFirst,
typename TSecond>
165 using Type = std::integral_constant<bool, (TFirst::value || TSecond::value)>;
168template <
typename...>
169struct LogicalAndBinaryOp
172 template <
typename TFirst,
typename TSecond>
173 using Type = std::integral_constant<bool, (TFirst::value && TSecond::value)>;
176template <
typename...>
179 template <
typename TFirst,
typename TSecond>
181 typename Conditional<
182 (TFirst::value >= TSecond::value)
189template <
typename...>
192 template <
typename TFirst,
typename TSecond>
194 typename Conditional<
195 (TFirst::value <= TSecond::value)
202template <
typename...>
205 template <
typename TFirst,
typename TSecond>
207 std::integral_constant<typename TFirst::value_type, TFirst::value + TSecond::value>;
210template <
typename...>
211class FieldMinLengthIntType
214 template <
typename T>
215 using Type = std::integral_constant<std::size_t, T::minLength()>;
218template <
typename...>
219class FieldMaxLengthIntType
222 template <
typename T>
223 using Type = std::integral_constant<std::size_t, T::maxLength()>;
226template <
typename...>
227class FieldBitLengthIntType
230 template <
typename T>
232 typename details::FieldBitLengthIntTypeImpl<
233 T::ParsedOptions::HasFixedBitLengthLimit
237template <
typename...>
238class AlignmentIntType
241 template <
typename T>
242 using Type = std::integral_constant<std::size_t,
alignof(T)>;
245template <
typename...>
249 template <
typename T>
250 using Type = std::integral_constant<std::size_t,
sizeof(T)>;
253template <
typename...>
254class MessageCheckHasStaticId
257 template <
typename TMessage>
258 using Type = std::integral_constant<bool, TMessage::hasStaticMsgId()>;
261template <
typename...>
262struct AccumulateFromUntil
267 template<
typename...>
class TTransformOp,
268 template<
typename...>
class TBinaryOp,
272 typename details::AccumulateFromUntilImpl<
273 (0 ==
sizeof...(TRest)) || (TUntil == 0U)
283template <
typename...>
287 template<
typename...>
class TTransformOp,
288 template<
typename...>
class TBinaryOp,
292 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:43
Main namespace for all classes / functions of COMMS library.
Replacement to std::conditional.
Definition type_traits.h:29