author  Sam Lantinga <slouken@libsdl.org> 
Tue, 21 Mar 2006 07:02:34 +0000  
changeset 1564  4950a25bd91e 
parent 1475  d45aefcac017 
child 1662  782fd950bd46 
child 1895  c121d94672cb 
child 3909  6832b00d3594 
permissions  rwrr 
0  1 
/* 
2 
SDL  Simple DirectMedia Layer 

1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

3 
Copyright (C) 19972006 Sam Lantinga 
0  4 

5 
This library is free software; you can redistribute it and/or 

1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

6 
modify it under the terms of the GNU Lesser General Public 
0  7 
License as published by the Free Software Foundation; either 
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

8 
version 2.1 of the License, or (at your option) any later version. 
0  9 

10 
This library is distributed in the hope that it will be useful, 

11 
but WITHOUT ANY WARRANTY; without even the implied warranty of 

12 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 

1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

13 
Lesser General Public License for more details. 
0  14 

1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

15 
You should have received a copy of the GNU Lesser General Public 
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

16 
License along with this library; if not, write to the Free Software 
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1044
diff
changeset

17 
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA 
0  18 

19 
Sam Lantinga 

251
b8688cfdc232
Updated the headers with the correct email address
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset

20 
slouken@libsdl.org 
0  21 
*/ 
22 

23 
/* Functions for reading and writing endianspecific values */ 

24 

25 
#ifndef _SDL_endian_h 

26 
#define _SDL_endian_h 

27 

1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

28 
#include "SDL_stdinc.h" 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

29 

22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

30 
/* The two types of endianness */ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

31 
#define SDL_LIL_ENDIAN 1234 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

32 
#define SDL_BIG_ENDIAN 4321 
0  33 

1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

34 
#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ 
1474
351d757c7edd
Maybe it's easier to collect the bigendian architectures. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1469
diff
changeset

35 
#if defined(__hppa__)  \ 
1475
d45aefcac017
Get Microsoft's preprocessor symbols in there
Sam Lantinga <slouken@libsdl.org>
parents:
1474
diff
changeset

36 
defined(__m68k__)  defined(mc68000)  defined(_M_M68K)  \ 
1474
351d757c7edd
Maybe it's easier to collect the bigendian architectures. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1469
diff
changeset

37 
(defined(__MIPS__) && defined(__MISPEB__))  \ 
1475
d45aefcac017
Get Microsoft's preprocessor symbols in there
Sam Lantinga <slouken@libsdl.org>
parents:
1474
diff
changeset

38 
defined(__ppc__)  defined(__POWERPC__)  defined(_M_PPC)  \ 
1474
351d757c7edd
Maybe it's easier to collect the bigendian architectures. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1469
diff
changeset

39 
defined(__sparc__) 
351d757c7edd
Maybe it's easier to collect the bigendian architectures. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1469
diff
changeset

40 
#define SDL_BYTEORDER SDL_BIG_ENDIAN 
351d757c7edd
Maybe it's easier to collect the bigendian architectures. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1469
diff
changeset

41 
#else 
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

42 
#define SDL_BYTEORDER SDL_LIL_ENDIAN 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

43 
#endif 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

44 
#endif /* !SDL_BYTEORDER */ 
0  45 

46 

47 
#include "begin_code.h" 

48 
/* Set up for C function definitions, even when using C++ */ 

49 
#ifdef __cplusplus 

