comparison include/SDL_endian.h @ 1984:b910bcabec26

Added SDL_SwapFloat* function/macros. Reference Bugzilla #293.
author Ryan C. Gordon <icculus@icculus.org>
date Thu, 24 Aug 2006 12:49:59 +0000
parents c121d94672cb
children 8055185ae4ed
comparison
equal deleted inserted replaced
1983:ee73925ddf14 1984:b910bcabec26
190 */ 190 */
191 #define SDL_Swap64(X) (X) 191 #define SDL_Swap64(X) (X)
192 #endif /* SDL_HAS_64BIT_TYPE */ 192 #endif /* SDL_HAS_64BIT_TYPE */
193 193
194 194
195 static __inline__ float
196 SDL_SwapFloat(float x)
197 {
198 union { float f; Uint32 ui32; } swapper;
199 swapper.f = x;
200 swapper.ui32 = SDL_Swap32(swapper.ui32);
201 return swapper.f;
202 }
203
204
195 /* Byteswap item from the specified endianness to the native endianness */ 205 /* Byteswap item from the specified endianness to the native endianness */
196 #if SDL_BYTEORDER == SDL_LIL_ENDIAN 206 #if SDL_BYTEORDER == SDL_LIL_ENDIAN
197 #define SDL_SwapLE16(X) (X) 207 #define SDL_SwapLE16(X) (X)
198 #define SDL_SwapLE32(X) (X) 208 #define SDL_SwapLE32(X) (X)
199 #define SDL_SwapLE64(X) (X) 209 #define SDL_SwapLE64(X) (X)
210 #define SDL_SwapFloatLE(X) (X)
200 #define SDL_SwapBE16(X) SDL_Swap16(X) 211 #define SDL_SwapBE16(X) SDL_Swap16(X)
201 #define SDL_SwapBE32(X) SDL_Swap32(X) 212 #define SDL_SwapBE32(X) SDL_Swap32(X)
202 #define SDL_SwapBE64(X) SDL_Swap64(X) 213 #define SDL_SwapBE64(X) SDL_Swap64(X)
214 #define SDL_SwapFloatBE(X) SDL_SwapFloat(X)
203 #else 215 #else
204 #define SDL_SwapLE16(X) SDL_Swap16(X) 216 #define SDL_SwapLE16(X) SDL_Swap16(X)
205 #define SDL_SwapLE32(X) SDL_Swap32(X) 217 #define SDL_SwapLE32(X) SDL_Swap32(X)
206 #define SDL_SwapLE64(X) SDL_Swap64(X) 218 #define SDL_SwapLE64(X) SDL_Swap64(X)
219 #define SDL_SwapFloatLE(X) SDL_SwapFloat(X)
207 #define SDL_SwapBE16(X) (X) 220 #define SDL_SwapBE16(X) (X)
208 #define SDL_SwapBE32(X) (X) 221 #define SDL_SwapBE32(X) (X)
209 #define SDL_SwapBE64(X) (X) 222 #define SDL_SwapBE64(X) (X)
223 #define SDL_SwapFloatBE(X) (X)
210 #endif 224 #endif
211 225
212 /* Ends C function definitions when using C++ */ 226 /* Ends C function definitions when using C++ */
213 #ifdef __cplusplus 227 #ifdef __cplusplus
214 /* *INDENT-OFF* */ 228 /* *INDENT-OFF* */