Mercurial > sdl-ios-xcode
annotate include/SDL_stdinc.h @ 1675:d33dcfc3fde7 SDL-1.3
Overlay functions are being replaced by YUV textures.
If the driver doesn't support YUV textures, they can be emulated by backing
the texture with an RGB texture and using the software conversion routines.
Note that it doesn't make sense to lock a portion of a YV12 texture, since
you'd need to return three pixel pointers and pitch values instead of the
one that's available through the API. I'm guessing that's one of the reasons
DirectX 9 doesn't support this format at all.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 11 Jun 2006 07:30:16 +0000 |
parents | 4da1ee79c9af |
children | 3695d3637045 |
rev | line source |
---|---|
1357 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
3 Copyright (C) 1997-2006 Sam Lantinga | |
4 | |
5 This library is free software; you can redistribute it and/or | |
6 modify it under the terms of the GNU Lesser General Public | |
7 License as published by the Free Software Foundation; either | |
8 version 2.1 of the License, or (at your option) any later version. | |
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 | |
13 Lesser General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU Lesser General Public | |
16 License along with this library; if not, write to the Free Software | |
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
18 | |
19 Sam Lantinga | |
20 slouken@libsdl.org | |
21 */ | |
22 | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
23 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
24 * \file SDL_stdinc.h |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
25 * |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
26 * This is a general header that includes C language support |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
27 */ |
1357 | 28 |
29 #ifndef _SDL_stdinc_h | |
30 #define _SDL_stdinc_h | |
31 | |
32 #include "SDL_config.h" | |
33 | |
34 | |
1626 | 35 #ifdef HAVE_SYS_TYPES_H |
1357 | 36 #include <sys/types.h> |
37 #endif | |
1626 | 38 #ifdef HAVE_STDIO_H |
1357 | 39 #include <stdio.h> |
40 #endif | |
1626 | 41 #if defined(STDC_HEADERS) |
1357 | 42 # include <stdlib.h> |
43 # include <stddef.h> | |
44 # include <stdarg.h> | |
45 #else | |
1626 | 46 # if defined(HAVE_STDLIB_H) |
47 # include <stdlib.h> | |
48 # elif defined(HAVE_MALLOC_H) | |
49 # include <malloc.h> | |
1357 | 50 # endif |
1626 | 51 # if defined(HAVE_STDDEF_H) |
52 # include <stddef.h> | |
1422
d2ee8da60262
Added pre-configured versions of SDL_config.h for various platforms
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
53 # endif |
1626 | 54 # if defined(HAVE_STDARG_H) |
55 # include <stdarg.h> | |
1357 | 56 # endif |
57 #endif | |
1626 | 58 #ifdef HAVE_STRING_H |
59 # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) | |
60 # include <memory.h> | |
1357 | 61 # endif |
62 # include <string.h> | |
63 #endif | |
1626 | 64 #ifdef HAVE_STRINGS_H |
1357 | 65 # include <strings.h> |
66 #endif | |
1626 | 67 #if defined(HAVE_INTTYPES_H) |
1357 | 68 # include <inttypes.h> |
1626 | 69 #elif defined(HAVE_STDINT_H) |
1357 | 70 # include <stdint.h> |
71 #endif | |
1626 | 72 #ifdef HAVE_CTYPE_H |
1357 | 73 # include <ctype.h> |
74 #endif | |
1626 | 75 #ifdef HAVE_ICONV_H |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
76 # include <iconv.h> |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
77 #endif |
1357 | 78 |
79 /* The number of elements in an array */ | |
80 #define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) | |
81 #define SDL_TABLESIZE(table) SDL_arraysize(table) | |
82 | |
83 /* Basic data types */ | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
84 typedef enum SDL_bool |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
85 { |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
86 SDL_FALSE = 0, |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
87 SDL_TRUE = 1 |
1357 | 88 } SDL_bool; |
89 | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
90 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
91 * \typedef Sint8 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
92 * \brief A signed 8-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
93 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
94 typedef int8_t Sint8; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
95 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
96 * \typedef Uint8 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
97 * \brief An unsigned 8-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
98 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
99 typedef uint8_t Uint8; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
100 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
101 * \typedef Sint16 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
102 * \brief A signed 16-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
103 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
104 typedef int16_t Sint16; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
105 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
106 * \typedef Uint16 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
107 * \brief An unsigned 16-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
108 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
109 typedef uint16_t Uint16; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
110 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
111 * \typedef Sint32 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
112 * \brief A signed 32-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
113 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
114 typedef int32_t Sint32; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
115 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
116 * \typedef Uint32 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
117 * \brief An unsigned 32-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
118 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
119 typedef uint32_t Uint32; |
1357 | 120 |
121 #ifdef SDL_HAS_64BIT_TYPE | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
122 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
123 * \typedef Sint64 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
124 * \brief A signed 64-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
125 * \warning On platforms without any sort of 64-bit datatype, this is equivalent to Sint32! |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
126 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
127 typedef int64_t Sint64; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
128 /** |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
129 * \typedef Uint64 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
130 * \brief An unsigned 64-bit integer type. |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
131 * \warning On platforms without any sort of 64-bit datatype, this is equivalent to Uint32! |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
132 */ |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
133 typedef uint64_t Uint64; |
1357 | 134 #else |
135 /* This is really just a hack to prevent the compiler from complaining */ | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
136 typdef Sint32 Sint64; |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
137 typdef Uint32 Uint32; |
1357 | 138 #endif |
139 | |
140 /* Make sure the types really have the right sizes */ | |
141 #define SDL_COMPILE_TIME_ASSERT(name, x) \ | |
142 typedef int SDL_dummy_ ## name[(x) * 2 - 1] | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
143 #ifndef DOXYGEN_SHOULD_IGNORE_THIS |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
144 SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
145 SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
146 SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
147 SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
148 SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
149 SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
150 SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
151 SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
152 #endif /* DOXYGEN_SHOULD_IGNORE_THIS */ |
1357 | 153 |
154 /* Check to make sure enums are the size of ints, for structure packing. | |
155 For both Watcom C/C++ and Borland C/C++ the compiler option that makes | |
156 enums having the size of an int must be enabled. | |
157 This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). | |
158 */ | |
159 /* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ | |
160 #ifdef __MWERKS__ | |
161 #pragma enumsalwaysint on | |
162 #endif | |
163 | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
164 #ifndef DOXYGEN_SHOULD_IGNORE_THIS |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
165 typedef enum |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
166 { |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
167 DUMMY_ENUM_VALUE |
1357 | 168 } SDL_DUMMY_ENUM; |
169 | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
170 SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
171 #endif /* DOXYGEN_SHOULD_IGNORE_THIS */ |
1357 | 172 |
173 #include "begin_code.h" | |
174 /* Set up for C function definitions, even when using C++ */ | |
175 #ifdef __cplusplus | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
176 /* *INDENT-OFF* */ |
1357 | 177 extern "C" { |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
178 /* *INDENT-ON* */ |
1357 | 179 #endif |
180 | |
1626 | 181 #ifdef HAVE_MALLOC |
1357 | 182 #define SDL_malloc malloc |
183 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
184 extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); |
1357 | 185 #endif |
186 | |
1626 | 187 #ifdef HAVE_CALLOC |
1357 | 188 #define SDL_calloc calloc |
189 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
190 extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); |
1357 | 191 #endif |
192 | |
1626 | 193 #ifdef HAVE_REALLOC |
1357 | 194 #define SDL_realloc realloc |
195 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
196 extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); |
1357 | 197 #endif |
198 | |
1626 | 199 #ifdef HAVE_FREE |
1357 | 200 #define SDL_free free |
201 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
202 extern DECLSPEC void SDLCALL SDL_free(void *mem); |
1357 | 203 #endif |
204 | |
1626 | 205 #if defined(HAVE_ALLOCA) && !defined(alloca) |
206 # if defined(HAVE_ALLOCA_H) | |
1381
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
207 # include <alloca.h> |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1381
diff
changeset
|
208 # elif defined(__GNUC__) |
1381
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
209 # define alloca __builtin_alloca |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1381
diff
changeset
|
210 # elif defined(_MSC_VER) |
1381
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
211 # include <malloc.h> |
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
212 # define alloca _alloca |
1659 | 213 # elif defined(__WATCOMC__) |
214 # include <malloc.h> | |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1381
diff
changeset
|
215 # elif defined(__AIX__) |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
216 #pragma alloca |
1659 | 217 # elif defined(__MRC__) |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
218 void *alloca(unsigned); |
1381
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
219 # else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
220 char *alloca(); |
1381
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
221 # endif |
8570e1f4b1f1
On FreeBSD, alloca is defined in stdlib.h
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
222 #endif |
1626 | 223 #ifdef HAVE_ALLOCA |
1357 | 224 #define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*count) |
225 #define SDL_stack_free(data) | |
226 #else | |
227 #define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*count) | |
228 #define SDL_stack_free(data) SDL_free(data) | |
229 #endif | |
230 | |
1626 | 231 #ifdef HAVE_GETENV |
1357 | 232 #define SDL_getenv getenv |
233 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
234 extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); |
1357 | 235 #endif |
236 | |
1626 | 237 #ifdef HAVE_PUTENV |
1357 | 238 #define SDL_putenv putenv |
239 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
240 extern DECLSPEC int SDLCALL SDL_putenv(const char *variable); |
1357 | 241 #endif |
242 | |
1626 | 243 #ifdef HAVE_QSORT |
1357 | 244 #define SDL_qsort qsort |
245 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
246 extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
247 int (*compare) (const void *, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
248 const void *)); |
1357 | 249 #endif |
250 | |
1626 | 251 #ifdef HAVE_ABS |
1357 | 252 #define SDL_abs abs |
253 #else | |
254 #define SDL_abs(X) ((X) < 0 ? -(X) : (X)) | |
255 #endif | |
256 | |
1379
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset
|
257 #define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) |
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset
|
258 #define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) |
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset
|
259 |
1626 | 260 #ifdef HAVE_CTYPE_H |
1357 | 261 #define SDL_isdigit(X) isdigit(X) |
262 #define SDL_isspace(X) isspace(X) | |
263 #define SDL_toupper(X) toupper(X) | |
264 #define SDL_tolower(X) tolower(X) | |
265 #else | |
266 #define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9')) | |
267 #define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n')) | |
268 #define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X)) | |
269 #define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X)) | |
270 #endif | |
271 | |
1626 | 272 #ifdef HAVE_MEMSET |
1357 | 273 #define SDL_memset memset |
274 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
275 extern DECLSPEC void *SDLCALL SDL_memset(void *dst, int c, size_t len); |
1357 | 276 #endif |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
277 #define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
278 #define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) |
1357 | 279 |
280 #if defined(__GNUC__) && defined(i386) | |
281 #define SDL_memset4(dst, val, len) \ | |
282 do { \ | |
283 int u0, u1, u2; \ | |
284 __asm__ __volatile__ ( \ | |
285 "cld\n\t" \ | |
286 "rep ; stosl\n\t" \ | |
287 : "=&D" (u0), "=&a" (u1), "=&c" (u2) \ | |
288 : "0" (dst), "1" (val), "2" ((Uint32)(len)) \ | |
289 : "memory" ); \ | |
290 } while(0) | |
291 #endif | |
292 #ifndef SDL_memset4 | |
293 #define SDL_memset4(dst, val, len) \ | |
294 do { \ | |
295 unsigned _count = (len); \ | |
296 unsigned _n = (_count + 3) / 4; \ | |
297 Uint32 *_p = (Uint32 *)(dst); \ | |
298 Uint32 _val = (val); \ | |
299 switch (_count % 4) { \ | |
300 case 0: do { *_p++ = _val; \ | |
301 case 3: *_p++ = _val; \ | |
302 case 2: *_p++ = _val; \ | |
303 case 1: *_p++ = _val; \ | |
304 } while ( --_n ); \ | |
305 } \ | |
306 } while(0) | |
307 #endif | |
308 | |
309 #if defined(__GNUC__) && defined(i386) | |
310 #define SDL_memcpy(dst, src, len) \ | |
311 do { \ | |
312 int u0, u1, u2; \ | |
313 __asm__ __volatile__ ( \ | |
314 "cld\n\t" \ | |
315 "rep ; movsl\n\t" \ | |
316 "testb $2,%b4\n\t" \ | |
317 "je 1f\n\t" \ | |
318 "movsw\n" \ | |
319 "1:\ttestb $1,%b4\n\t" \ | |
320 "je 2f\n\t" \ | |
321 "movsb\n" \ | |
322 "2:" \ | |
323 : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ | |
324 : "0" ((unsigned)(len)/4), "q" (len), "1" (dst),"2" (src) \ | |
325 : "memory" ); \ | |
326 } while(0) | |
327 #endif | |
328 #ifndef SDL_memcpy | |
1626 | 329 #ifdef HAVE_MEMCPY |
1357 | 330 #define SDL_memcpy memcpy |
1626 | 331 #elif defined(HAVE_BCOPY) |
1357 | 332 #define SDL_memcpy(d, s, n) bcopy((s), (d), (n)) |
333 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
334 extern DECLSPEC void *SDLCALL SDL_memcpy(void *dst, const void *src, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
335 size_t len); |
1357 | 336 #endif |
337 #endif | |
338 | |
339 #if defined(__GNUC__) && defined(i386) | |
340 #define SDL_memcpy4(dst, src, len) \ | |
341 do { \ | |
342 int ecx, edi, esi; \ | |
343 __asm__ __volatile__ ( \ | |
344 "cld\n\t" \ | |
345 "rep ; movsl" \ | |
346 : "=&c" (ecx), "=&D" (edi), "=&S" (esi) \ | |
347 : "0" ((unsigned)(len)), "1" (dst), "2" (src) \ | |
348 : "memory" ); \ | |
349 } while(0) | |
350 #endif | |
351 #ifndef SDL_memcpy4 | |
352 #define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2) | |
353 #endif | |
354 | |
355 #if defined(__GNUC__) && defined(i386) | |
356 #define SDL_revcpy(dst, src, len) \ | |
357 do { \ | |
358 int u0, u1, u2; \ | |
359 char *dstp = (char *)(dst); \ | |
360 char *srcp = (char *)(src); \ | |
361 int n = (len); \ | |
362 if ( n >= 4 ) { \ | |
363 __asm__ __volatile__ ( \ | |
364 "std\n\t" \ | |
365 "rep ; movsl\n\t" \ | |
366 : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ | |
367 : "0" (n >> 2), \ | |
368 "1" (dstp+(n-4)), "2" (srcp+(n-4)) \ | |
369 : "memory" ); \ | |
370 } \ | |
371 switch (n & 3) { \ | |
372 case 3: dstp[2] = srcp[2]; \ | |
373 case 2: dstp[1] = srcp[1]; \ | |
374 case 1: dstp[0] = srcp[0]; \ | |
375 break; \ | |
376 default: \ | |
377 break; \ | |
378 } \ | |
379 } while(0) | |
380 #endif | |
381 #ifndef SDL_revcpy | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
382 extern DECLSPEC void *SDLCALL SDL_revcpy(void *dst, const void *src, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
383 size_t len); |
1357 | 384 #endif |
385 | |
1626 | 386 #ifdef HAVE_MEMMOVE |
1357 | 387 #define SDL_memmove memmove |
1626 | 388 #elif defined(HAVE_BCOPY) |
1357 | 389 #define SDL_memmove(d, s, n) bcopy((s), (d), (n)) |
390 #else | |
391 #define SDL_memmove(dst, src, len) \ | |
392 do { \ | |
393 if ( dst < src ) { \ | |
394 SDL_memcpy(dst, src, len); \ | |
395 } else { \ | |
396 SDL_revcpy(dst, src, len); \ | |
397 } \ | |
398 } while(0) | |
399 #endif | |
400 | |
1626 | 401 #ifdef HAVE_MEMCMP |
1357 | 402 #define SDL_memcmp memcmp |
403 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
404 extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
405 size_t len); |
1357 | 406 #endif |
407 | |
1626 | 408 #ifdef HAVE_STRLEN |
1357 | 409 #define SDL_strlen strlen |
410 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
411 extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string); |
1357 | 412 #endif |
413 | |
1626 | 414 #ifdef HAVE_STRLCPY |
1379
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset
|
415 #define SDL_strlcpy strlcpy |
1357 | 416 #else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
417 extern DECLSPEC size_t SDLCALL SDL_strlcpy(char *dst, const char *src, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
418 size_t maxlen); |
1357 | 419 #endif |
420 | |
1626 | 421 #ifdef HAVE_STRLCAT |
1379
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1368
diff
changeset
|
422 #define SDL_strlcat strlcat |
1357 | 423 #else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
424 extern DECLSPEC size_t SDLCALL SDL_strlcat(char *dst, const char *src, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
425 size_t maxlen); |
1357 | 426 #endif |
427 | |
1626 | 428 #ifdef HAVE_STRDUP |
1357 | 429 #define SDL_strdup strdup |
430 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
431 extern DECLSPEC char *SDLCALL SDL_strdup(const char *string); |
1357 | 432 #endif |
433 | |
1626 | 434 #ifdef HAVE__STRREV |
1357 | 435 #define SDL_strrev _strrev |
436 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
437 extern DECLSPEC char *SDLCALL SDL_strrev(char *string); |
1357 | 438 #endif |
439 | |
1626 | 440 #ifdef HAVE__STRUPR |
1357 | 441 #define SDL_strupr _strupr |
442 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
443 extern DECLSPEC char *SDLCALL SDL_strupr(char *string); |
1357 | 444 #endif |
445 | |
1626 | 446 #ifdef HAVE__STRLWR |
1357 | 447 #define SDL_strlwr _strlwr |
448 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
449 extern DECLSPEC char *SDLCALL SDL_strlwr(char *string); |
1357 | 450 #endif |
451 | |
1626 | 452 #ifdef HAVE_STRCHR |
1357 | 453 #define SDL_strchr strchr |
1626 | 454 #elif defined(HAVE_INDEX) |
1357 | 455 #define SDL_strchr index |
456 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
457 extern DECLSPEC char *SDLCALL SDL_strchr(const char *string, int c); |
1357 | 458 #endif |
459 | |
1626 | 460 #ifdef HAVE_STRRCHR |
1357 | 461 #define SDL_strrchr strrchr |
1626 | 462 #elif defined(HAVE_RINDEX) |
1357 | 463 #define SDL_strrchr rindex |
464 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
465 extern DECLSPEC char *SDLCALL SDL_strrchr(const char *string, int c); |
1357 | 466 #endif |
467 | |
1626 | 468 #ifdef HAVE_STRSTR |
1357 | 469 #define SDL_strstr strstr |
470 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
471 extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
472 const char *needle); |
1357 | 473 #endif |
474 | |
1626 | 475 #ifdef HAVE_ITOA |
1357 | 476 #define SDL_itoa itoa |
477 #else | |
478 #define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix) | |
479 #endif | |
480 | |
1626 | 481 #ifdef HAVE__LTOA |
1357 | 482 #define SDL_ltoa _ltoa |
483 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
484 extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *string, int radix); |
1357 | 485 #endif |
486 | |
1626 | 487 #ifdef HAVE__UITOA |
1357 | 488 #define SDL_uitoa _uitoa |
489 #else | |
490 #define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix) | |
491 #endif | |
492 | |
1626 | 493 #ifdef HAVE__ULTOA |
1357 | 494 #define SDL_ultoa _ultoa |
495 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
496 extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *string, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
497 int radix); |
1357 | 498 #endif |
499 | |
1626 | 500 #ifdef HAVE_STRTOL |
1357 | 501 #define SDL_strtol strtol |
502 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
503 extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
504 int base); |
1357 | 505 #endif |
506 | |
1626 | 507 #ifdef HAVE_STRTOUL |
1456
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
508 #define SDL_strtoul strtoul |
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
509 #else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
510 extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *string, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
511 char **endp, int base); |
1456
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
512 #endif |
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
513 |
1626 | 514 #ifdef SDL_HAS_64BIT_TYPE |
1357 | 515 |
1626 | 516 #ifdef HAVE__I64TOA |
1357 | 517 #define SDL_lltoa _i64toa |
518 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
519 extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *string, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
520 int radix); |
1357 | 521 #endif |
522 | |
1626 | 523 #ifdef HAVE__UI64TOA |
1357 | 524 #define SDL_ulltoa _ui64toa |
525 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
526 extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *string, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
527 int radix); |
1357 | 528 #endif |
529 | |
1626 | 530 #ifdef HAVE_STRTOLL |
1357 | 531 #define SDL_strtoll strtoll |
532 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
533 extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
534 int base); |
1357 | 535 #endif |
536 | |
1626 | 537 #ifdef HAVE_STRTOULL |
1456
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
538 #define SDL_strtoull strtoull |
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
539 #else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
540 extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *string, char **endp, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
541 int base); |
1456
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
542 #endif |
84de7511f79f
Fixed a bunch of 64-bit compatibility problems
Sam Lantinga <slouken@libsdl.org>
parents:
1422
diff
changeset
|
543 |
1357 | 544 #endif /* SDL_HAS_64BIT_TYPE */ |
545 | |
1626 | 546 #ifdef HAVE_STRTOD |
1357 | 547 #define SDL_strtod strtod |
548 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
549 extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp); |
1357 | 550 #endif |
551 | |
1626 | 552 #ifdef HAVE_ATOI |
1357 | 553 #define SDL_atoi atoi |
554 #else | |
555 #define SDL_atoi(X) SDL_strtol(X, NULL, 0) | |
556 #endif | |
557 | |
1626 | 558 #ifdef HAVE_ATOF |
1357 | 559 #define SDL_atof atof |
560 #else | |
561 #define SDL_atof(X) SDL_strtod(X, NULL) | |
562 #endif | |
563 | |
1626 | 564 #ifdef HAVE_STRCMP |
1357 | 565 #define SDL_strcmp strcmp |
566 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
567 extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); |
1357 | 568 #endif |
569 | |
1626 | 570 #ifdef HAVE_STRNCMP |
1357 | 571 #define SDL_strncmp strncmp |
572 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
573 extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
574 size_t maxlen); |
1357 | 575 #endif |
576 | |
1626 | 577 #ifdef HAVE_STRCASECMP |
1357 | 578 #define SDL_strcasecmp strcasecmp |
1626 | 579 #elif defined(HAVE__STRICMP) |
1510 | 580 #define SDL_strcasecmp _stricmp |
1357 | 581 #else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
582 extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
583 const char *str2); |
1357 | 584 #endif |
585 | |
1626 | 586 #ifdef HAVE_STRNCASECMP |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
587 #define SDL_strncasecmp strncasecmp |
1626 | 588 #elif defined(HAVE__STRNICMP) |
1512 | 589 #define SDL_strncasecmp _strnicmp |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
590 #else |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
591 extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
592 const char *str2, size_t maxlen); |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
593 #endif |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
594 |
1626 | 595 #ifdef HAVE_SSCANF |
1357 | 596 #define SDL_sscanf sscanf |
597 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
598 extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
599 ...); |
1357 | 600 #endif |
601 | |
1626 | 602 #ifdef HAVE_SNPRINTF |
1357 | 603 #define SDL_snprintf snprintf |
604 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
605 extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
606 const char *fmt, ...); |
1357 | 607 #endif |
608 | |
1626 | 609 #ifdef HAVE_VSNPRINTF |
1357 | 610 #define SDL_vsnprintf vsnprintf |
611 #else | |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
612 extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
613 const char *fmt, va_list ap); |
1357 | 614 #endif |
615 | |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
616 /* The SDL implementation of iconv() returns these error codes */ |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
617 #define SDL_ICONV_ERROR (size_t)-1 |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
618 #define SDL_ICONV_E2BIG (size_t)-2 |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
619 #define SDL_ICONV_EILSEQ (size_t)-3 |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
620 #define SDL_ICONV_EINVAL (size_t)-4 |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
621 |
1626 | 622 #ifdef HAVE_ICONV |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
623 #define SDL_iconv_t iconv_t |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
624 #define SDL_iconv_open iconv_open |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
625 #define SDL_iconv_close iconv_close |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
626 extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, char **inbuf, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
627 size_t * inbytesleft, char **outbuf, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
628 size_t * outbytesleft); |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
629 #else |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
630 typedef struct _SDL_iconv_t *SDL_iconv_t; |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
631 extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
632 const char *fromcode); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
633 extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
634 extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, char **inbuf, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
635 size_t * inbytesleft, char **outbuf, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
636 size_t * outbytesleft); |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
637 #endif |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
638 /* This function converts a string between encodings in one pass, returning a |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
639 string that must be freed with SDL_free() or NULL on error. |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
640 */ |
1668
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
641 extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
642 const char *fromcode, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
643 char *inbuf, |
4da1ee79c9af
more tweaking indent options
Sam Lantinga <slouken@libsdl.org>
parents:
1662
diff
changeset
|
644 size_t inbytesleft); |
1501
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
645 #define SDL_iconv_utf8_ascii(S) SDL_iconv_string("ASCII", "UTF-8", S, SDL_strlen(S)+1) |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
646 #define SDL_iconv_utf8_latin1(S) SDL_iconv_string("LATIN1", "UTF-8", S, SDL_strlen(S)+1) |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
647 #define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
648 #define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) |
73dc5d39bbf8
Added UTF-8 <-> UTF-16 <-> UTF-32 <-> UCS-2 <-> UCS-4 conversion capability
Sam Lantinga <slouken@libsdl.org>
parents:
1456
diff
changeset
|
649 |
1357 | 650 /* Ends C function definitions when using C++ */ |
651 #ifdef __cplusplus | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
652 /* *INDENT-OFF* */ |
1357 | 653 } |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
654 /* *INDENT-ON* */ |
1357 | 655 #endif |
656 #include "close_code.h" | |
657 | |
658 #endif /* _SDL_stdinc_h */ | |
1662
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
659 |
782fd950bd46
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
Sam Lantinga <slouken@libsdl.org>
parents:
1659
diff
changeset
|
660 /* vi: set ts=4 sw=4 expandtab: */ |