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;
143template <
typename...>
147 template <
typename...>
148 using Type = std::false_type;
151template <
typename...>
155 template <
typename T,
typename...>
159template <
typename...>
160struct LogicalOrBinaryOp
163 template <
typename TFirst,
typename TSecond>
164 using Type = std::integral_constant<bool, (TFirst::value || TSecond::value)>;
167template <
typename...>
168struct LogicalAndBinaryOp
171 template <
typename TFirst,
typename TSecond>
172 using Type = std::integral_constant<bool, (TFirst::value && TSecond::value)>;
175template <
typename...>
178 template <
typename TFirst,
typename TSecond>
180 typename Conditional<
181 (TFirst::value >= TSecond::value)
188template <
typename...>
191 template <
typename TFirst,
typename TSecond>
193 typename Conditional<
194 (TFirst::value <= TSecond::value)
201template <
typename...>
204 template <
typename TFirst,
typename TSecond>
206 std::integral_constant<typename TFirst::value_type, TFirst::value + TSecond::value>;
209template <
typename...>
210class FieldMinLengthIntType
213 template <
typename T>
214 using Type = std::integral_constant<std::size_t, T::minLength()>;
217template <
typename...>
218class FieldMaxLengthIntType
221 template <
typename T>
222 using Type = std::integral_constant<std::size_t, T::maxLength()>;
225template <
typename...>
226class FieldBitLengthIntType
229 template <
typename T>
231 typename details::FieldBitLengthIntTypeImpl<
232 T::ParsedOptions::HasFixedBitLengthLimit
236template <
typename...>
237class AlignmentIntType
240 template <
typename T>
241 using Type = std::integral_constant<std::size_t,
alignof(T)>;
244template <
typename...>
248 template <
typename T>
249 using Type = std::integral_constant<std::size_t,
sizeof(T)>;
252template <
typename...>
253class MessageCheckHasStaticId
256 template <
typename TMessage>
257 using Type = std::integral_constant<bool, TMessage::hasStaticMsgId()>;
260template <
typename...>
261struct AccumulateFromUntil
266 template<
typename...>
class TTransformOp,
267 template<
typename...>
class TBinaryOp,
271 typename details::AccumulateFromUntilImpl<
272 (0 ==
sizeof...(TRest)) || (TUntil == 0U)
282template <
typename...>
286 template<
typename...>
class TTransformOp,
287 template<
typename...>
class TBinaryOp,
291 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