diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-18 17:50:45 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-18 17:50:45 +0100 |
commit | 68351c6de75ee4ca835c57b223335c6df4f6a9d0 (patch) | |
tree | 1f51813b7e4bd9fc04e7143dcf532540f55a7b9c /serialize/packbits-read.cpp | |
parent | dba1218fe0ed78d5b264538f2f4553900e9fd1eb (diff) |
a
Diffstat (limited to 'serialize/packbits-read.cpp')
-rw-r--r-- | serialize/packbits-read.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/serialize/packbits-read.cpp b/serialize/packbits-read.cpp index cc3fc3bd..d71d06ac 100644 --- a/serialize/packbits-read.cpp +++ b/serialize/packbits-read.cpp @@ -21,7 +21,7 @@ static_assert(!input<uint32_t, 3>{65535}.check_zero()); static_assert(input<uint32_t, 30>{65535}.advance<16>() == 0); static_assert(input<uint32_t, 30>::next<16>{ input<uint32_t, 30>{65535}.advance<16>() }.check_zero()); -static_assert(input<uint32_t, 30>::next<16>{}.Capacity == 14); +static_assert(input<uint32_t, 30>::next<16>{}.Left == 14); constexpr bool test1() { @@ -76,39 +76,41 @@ constexpr bool test3() } static_assert(test3()); -static_assert(std::is_same_v< make_tuple_type<uint8_t, 3>, std::tuple<uint8_t, uint8_t, uint8_t> >); +template<size_t N> using f32 = input_field<uint32_t, N>; +template<size_t N> using f8 = input_field<uint8_t, N>; constexpr bool test4() { - using Tuple_u32 = make_tuple_type<uint32_t, 3>; - static_assert(std::is_same_v<Tuple_u32, std::tuple<uint32_t, uint32_t, uint32_t>>); - using Tuple_u8 = make_tuple_type<uint8_t, 3>; + { - Tuple_u32 tuple{}; static_assert(lowbits<uint32_t, 17> == 0x1ffffU); - read_(tuple, input<uint32_t, 32>{(uint32_t)-1}, std::make_index_sequence<3>{}, make_pack<uint32_t, 17, 14, 1>{}); - auto [a, b, c] = tuple; + f32<17> a; + f32<14> b; + f32< 1> c; + //auto tuple = std::tuple<f32<17>&, f32<14>&, f32<1>&>{a, b, c}; + auto tuple = std::tie(a, b, c); + read_(tuple, input<uint32_t, 32>{(uint32_t)-1}, std::make_index_sequence<3>{}); fm_assert(a == lowbits<uint32_t, 17>); fm_assert(b == lowbits<uint32_t, 14>); fm_assert(c & 1); } { - Tuple_u8 tuple{}; - read_(tuple, input<uint8_t, 8>{0b101011}, std::make_index_sequence<3>{}, make_pack<uint8_t, 1, 3, 2>{}); - auto [a, b, c] = tuple; + f8<1> a; + f8<3> b; + f8<2> c; + read_(std::tie(a, b, c), input<uint8_t, 8>{0b101011}, std::make_index_sequence<3>{}); fm_assert(a == 0b1); fm_assert(b == 0b101); fm_assert(c == 0b10); } { - std::tuple<> empty_tuple; - read_(empty_tuple, input<uint8_t, 8>{0}, std::index_sequence<>{}, make_pack<uint8_t>{}); - Tuple_u8 tuple{}; (void)tuple; - //read_(empty_tuple, input<uint8_t, 8>{1}, std::index_sequence<>{}, make_tuple<uint8_t>{}); - //read_(tuple, input<uint8_t, 5>{0b11111}, std::make_index_sequence<3>{}, make_tuple<uint8_t, 2, 2, 2>{}); + read_(std::tuple<>{}, input<uint8_t, 8>{0}, std::index_sequence<>{}); + [[maybe_unused]] f32<2> a, b, c; + //read_(std::tuple<>{}, input<uint8_t, 8>{1}, std::index_sequence<>{}); + //read_(std::tie(a, b, c), input<uint8_t, 5>{0b11111}, std::make_index_sequence<3>{}); //(void)input<uint8_t, 9>{}; - //read_(empty_tuple, input<uint8_t, 8>{}, std::index_sequence<0>{}, make_tuple<uint8_t, 1>{}); - //read_(empty_tuple, input<uint8_t, 8>{1}, std::index_sequence<>{}, make_tuple<uint8_t, 1>{}); + //read_(std::tie(a), input<uint8_t, 8>{3}, std::index_sequence<0>{}); fm_assert(a == 3); + //f8<1> d; read_(std::tie(d), input<uint8_t, 8>{1}, std::index_sequence<>{}); } return true; |