summaryrefslogtreecommitdiffhomepage
path: root/serialize/packbits-read.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize/packbits-read.cpp')
-rw-r--r--serialize/packbits-read.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/serialize/packbits-read.cpp b/serialize/packbits-read.cpp
index 6b4a13d4..9980ca63 100644
--- a/serialize/packbits-read.cpp
+++ b/serialize/packbits-read.cpp
@@ -1,12 +1,29 @@
#include "packbits-read.hpp"
#include "compat/assert.hpp"
+#include "compat/exception.hpp"
+
+namespace floormat::Pack_impl {
+
+void throw_on_read_nonzero() noexcept(false)
+{
+ throw std::runtime_error{"extra bits in pack_read()"};
+}
+
+} // namespace floormat::Pack_impl
namespace floormat {
-using namespace floormat::Pack;
+using namespace floormat::Pack_impl;
namespace {
+static_assert(sum<1, 2, 3, 4, 5> == 6*(6-1)/2);
+static_assert(sum<5, 10, 15> == 30);
+
+using u32 = uint32_t;
+using u16 = uint16_t;
+using u8 = uint8_t;
+
template<std::unsigned_integral T, size_t N> constexpr inline T lowbits = N == sizeof(T)*8 ? (T)-1 : (T{1} << N)-T{1};
static_assert(!input<uint32_t, 3>{65535}.check_zero());