+++ /dev/null
-/*
- * Portable binary serialisation of integral types.
- * Copyright © 2009 Nick Bowler
- *
- * Copying and distribution of this file, with or without modification,
- * are permitted in any medium without royalty provided the copyright
- * notice and this notice are preserved. This file is offered as-is,
- * without any warranty.
- */
-
-#include "pack.h"
-
-/* Unsigned integer packing. */
-#define DEFPACK_BE(bits, type) void pack_ ## bits ## _be ( \
- unsigned char *out, type v \
-) { \
- unsigned i; \
- for (i = 1; i <= bits/8; i++) { \
- out[bits/8 - i] = v % 256; \
- v /= 256; \
- } \
-}
-
-#define DEFPACK_LE(bits, type) void pack_ ## bits ## _le ( \
- unsigned char *out, type v \
-) { \
- unsigned i; \
- for (i = 0; i < bits/8; i++) { \
- out[i] = v % 256; \
- v /= 256; \
- } \
-}
-
-DEFPACK_BE(16, unsigned short)
-DEFPACK_BE(32, unsigned long)
-#if PACK_HAVE_64BIT
-DEFPACK_BE(64, unsigned long long)
-#endif
-
-DEFPACK_LE(16, unsigned short)
-DEFPACK_LE(32, unsigned long)
-#if PACK_HAVE_64BIT
-DEFPACK_LE(64, unsigned long long)
-#endif
-
-#define DEFUNPACK_BE(bits, type) type unpack_ ## bits ## _be ( \
- const unsigned char *in \
-) { \
- type v = 0; \
- unsigned i; \
- for (i = 0; i < bits/8; i++) { \
- v *= 256; \
- v += in[i]; \
- } \
- return v; \
-}
-
-#define DEFUNPACK_LE(bits, type) type unpack_ ## bits ## _le ( \
- const unsigned char *in \
-) { \
- type v = 0; \
- unsigned i; \
- for (i = 1; i <= bits/8; i++) { \
- v *= 256; \
- v += in[bits/8 - i]; \
- } \
- return v; \
-}
-
-DEFUNPACK_BE(16, unsigned short)
-DEFUNPACK_BE(32, unsigned long)
-#if PACK_HAVE_64BIT
-DEFUNPACK_BE(64, unsigned long long)
-#endif
-
-DEFUNPACK_LE(16, unsigned short)
-DEFUNPACK_LE(32, unsigned long)
-#if PACK_HAVE_64BIT
-DEFUNPACK_LE(64, unsigned long long)
-#endif
-
-/*
- * Two's complement signed integer packing. This is unlikely to work on
- * systems that don't themselves use two's complement.
- */
-
-#define DEFUNPACK_SBE(bits, max, type) type unpack_s ## bits ## _be ( \
- const unsigned char *in \
-) { \
- type v = 0; \
- unsigned i; \
- int sign = (in[0] & 0x80) ? 1 : 0; \
- for (i = 0; i < bits/8; i++) { \
- v *= 256; \
- v += in[i] & (i == 0 ? 0x7f : 0xff); \
- } \
- return sign*(-max-1) + v; \
-}
-
-#define DEFUNPACK_SLE(bits, max, type) type unpack_s ## bits ## _le ( \
- const unsigned char *in \
-) { \
- type v = 0; \
- unsigned i; \
- int sign = (in[bits/8 - 1] & 0x80) ? 1 : 0; \
- for (i = 1; i <= bits/8; i++) { \
- v *= 256; \
- v += in[bits/8 - i] & (i == 1 ? 0x7f : 0xff); \
- } \
- return sign*(-max-1) + v; \
-}
-
-DEFUNPACK_SBE(16, 32767, short)
-DEFUNPACK_SBE(32, 2147483647l, long)
-#if PACK_HAVE_64BIT
-DEFUNPACK_SBE(64, 9223372036854775807ll, long long)
-#endif
-
-DEFUNPACK_SLE(16, 32767, short)
-DEFUNPACK_SLE(32, 2147483647l, long)
-#if PACK_HAVE_64BIT
-DEFUNPACK_SLE(64, 9223372036854775807ll, long long)
-#endif
+++ /dev/null
-/*
- * Portable binary serialisation of integral types.
- * Copyright © 2009 Nick Bowler
- *
- * Copying and distribution of this file, with or without modification,
- * are permitted in any medium without royalty provided the copyright
- * notice and this notice are preserved. This file is offered as-is,
- * without any warranty.
- */
-
-#ifndef PACK_H_
-#define PACK_H_
-
-#include <limits.h>
-#if !defined(PACK_HAVE_64BIT) && defined(ULLONG_MAX) && defined(LLONG_MAX)
-# define PACK_HAVE_64BIT 1
-#endif
-
-void pack_16_be(unsigned char *, unsigned short);
-void pack_32_be(unsigned char *, unsigned long);
-#if PACK_HAVE_64BIT
-void pack_64_be(unsigned char *, unsigned long long);
-#endif
-
-void pack_16_le(unsigned char *, unsigned short);
-void pack_32_le(unsigned char *, unsigned long);
-#if PACK_HAVE_64BIT
-void pack_64_le(unsigned char *, unsigned long long);
-#endif
-
-unsigned short unpack_16_be(const unsigned char *);
-unsigned long unpack_32_be(const unsigned char *);
-#if PACK_HAVE_64BIT
-unsigned long long unpack_64_be(const unsigned char *);
-#endif
-
-unsigned short unpack_16_le(const unsigned char *);
-unsigned long unpack_32_le(const unsigned char *);
-#if PACK_HAVE_64BIT
-unsigned long long unpack_64_le(const unsigned char *);
-#endif
-
-short unpack_s16_be(const unsigned char *);
-long unpack_s32_be(const unsigned char *);
-#if PACK_HAVE_64BIT
-long long unpack_s64_be(const unsigned char *);
-#endif
-
-short unpack_s16_le(const unsigned char *);
-long unpack_s32_le(const unsigned char *);
-#if PACK_HAVE_64BIT
-long long unpack_s64_le(const unsigned char *);
-#endif
-
-#endif