annotate include/SDL_endian.h @ 858:5db50aa5bf08

Date: Wed, 25 Feb 2004 06:41:17 -0500 From: "Ryan C. Gordon" Subject: Re: MacOS X bugs... This isn't an ideal patch (trying to open a joystick that has previously been unplugged will report success, but it'll just never give any input, etc), but it handles the worst case of deadlock in the event subsystem.
author Sam Lantinga <slouken@libsdl.org>
date Thu, 26 Feb 2004 13:45:22 +0000
parents bab227101de4
children 6b28c91bf3d2
rev   line source
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1 /*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
769
b8d311d90021 Updated copyright information for 2004 (Happy New Year!)
Sam Lantinga <slouken@libsdl.org>
parents: 337
diff changeset
3 Copyright (C) 1997-2004 Sam Lantinga
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
4
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
9
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
13 Library General Public License for more details.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
14
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
18
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
19 Sam Lantinga
251
b8688cfdc232 Updated the headers with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents: 0
diff changeset
20 slouken@libsdl.org
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
21 */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
22
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
23 #ifdef SAVE_RCSID
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
24 static char rcsid =
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
25 "@(#) $Id$";
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
26 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
27
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
28 /* Functions for reading and writing endian-specific values */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
29
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
30 #ifndef _SDL_endian_h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
31 #define _SDL_endian_h
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
32
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
33 /* These functions read and write data of the specified endianness,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
34 dynamically translating to the host machine endianness.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
35
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
36 e.g.: If you want to read a 16 bit value on big-endian machine from
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
37 an open file containing little endian values, you would use:
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
38 value = SDL_ReadLE16(rp);
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
39 Note that the read/write functions use SDL_RWops pointers
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
40 instead of FILE pointers. This allows you to read and write
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
41 endian values from large chunks of memory as well as files
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
42 and other data sources.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
43 */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
44
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
45 #include <stdio.h>
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
46
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
47 #include "SDL_types.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
48 #include "SDL_rwops.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
49 #include "SDL_byteorder.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
50
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
51 #include "begin_code.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
52 /* Set up for C function definitions, even when using C++ */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
53 #ifdef __cplusplus
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
54 extern "C" {
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
55 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
56
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
57 /* Use inline functions for compilers that support them, and static
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
58 functions for those that do not. Because these functions become
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
59 static for compilers that do not support inline functions, this
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
60 header should only be included in files that actually use them.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
61 */
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
62 #if defined(__GNUC__) && defined(__i386__)
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 {
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
71 __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
72 return 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 #elif defined(__GNUC__) && defined(__powerpc__)
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 }
85af65457959 Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
82 #else
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
83 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
84 return((x<<8)|(x>>8));
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
85 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
86 #endif
848
85af65457959 Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
87
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
88 #if defined(__GNUC__) && defined(__i386__)
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
89 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
90 {
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
91 __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
92 return 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 #elif defined(__GNUC__) && defined(__x86_64__)
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)
848
85af65457959 Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
96 {
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
97 __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
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(__powerpc__)
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)
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
102 {
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
103 Uint32 result;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
104
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
105 __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
106 __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
107 __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
108 return result;
848
85af65457959 Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
109 }
85af65457959 Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
110 #else
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
111 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
112 return((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24));
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
113 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
114 #endif
848
85af65457959 Avoid using kernel internal headers
Sam Lantinga <slouken@libsdl.org>
parents: 769
diff changeset
115
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
116 #ifdef SDL_HAS_64BIT_TYPE
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
117 #if defined(__GNUC__) && defined(__i386__)
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
118 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
119 {
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
120 union {
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
121 struct { Uint32 a,b; } s;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
122 Uint64 u;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
123 } v;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
124 v.u = x;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
125 __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
126 : "=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
127 : "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
128 return v.u;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
129 }
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
130 #elif defined(__GNUC__) && defined(__x86_64__)
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
131 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
132 {
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
133 __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
134 return x;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
135 }
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
136 #else
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
137 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
138 {
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
139 Uint32 hi, lo;
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
140
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
141 /* Separate into high and low 32-bit values and swap them */
849
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
142 lo = (Uint32)(x&0xFFFFFFFF);
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
143 x >>= 32;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
144 hi = (Uint32)(x&0xFFFFFFFF);
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
145 x = SDL_Swap32(lo);
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
146 x <<= 32;
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
147 x |= SDL_Swap32(hi);
bab227101de4 Added inline byte swapping code for other architectures
Sam Lantinga <slouken@libsdl.org>
parents: 848
diff changeset
148 return(x);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
149 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
150 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
151 #else
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
152 /* This is mainly to keep compilers from complaining in SDL code.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
153 If there is no real 64-bit datatype, then compilers will complain about
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
154 the fake 64-bit datatype that SDL provides when it compiles user code.
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
155 */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
156 #define SDL_Swap64(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
157 #endif /* SDL_HAS_64BIT_TYPE */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
158
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
159
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
160 /* Byteswap item from the specified endianness to the native endianness */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
161 #if SDL_BYTEORDER == SDL_LIL_ENDIAN
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
162 #define SDL_SwapLE16(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
163 #define SDL_SwapLE32(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
164 #define SDL_SwapLE64(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
165 #define SDL_SwapBE16(X) SDL_Swap16(X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
166 #define SDL_SwapBE32(X) SDL_Swap32(X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
167 #define SDL_SwapBE64(X) SDL_Swap64(X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
168 #else
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
169 #define SDL_SwapLE16(X) SDL_Swap16(X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
170 #define SDL_SwapLE32(X) SDL_Swap32(X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
171 #define SDL_SwapLE64(X) SDL_Swap64(X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
172 #define SDL_SwapBE16(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
173 #define SDL_SwapBE32(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
174 #define SDL_SwapBE64(X) (X)
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
175 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
176
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
177 /* Read an item of the specified endianness and return in native format */
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
178 extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
179 extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
180 extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
181 extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
182 extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
183 extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
184
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
185 /* Write an item of native format to the specified endianness */
337
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
186 extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
187 extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
188 extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
189 extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
190 extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value);
9154ec9ca3d2 Explicitly specify the SDL API calling convention (C by default)
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
191 extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
192
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
193
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
194 /* Ends C function definitions when using C++ */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
195 #ifdef __cplusplus
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
196 }
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
197 #endif
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
198 #include "close_code.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
199
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
200 #endif /* _SDL_endian_h */