diff options
author | Hanspeter Portner <dev@open-music-kontrollers.ch> | 2016-05-26 08:42:23 +0200 |
---|---|---|
committer | Hanspeter Portner <dev@open-music-kontrollers.ch> | 2016-05-26 08:42:23 +0200 |
commit | e9ab2ffcd4ec13f995e19b3765c1920cda5d3afb (patch) | |
tree | ff69eb742236e926690a0ec13f19cbdf2080e086 /osc.lv2 | |
parent | 86384de49d0b4ed42783371dd69a22eccf103396 (diff) | |
parent | ea2a418f97941a894698baff9e334bce6486fdb5 (diff) | |
download | sherlock.lv2-e9ab2ffcd4ec13f995e19b3765c1920cda5d3afb.tar.xz |
Merge commit 'ea2a418f97941a894698baff9e334bce6486fdb5'
Diffstat (limited to 'osc.lv2')
-rw-r--r-- | osc.lv2/osc.lv2/endian.h | 118 | ||||
-rw-r--r-- | osc.lv2/osc.lv2/reader.h | 2 | ||||
-rw-r--r-- | osc.lv2/osc.lv2/writer.h | 2 |
3 files changed, 120 insertions, 2 deletions
diff --git a/osc.lv2/osc.lv2/endian.h b/osc.lv2/osc.lv2/endian.h new file mode 100644 index 0000000..99845d0 --- /dev/null +++ b/osc.lv2/osc.lv2/endian.h @@ -0,0 +1,118 @@ +// "License": Public Domain +// I, Mathias Panzenböck, place this file hereby into the public domain. Use it at your own risk for whatever you like. +// In case there are jurisdictions that don't support putting things in the public domain you can also consider it to +// be "dual licensed" under the BSD, MIT and Apache licenses, if you want to. This code is trivial anyway. Consider it +// an example on how to get the endian conversion functions on different platforms. + +#ifndef PORTABLE_ENDIAN_H__ +#define PORTABLE_ENDIAN_H__ + +#if (defined(_WIN16) || defined(_WIN32) || defined(_WIN64)) && !defined(__WINDOWS__) + +# define __WINDOWS__ + +#endif + +#if defined(__linux__) || defined(__CYGWIN__) + +# include <endian.h> + +#elif defined(__APPLE__) + +# include <libkern/OSByteOrder.h> + +# define htobe16(x) OSSwapHostToBigInt16(x) +# define htole16(x) OSSwapHostToLittleInt16(x) +# define be16toh(x) OSSwapBigToHostInt16(x) +# define le16toh(x) OSSwapLittleToHostInt16(x) + +# define htobe32(x) OSSwapHostToBigInt32(x) +# define htole32(x) OSSwapHostToLittleInt32(x) +# define be32toh(x) OSSwapBigToHostInt32(x) +# define le32toh(x) OSSwapLittleToHostInt32(x) + +# define htobe64(x) OSSwapHostToBigInt64(x) +# define htole64(x) OSSwapHostToLittleInt64(x) +# define be64toh(x) OSSwapBigToHostInt64(x) +# define le64toh(x) OSSwapLittleToHostInt64(x) + +# define __BYTE_ORDER BYTE_ORDER +# define __BIG_ENDIAN BIG_ENDIAN +# define __LITTLE_ENDIAN LITTLE_ENDIAN +# define __PDP_ENDIAN PDP_ENDIAN + +#elif defined(__OpenBSD__) + +# include <sys/endian.h> + +#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) + +# include <sys/endian.h> + +# define be16toh(x) betoh16(x) +# define le16toh(x) letoh16(x) + +# define be32toh(x) betoh32(x) +# define le32toh(x) letoh32(x) + +# define be64toh(x) betoh64(x) +# define le64toh(x) letoh64(x) + +#elif defined(__WINDOWS__) + +# include <winsock2.h> +# include <sys/param.h> + +# if BYTE_ORDER == LITTLE_ENDIAN + +# define htobe16(x) htons(x) +# define htole16(x) (x) +# define be16toh(x) ntohs(x) +# define le16toh(x) (x) + +# define htobe32(x) htonl(x) +# define htole32(x) (x) +# define be32toh(x) ntohl(x) +# define le32toh(x) (x) + +# define htobe64(x) htonll(x) +# define htole64(x) (x) +# define be64toh(x) ntohll(x) +# define le64toh(x) (x) + +# elif BYTE_ORDER == BIG_ENDIAN + + /* that would be xbox 360 */ +# define htobe16(x) (x) +# define htole16(x) __builtin_bswap16(x) +# define be16toh(x) (x) +# define le16toh(x) __builtin_bswap16(x) + +# define htobe32(x) (x) +# define htole32(x) __builtin_bswap32(x) +# define be32toh(x) (x) +# define le32toh(x) __builtin_bswap32(x) + +# define htobe64(x) (x) +# define htole64(x) __builtin_bswap64(x) +# define be64toh(x) (x) +# define le64toh(x) __builtin_bswap64(x) + +# else + +# error byte order not supported + +# endif + +# define __BYTE_ORDER BYTE_ORDER +# define __BIG_ENDIAN BIG_ENDIAN +# define __LITTLE_ENDIAN LITTLE_ENDIAN +# define __PDP_ENDIAN PDP_ENDIAN + +#else + +# error platform not supported + +#endif + +#endif
\ No newline at end of file diff --git a/osc.lv2/osc.lv2/reader.h b/osc.lv2/osc.lv2/reader.h index 2f5def9..9dda227 100644 --- a/osc.lv2/osc.lv2/reader.h +++ b/osc.lv2/osc.lv2/reader.h @@ -20,9 +20,9 @@ #include <stdbool.h> #include <string.h> -#include <endian.h> #include <osc.lv2/osc.h> +#include <osc.lv2/endian.h> #ifdef __cplusplus extern "C" { diff --git a/osc.lv2/osc.lv2/writer.h b/osc.lv2/osc.lv2/writer.h index 4a1f449..d11cfb6 100644 --- a/osc.lv2/osc.lv2/writer.h +++ b/osc.lv2/osc.lv2/writer.h @@ -20,10 +20,10 @@ #include <stdbool.h> #include <string.h> -#include <endian.h> #include <osc.lv2/osc.h> #include <osc.lv2/util.h> +#include <osc.lv2/endian.h> #include <lv2/lv2plug.in/ns/ext/atom/util.h> |