Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
660 lines (587 loc) · 17.3 KB

SDL_stdinc.h

File metadata and controls

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