util/PackedBigEndian: add class PackedSignedBE16

This commit is contained in:
Max Kellermann 2024-12-18 12:45:54 +01:00 committed by Max Kellermann
parent 7c9a460786
commit ad8c2577c4

@ -50,6 +50,26 @@ public:
static_assert(sizeof(PackedBE16) == sizeof(uint16_t), "Wrong size");
static_assert(alignof(PackedBE16) == 1, "Wrong alignment");
/**
* A packed big-endian signed 16 bit integer.
*/
class PackedSignedBE16 {
PackedBE16 u;
public:
PackedSignedBE16() = default;
constexpr PackedSignedBE16(int16_t src) noexcept
:u(uint16_t(src)) {}
constexpr operator int16_t() const noexcept {
return (int16_t)(uint16_t)u;
}
};
static_assert(sizeof(PackedSignedBE16) == sizeof(int16_t), "Wrong size");
static_assert(alignof(PackedSignedBE16) == 1, "Wrong alignment");
/**
* A packed big-endian 32 bit integer.
*/