X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/a9b51e6d85e077f8e18c35ac3606d80b343927e0..5aaf7aaa7d95bb26178ae2c192b84401f5544244:/src/pack.h diff --git a/src/pack.h b/src/pack.h index 283f28c..7cc3440 100644 --- a/src/pack.h +++ b/src/pack.h @@ -1,30 +1,55 @@ +/* + * 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 +#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); -#ifdef ULLONG_MAX +#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); -#ifdef ULLONG_MAX +#if PACK_HAVE_64BIT void pack_64_le(unsigned char *, unsigned long long); #endif -unsigned short unpack_16_be(unsigned char *); -unsigned long unpack_32_be(unsigned char *); -#ifdef ULLONG_MAX -unsigned long long unpack_64_be(unsigned char *); +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 -unsigned short unpack_16_le(unsigned char *); -unsigned long unpack_32_le(unsigned char *); -#ifdef ULLONG_MAX -unsigned long long unpack_64_le(unsigned char *); +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