30struct AccumulateFromUntil;
42 template<
typename...>
class TAlg,
43 template<
typename...>
class TTransformOp,
44 template<
typename...>
class TBinaryOp,
48 using Type =
typename TAlg<>::template Type<TTransformOp, TBinaryOp, TStart, TRest...>;
52struct AccumulateLoop<true>
55 template<
typename...>
class TAlg,
56 template<
typename...>
class TTransformOp,
57 template<
typename...>
class TBinaryOp,
65struct AccumulateFromUntilLoop
70 template<
typename...>
class TAlg,
71 template<
typename...>
class TTransformOp,
72 template<
typename...>
class TBinaryOp,
76 using Type =
typename TAlg<>::template Type<TFrom, TUntil, TTransformOp, TBinaryOp, TStart, TRest...>;
80struct AccumulateFromUntilLoop<true>
85 template<
typename...>
class TAlg,
86 template<
typename...>
class TTransformOp,
87 template<
typename...>
class TBinaryOp,
98 template<
typename...>
class TTransformOp,
99 template<
typename...>
class TBinaryOp,
104 typename AccumulateLoop<0U ==
sizeof...(TRest)>::template Type<
105 comms::util::Accumulate,
108 typename TBinaryOp<>::template Type<
110 typename TTransformOp<>::template Type<T>
116struct AccumulateImpl<true>
119 template<
typename...>
class TTransformOp,
120 template<
typename...>
class TBinaryOp,
126template <
bool TEmpty>
127struct AccumulateFromUntilImpl
132 template<
typename...>
class TTransformOp,
133 template<
typename...>
class TBinaryOp,
138 typename Conditional<
141 typename AccumulateFromUntilImpl<
142 0U ==
sizeof...(TRest)
151 typename AccumulateFromUntilLoop<
152 (0U ==
sizeof...(TRest)) || (TUntil <= 1)
156 comms::util::AccumulateFromUntil,
159 typename TBinaryOp<>::template Type<
161 typename TTransformOp<>::template Type<T>
168struct AccumulateFromUntilImpl<true>
173 template<
typename...>
class TTransformOp,
174 template<
typename...>
class TBinaryOp,
180template <
bool THasFixedBitLength>
181struct FieldBitLengthIntTypeImpl
183 template <
typename T>
185 std::integral_constant<std::size_t, T::ParsedOptions::FixedBitLength>;
189struct FieldBitLengthIntTypeImpl<false>
192 template <
typename T>
194 std::integral_constant<
196 T::maxLength() * std::numeric_limits<std::uint8_t>::digits>;
Main namespace for all classes / functions of COMMS library.