RetroArch
deps
libFLAC
include
share
endswap.h
Go to the documentation of this file.
1
/* libFLAC - Free Lossless Audio Codec library
2
* Copyright (C) 2012-2016 Xiph.org Foundation
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
*
8
* - Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
*
11
* - Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* - Neither the name of the Xiph.org Foundation nor the names of its
16
* contributors may be used to endorse or promote products derived from
17
* this software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
/* It is assumed that this header will be included after "config.h". */
33
34
#if HAVE_BSWAP32
/* GCC and Clang */
35
36
/* GCC prior to 4.8 didn't provide bswap16 on x86_64 */
37
#if ! HAVE_BSWAP16
38
static
inline
unsigned
short
__builtin_bswap16(
unsigned
short
a
)
39
{
40
return
(
a
<<8)|(
a
>>8);
41
}
42
#endif
43
44
#define ENDSWAP_16(x) (__builtin_bswap16 (x))
45
#define ENDSWAP_32(x) (__builtin_bswap32 (x))
46
#define ENDSWAP_64(x) (__builtin_bswap64 (x))
47
48
#elif defined _MSC_VER
/* Windows */
49
50
#include <stdlib.h>
51
52
#define ENDSWAP_16(x) (_byteswap_ushort (x))
53
#define ENDSWAP_32(x) (_byteswap_ulong (x))
54
#define ENDSWAP_64(x) (_byteswap_uint64 (x))
55
56
#elif defined HAVE_BYTESWAP_H
/* Linux */
57
58
#include <byteswap.h>
59
60
#define ENDSWAP_16(x) (bswap_16 (x))
61
#define ENDSWAP_32(x) (bswap_32 (x))
62
#define ENDSWAP_64(x) (bswap_64 (x))
63
64
#else
65
66
#define ENDSWAP_16(x) ((((x) >> 8) & 0xFF) | (((x) & 0xFF) << 8))
67
#define ENDSWAP_32(x) ((((x) >> 24) & 0xFF) | (((x) >> 8) & 0xFF00) | (((x) & 0xFF00) << 8) | (((x) & 0xFF) << 24))
68
#define ENDSWAP_64(x) ((ENDSWAP_32(((x) >> 32) & 0xFFFFFFFF)) | (ENDSWAP_32((x) & 0xFFFFFFFF) << 32))
69
70
#endif
71
72
73
/* Host to little-endian byte swapping (for MD5 calculation) */
74
#if CPU_IS_BIG_ENDIAN
75
76
#define H2LE_16(x) ENDSWAP_16 (x)
77
#define H2LE_32(x) ENDSWAP_32 (x)
78
79
#else
80
81
#define H2LE_16(x) (x)
82
#define H2LE_32(x) (x)
83
84
#endif
a
GLboolean GLboolean GLboolean GLboolean a
Definition:
glext.h:6844
Generated by
1.8.15