50 
extern "C" { 

51 
#endif 

52 

1369
42eeb14770e3
Doh! Bitten by search and replace. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset

53 
/* Use inline functions for compilers that support them, and static 
0  54 
functions for those that do not. Because these functions become 
1369
42eeb14770e3
Doh! Bitten by search and replace. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset

55 
static for compilers that do not support inline functions, this 
0  56 
header should only be included in files that actually use them. 
57 
*/ 

1372  58 
#if defined(__GNUC__) && defined(__i386__) && \ 
1368
533567cbb576
More fixes for building on BeOS
Sam Lantinga <slouken@libsdl.org>
parents:
1354
diff
changeset

59 
!(__GNUC__ == 2 && __GNUC_MINOR__ == 95 /* broken gcc version */) 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

60 
static __inline__ Uint16 SDL_Swap16(Uint16 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

61 
{ 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

62 
__asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

63 
return x; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

64 
} 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

65 
#elif defined(__GNUC__) && defined(__x86_64__) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

66 
static __inline__ Uint16 SDL_Swap16(Uint16 x) 
848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

67 
{ 
1033
aebfa3ce2a53
The fix is going back in. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1031
diff
changeset

68 
__asm__("xchgb %b0,%h0" : "=Q" (x) : "0" (x)); 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

69 
return x; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

70 
} 
859
6b28c91bf3d2
This works on MacOS X too. :)
Sam Lantinga <slouken@libsdl.org>
parents:
849
diff
changeset

71 
#elif defined(__GNUC__) && (defined(__powerpc__)  defined(__ppc__)) 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

72 
static __inline__ Uint16 SDL_Swap16(Uint16 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

73 
{ 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

74 
Uint16 result; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

75 

bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

76 
__asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

77 
return result; 
848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

78 
} 
1044
d36ea7925763
Optimize also for 68020 and higher CPUs
Patrice Mandin <patmandin@gmail.com>
parents:
1033
diff
changeset

79 
#elif defined(__GNUC__) && (defined(__M68000__)  defined(__M68020__)) 
985
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

80 
static __inline__ Uint16 SDL_Swap16(Uint16 x) 
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

81 
{ 
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

82 
__asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc"); 
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

83 
return x; 
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

84 
} 
848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

85 
#else 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

86 
static __inline__ Uint16 SDL_Swap16(Uint16 x) { 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

87 
return((x<<8)(x>>8)); 
0  88 
} 
89 
#endif 

848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

90 

849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

91 
#if defined(__GNUC__) && defined(__i386__) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

92 
static __inline__ Uint32 SDL_Swap32(Uint32 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

93 
{ 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

94 
__asm__("bswap %0" : "=r" (x) : "0" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

95 
return x; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

96 
} 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

97 
#elif defined(__GNUC__) && defined(__x86_64__) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

98 
static __inline__ Uint32 SDL_Swap32(Uint32 x) 
848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

99 
{ 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

100 
__asm__("bswapl %0" : "=r" (x) : "0" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

101 
return x; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

102 
} 
859
6b28c91bf3d2
This works on MacOS X too. :)
Sam Lantinga <slouken@libsdl.org>
parents:
849
diff
changeset

103 
#elif defined(__GNUC__) && (defined(__powerpc__)  defined(__ppc__)) 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

104 
static __inline__ Uint32 SDL_Swap32(Uint32 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

105 
{ 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

106 
Uint32 result; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

107 

bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

108 
__asm__("rlwimi %0,%2,24,16,23" : "=&r" (result) : "0" (x>>24), "r" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

109 
__asm__("rlwimi %0,%2,8,8,15" : "=&r" (result) : "0" (result), "r" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

110 
__asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

111 
return result; 
848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

112 
} 
1044
d36ea7925763
Optimize also for 68020 and higher CPUs
Patrice Mandin <patmandin@gmail.com>
parents:
1033
diff
changeset

113 
#elif defined(__GNUC__) && (defined(__M68000__)  defined(__M68020__)) 
994
c4e5473672b6
Wrong size of parameters for SDL_Swap32 m68k assembly routine
Patrice Mandin <patmandin@gmail.com>
parents:
985
diff
changeset

114 
static __inline__ Uint32 SDL_Swap32(Uint32 x) 
985
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

115 
{ 
1044
d36ea7925763
Optimize also for 68020 and higher CPUs
Patrice Mandin <patmandin@gmail.com>
parents:
1033
diff
changeset

116 
__asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc"); 
985
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

117 
return x; 
cec525374267
Add m68k assembly routines for endianness conversion
Patrice Mandin <patmandin@gmail.com>
parents:
859
diff
changeset

118 
} 
848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

119 
#else 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

120 
static __inline__ Uint32 SDL_Swap32(Uint32 x) { 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

121 
return((x<<24)((x<<8)&0x00FF0000)((x>>8)&0x0000FF00)(x>>24)); 
0  122 
} 
123 
#endif 

848
85af65457959
Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset

124 

0  125 
#ifdef SDL_HAS_64BIT_TYPE 
849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

126 
#if defined(__GNUC__) && defined(__i386__) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

127 
static __inline__ Uint64 SDL_Swap64(Uint64 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

128 
{ 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

129 
union { 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

130 
struct { Uint32 a,b; } s; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

131 
Uint64 u; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

132 
} v; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

133 
v.u = x; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

134 
__asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

135 
: "=r" (v.s.a), "=r" (v.s.b) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

136 
: "0" (v.s.a), "1" (v.s.b)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

137 
return v.u; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

138 
} 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

139 
#elif defined(__GNUC__) && defined(__x86_64__) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

140 
static __inline__ Uint64 SDL_Swap64(Uint64 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

141 
{ 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

142 
__asm__("bswapq %0" : "=r" (x) : "0" (x)); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

143 
return x; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

144 
} 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

145 
#else 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

146 
static __inline__ Uint64 SDL_Swap64(Uint64 x) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

147 
{ 
0  148 
Uint32 hi, lo; 
149 

150 
/* Separate into high and low 32bit values and swap them */ 

849
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

151 
lo = (Uint32)(x&0xFFFFFFFF); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

152 
x >>= 32; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

153 
hi = (Uint32)(x&0xFFFFFFFF); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

154 
x = SDL_Swap32(lo); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

155 
x <<= 32; 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

156 
x = SDL_Swap32(hi); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

157 
return(x); 
0  158 
} 
159 
#endif 

160 
#else 

161 
/* This is mainly to keep compilers from complaining in SDL code. 

162 
If there is no real 64bit datatype, then compilers will complain about 

163 
the fake 64bit datatype that SDL provides when it compiles user code. 

164 
*/ 

165 
#define SDL_Swap64(X) (X) 

166 
#endif /* SDL_HAS_64BIT_TYPE */ 

167 

168 

169 
/* Byteswap item from the specified endianness to the native endianness */ 

170 
#if SDL_BYTEORDER == SDL_LIL_ENDIAN 

171 
#define SDL_SwapLE16(X) (X) 

172 
#define SDL_SwapLE32(X) (X) 

173 
#define SDL_SwapLE64(X) (X) 

174 
#define SDL_SwapBE16(X) SDL_Swap16(X) 

175 
#define SDL_SwapBE32(X) SDL_Swap32(X) 

176 
#define SDL_SwapBE64(X) SDL_Swap64(X) 

177 
#else 

178 
#define SDL_SwapLE16(X) SDL_Swap16(X) 

179 
#define SDL_SwapLE32(X) SDL_Swap32(X) 

180 
#define SDL_SwapLE64(X) SDL_Swap64(X) 

181 
#define SDL_SwapBE16(X) (X) 

182 
#define SDL_SwapBE32(X) (X) 

183 
#define SDL_SwapBE64(X) (X) 

184 
#endif 

185 

186 
/* Ends C function definitions when using C++ */ 

187 
#ifdef __cplusplus 

188 
} 

189 
#endif 

190 
#include "close_code.h" 

191 

192 
#endif /* _SDL_endian_h */ 