28struct AccumulateFromUntil;
40 template<
typename...>
class TAlg,
41 template<
typename...>
class TTransformOp,
42 template<
typename...>
class TBinaryOp,
46 using Type =
typename TAlg<>::template Type<TTransformOp, TBinaryOp, TStart, TRest...>;
50struct AccumulateLoop<true>
53 template<
typename...>
class TAlg,
54 template<
typename...>
class TTransformOp,
55 template<
typename...>
class TBinaryOp,
63struct AccumulateFromUntilLoop
68 template<
typename...>
class TAlg,
69 template<
typename...>
class TTransformOp,
70 template<
typename...>
class TBinaryOp,
74 using Type =
typename TAlg<>::template Type<TFrom, TUntil, TTransformOp, TBinaryOp, TStart, TRest...>;
78struct AccumulateFromUntilLoop<true>
83 template<
typename...>
class TAlg,
84 template<
typename...>
class TTransformOp,
85 template<
typename...>
class TBinaryOp,
97 template<
typename...>
class TTransformOp,
98 template<
typename...>
class TBinaryOp,
103 typename AccumulateLoop<0U ==
sizeof...(TRest)>::template Type<
104 comms::util::Accumulate,
107 typename TBinaryOp<>::template Type<
109 typename TTransformOp<>::template Type<T>
115struct AccumulateImpl<true>
118 template<
typename...>
class TTransformOp,
119 template<
typename...>
class TBinaryOp,
125template <
bool TEmpty>
126struct AccumulateFromUntilImpl
131 template<
typename...>
class TTransformOp,
132 template<
typename...>
class TBinaryOp,
137 typename Conditional<
140 typename AccumulateFromUntilImpl<
141 0U ==
sizeof...(TRest)
150 typename AccumulateFromUntilLoop<
151 (0U ==
sizeof...(TRest)) || (TUntil <= 1)
155 comms::util::AccumulateFromUntil,
158 typename TBinaryOp<>::template Type<
160 typename TTransformOp<>::template Type<T>
167struct AccumulateFromUntilImpl<true>
172 template<
typename...>
class TTransformOp,
173 template<
typename...>
class TBinaryOp,
179template <
bool THasFixedBitLength>
180struct FieldBitLengthIntTypeImpl
182 template <
typename T>
184 std::integral_constant<std::size_t, T::ParsedOptions::FixedBitLength>;
188struct FieldBitLengthIntTypeImpl<false>
191 template <
typename T>
193 std::integral_constant<
195 T::maxLength() * std::numeric_limits<std::uint8_t>::digits>;
Main namespace for all classes / functions of COMMS library.