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