| 109 | |
| 110 | template<std::size_t FieldCount> |
| 111 | void control_decode_impl(uint64_t encoding, std::size_t bitCount, const std::valarray<std::reference_wrapper<uint64_t>>& fields) { |
| 112 | if (fields.size() == 1) { |
| 113 | fields[std::slice(0, 1, 1)][0].get() = join_by_n<FieldCount>(encoding, bitCount); |
| 114 | return; |
| 115 | } |
| 116 | |
| 117 | fields[std::slice(0, 1, 1)][0].get() = join_by_n<FieldCount>(encoding, bitCount); |
| 118 | control_decode_impl<FieldCount>(encoding >> 1, bitCount, fields[std::slice(1, fields.size() - 1, 1)]); |
| 119 | } |
| 120 | |
| 121 | template<typename...T> |
| 122 | void control_decode(uint64_t encoding, T&... fields) { |
nothing calls this directly
no outgoing calls
no test coverage detected