8 unsigned long long k = 1;
12 if ((-c <= value) && (value < c)) {
26 throw std::invalid_argument(
"pack: invalid value for size");
30 if (value > 0 && (value >> (8*
size)) != 0) {
31 throw std::overflow_error(
"pack: int too big to convert");
33 if (value < 0 && (value >> (8*
size)) != -1) {
34 throw std::overflow_error(
"pack: int too big to convert");
38 as_chars = (
char*)&value;
40 if (std::endian::native == std::endian::little) {
41 memcpy(dest, as_chars,
size);
44 memcpy(dest, as_chars + (8 -
size),
size);
59 throw std::invalid_argument(
"unpack<long long>: invalid value for size");
62 as_chars = (
char*)&ret;
70 if (std::endian::native == std::endian::little) {
71 memcpy(as_chars, src,
size);
74 memcpy(as_chars + (8 -
size), src,
size);
DEF_SIZE(long long)
Definition: ll.h:7
DEF_UNPACK(float)
Definition: double.h:30
size_t size(const std::string &value)
Definition: binary.h:8
void _reverse(char *s, unsigned int j, unsigned int k)
Reverses the contents of a character array between indices [j, k].
Definition: struct.h:26
Definition: basictypes.h:40
DEF_PACK(long long)
Definition: ll.h:22