1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-06-25 18:30:07 +00:00

Further explain.

This commit is contained in:
Thomas Harte 2023-01-17 20:14:32 -05:00
parent 9588c9bee2
commit 0951c50e40

View File

@ -13,11 +13,21 @@ namespace Numeric {
/// Stores and retrieves an arbitrary number of fields into an int with arbitrary modulos.
///
/// E.g. NumericEncoder<8, 3, 14> establishes an encoder and decoder for three fields,
/// E.g. NumericCoder<8, 3, 14> establishes an encoder and decoder for three fields,
/// the first is modulo 8, the second is modulo 3, the third is modulo 14.
///
/// NumericEncoder<8, 3, 14>::encode<2>(v, 9) will mutate v so that the third field
/// NumericCoder<8, 3, 14>::encode<2>(v, 9) will mutate v so that the third field
/// (i.e. field 2) has value 9.
///
/// The first given field will occupy the least significant part of the target int; e.g.
/// a NumericCoder<3, 4, 6> with ::encode<0>(v, 2), ::encode<1>(v, 1) and
/// ::encode<2>(v, 5) will have a final value of:
///
/// [value] 2 +
/// [value] 1 * [product of previous field sizes] 3 +
/// 5 * 12
/// = 65
///
template <int... Sizes> class NumericCoder {
public:
/// Modifies @c target to hold @c value at @c index.