Skip to content

Latest commit

 

History

History
610 lines (536 loc) · 15.5 KB

SDL_stdinc.h

File metadata and controls

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