3
// Copyright (C) 2001, Colin Walters <walters@verbum.org>
5
// This program is free software; you can redistribute it and/or
6
// modify it under the terms of the GNU General Public License
7
// as published by the Free Software Foundation; either version 2
8
// of the License, or (at your option) any later version.
17
/* Use the system byteswap.h definitions if we have them */
18
#ifdef HAVE_BYTESWAP_H
21
static unsigned short bswap_16 (unsigned short val)
23
return ((((val) >> 8) & 0xff) | (((val) & 0xff) << 8));
26
static unsigned int bswap_32(unsigned int val) {
27
return (((val) & 0xff000000) >> 24) | (((val) & 0x00ff0000) >> 8) |
28
(((val) & 0x0000ff00) << 8) | (((val) & 0x000000ff) << 24);
32
#define SWAP_FLOAT(x, y) do { *(unsigned int *)&x = bswap_32( *(unsigned int *)&y ); } while (0)
34
#ifdef WORDS_BIGENDIAN
36
#define LE_TO_CPU_INT16(ret, val) (ret = bswap_16(val))
38
#define LE_TO_CPU_INT32(ret, val) (ret = bswap_32(val))
40
#define LE_TO_CPU_FLOAT(ret, val) SWAP_FLOAT(ret, val)
42
#define BE_TO_CPU_INT16(ret, val) (ret = val)
44
#define BE_TO_CPU_INT32(ret, val) (ret = val)
46
#define BE_TO_CPU_FLOAT(ret, val) (ret = val)
50
#define BE_TO_CPU_INT16(ret, val) (ret = bswap_16(val))
52
#define BE_TO_CPU_INT32(ret, val) (ret = bswap_32(val))
54
#define BE_TO_CPU_FLOAT(ret, val) SWAP_FLOAT(ret, val)
56
#define LE_TO_CPU_INT16(ret, val) (ret = val)
58
#define LE_TO_CPU_INT32(ret, val) (ret = val)
60
#define LE_TO_CPU_FLOAT(ret, val) (ret = val)