annotate include/SDL_stdinc.h @ 4222:6823a52d06fa SDL-1.2

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