author  Sam Lantinga <slouken@libsdl.org> 
Sun, 05 Mar 2006 22:18:15 +0000  
changeset 1466  3c45c578d480 
parent 1423  4ed717f9e509 
child 1469  bf867c1e57e3 
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? */ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

35 
#if (defined(__i386__)  defined(__i386))  \ 
1423
4ed717f9e509
Updated for Visual Studio Express 2005
Sam Lantinga <slouken@libsdl.org>
parents:
1372
diff
changeset

36 
defined(_M_IX86)  \ 
1354
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

37 
defined(__ia64__)  defined(__x86_64__)  \ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

38 
(defined(__alpha__)  defined(__alpha))  \ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

39 
(defined(__arm__)  defined(__thumb__))  \ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

40 
(defined(__sh__)  defined(__sh64__))  \ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

41 
(defined(__mips__) && defined(__MIPSEL__))  \ 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

42 
defined(__SYMBIAN32__)  defined(__OS2__) 
22f39393668a
Fixed build problem with SDL_string.c
Sam Lantinga <slouken@libsdl.org>
parents:
1353
diff
changeset

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

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

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

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

47 
#endif /* !SDL_BYTEORDER */ 
0  48 

49 

50 
#include "begin_code.h" 

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

52 
#ifdef __cplusplus 

53 
extern "C" { 

54 
#endif 

55 

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

56 
/* Use inline functions for compilers that support them, and static 
0  57 
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

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

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

62 
!(__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

63 
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

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

65 
__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

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

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

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

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

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

71 
__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

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

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

74 
#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

75 
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

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

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

78 

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

79 
__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

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

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

82 
#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

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

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

85 
__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

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

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

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

89 
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

90 
return((x<<8)(x>>8)); 
0  91 
} 
92 
#endif 

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

93 

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

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

95 
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

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

97 
__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

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

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

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

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

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

103 
__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

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

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

106 
#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

107 
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

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

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

110 

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

111 
__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

112 
__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

113 
__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

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

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

116 
#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

117 
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

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

119 
__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

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

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

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

123 
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

124 
return((x<<24)((x<<8)&0x00FF0000)((x>>8)&0x0000FF00)(x>>24)); 
0  125 
} 
126 
#endif 

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

127 

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

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

130 
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

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

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

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

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

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

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

137 
__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

138 
: "=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

139 
: "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

140 
return v.u; 
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 
#elif defined(__GNUC__) && defined(__x86_64__) 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

143 
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

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

145 
__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

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

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

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

149 
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

150 
{ 
0  151 
Uint32 hi, lo; 
152 

153 
/* 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

154 
lo = (Uint32)(x&0xFFFFFFFF); 
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 
hi = (Uint32)(x&0xFFFFFFFF); 
bab227101de4
Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents:
848
diff
changeset

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

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

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

160 
return(x); 
0  161 
} 
162 
#endif 

163 
#else 

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

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

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

167 
*/ 

168 
#define SDL_Swap64(X) (X) 

169 
#endif /* SDL_HAS_64BIT_TYPE */ 

170 

171 

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

173 
#if SDL_BYTEORDER == SDL_LIL_ENDIAN 

174 
#define SDL_SwapLE16(X) (X) 

175 
#define SDL_SwapLE32(X) (X) 

176 
#define SDL_SwapLE64(X) (X) 

177 
#define SDL_SwapBE16(X) SDL_Swap16(X) 

178 
#define SDL_SwapBE32(X) SDL_Swap32(X) 

179 
#define SDL_SwapBE64(X) SDL_Swap64(X) 

180 
#else 

181 
#define SDL_SwapLE16(X) SDL_Swap16(X) 

182 
#define SDL_SwapLE32(X) SDL_Swap32(X) 

183 
#define SDL_SwapLE64(X) SDL_Swap64(X) 

184 
#define SDL_SwapBE16(X) (X) 

185 
#define SDL_SwapBE32(X) (X) 

186 
#define SDL_SwapBE64(X) (X) 

187 
#endif 

188 

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

190 
#ifdef __cplusplus 

191 
} 

192 
#endif 

193 
#include "close_code.h" 

194 

195 
#endif /* _SDL_endian_h */ 