Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libSDL
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
libSDL
Commits
7d245d05
Commit
7d245d05
authored
Aug 22, 2010
by
Sam Lantinga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed spurious carriage returns
parent
d980c084
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1095 additions
and
1095 deletions
+1095
-1095
SDL_stdinc.h
include/SDL_stdinc.h
+801
-801
SDL_syshaptic.c
src/haptic/nds/SDL_syshaptic.c
+41
-41
SDL_sysjoystick.c
src/joystick/nds/SDL_sysjoystick.c
+23
-23
SDL_win32video.c
src/video/win32/SDL_win32video.c
+230
-230
No files found.
include/SDL_stdinc.h
View file @
7d245d05
/*
/*
SDL - Simple DirectMedia Layer
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2010 Sam Lantinga
Copyright (C) 1997-2010 Sam Lantinga
This library is free software; you can redistribute it and/or
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
Sam Lantinga
slouken@libsdl.org
slouken@libsdl.org
*/
*/
/**
/**
* \file SDL_stdinc.h
* \file SDL_stdinc.h
*
*
* This is a general header that includes C language support.
* This is a general header that includes C language support.
*/
*/
#ifndef _SDL_stdinc_h
#ifndef _SDL_stdinc_h
#define _SDL_stdinc_h
#define _SDL_stdinc_h
#include "SDL_config.h"
#include "SDL_config.h"
#ifdef HAVE_SYS_TYPES_H
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#include <sys/types.h>
#endif
#endif
#ifdef HAVE_STDIO_H
#ifdef HAVE_STDIO_H
#include <stdio.h>
#include <stdio.h>
#endif
#endif
#if defined(STDC_HEADERS)
#if defined(STDC_HEADERS)
# include <stdlib.h>
# include <stdlib.h>
# include <stddef.h>
# include <stddef.h>
# include <stdarg.h>
# include <stdarg.h>
#else
#else
# if defined(HAVE_STDLIB_H)
# if defined(HAVE_STDLIB_H)
# include <stdlib.h>
# include <stdlib.h>
# elif defined(HAVE_MALLOC_H)
# elif defined(HAVE_MALLOC_H)
# include <malloc.h>
# include <malloc.h>
# endif
# endif
# if defined(HAVE_STDDEF_H)
# if defined(HAVE_STDDEF_H)
# include <stddef.h>
# include <stddef.h>
# endif
# endif
# if defined(HAVE_STDARG_H)
# if defined(HAVE_STDARG_H)
# include <stdarg.h>
# include <stdarg.h>
# endif
# endif
#endif
#endif
#ifdef HAVE_STRING_H
#ifdef HAVE_STRING_H
# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
# include <memory.h>
# include <memory.h>
# endif
# endif
# include <string.h>
# include <string.h>
#endif
#endif
#ifdef HAVE_STRINGS_H
#ifdef HAVE_STRINGS_H
# include <strings.h>
# include <strings.h>
#endif
#endif
#if defined(HAVE_INTTYPES_H)
#if defined(HAVE_INTTYPES_H)
# include <inttypes.h>
# include <inttypes.h>
#elif defined(HAVE_STDINT_H)
#elif defined(HAVE_STDINT_H)
# include <stdint.h>
# include <stdint.h>
#endif
#endif
#ifdef HAVE_CTYPE_H
#ifdef HAVE_CTYPE_H
# include <ctype.h>
# include <ctype.h>
#endif
#endif
#ifdef HAVE_MATH_H
#ifdef HAVE_MATH_H
# include <math.h>
# include <math.h>
#endif
#endif
#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H)
#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H)
# include <iconv.h>
# include <iconv.h>
#endif
#endif
/**
/**
* The number of elements in an array.
* The number of elements in an array.
*/
*/
#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
#define SDL_TABLESIZE(table) SDL_arraysize(table)
#define SDL_TABLESIZE(table) SDL_arraysize(table)
/**
/**
* \name Cast operators
* \name Cast operators
*
*
* Use proper C++ casts when compiled as C++ to be compatible with the option
* Use proper C++ casts when compiled as C++ to be compatible with the option
* -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
* -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
*/
*/
/*@{*/
/*@{*/
#ifdef __cplusplus
#ifdef __cplusplus
#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
#define SDL_static_cast(type, expression) static_cast<type>(expression)
#define SDL_static_cast(type, expression) static_cast<type>(expression)
#else
#else
#define SDL_reinterpret_cast(type, expression) ((type)(expression))
#define SDL_reinterpret_cast(type, expression) ((type)(expression))
#define SDL_static_cast(type, expression) ((type)(expression))
#define SDL_static_cast(type, expression) ((type)(expression))
#endif
#endif
/*@}*//*Cast operators*/
/*@}*//*Cast operators*/
/* Define a four character code as a Uint32 */
/* Define a four character code as a Uint32 */
#define SDL_FOURCC(A, B, C, D) \
#define SDL_FOURCC(A, B, C, D) \
((
SDL_static_cast
(
Uint32
,
SDL_static_cast
(
Uint8
,
(
A
)))
<<
0
)
|
\
((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
(
SDL_static_cast
(
Uint32
,
SDL_static_cast
(
Uint8
,
(
B
)))
<<
8
)
|
\
(SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
(
SDL_static_cast
(
Uint32
,
SDL_static_cast
(
Uint8
,
(
C
)))
<<
16
)
|
\
(SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
(
SDL_static_cast
(
Uint32
,
SDL_static_cast
(
Uint8
,
(
D
)))
<<
24
))
(SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
/**
/**
* \name Basic data types
* \name Basic data types
*/
*/
/*@{*/
/*@{*/
typedef
enum
typedef
enum
{
{
SDL_FALSE
=
0
,
SDL_FALSE
=
0
,
SDL_TRUE
=
1
SDL_TRUE
=
1
}
SDL_bool
;
}
SDL_bool
;
/**
/**
* \brief A signed 8-bit integer type.
* \brief A signed 8-bit integer type.
*/
*/
typedef
int8_t
Sint8
;
typedef
int8_t
Sint8
;
/**
/**
* \brief An unsigned 8-bit integer type.
* \brief An unsigned 8-bit integer type.
*/
*/
typedef
uint8_t
Uint8
;
typedef
uint8_t
Uint8
;
/**
/**
* \brief A signed 16-bit integer type.
* \brief A signed 16-bit integer type.
*/
*/
typedef
int16_t
Sint16
;
typedef
int16_t
Sint16
;
/**
/**
* \brief An unsigned 16-bit integer type.
* \brief An unsigned 16-bit integer type.
*/
*/
typedef
uint16_t
Uint16
;
typedef
uint16_t
Uint16
;
/**
/**
* \brief A signed 32-bit integer type.
* \brief A signed 32-bit integer type.
*/
*/
typedef
int32_t
Sint32
;
typedef
int32_t
Sint32
;
/**
/**
* \brief An unsigned 32-bit integer type.
* \brief An unsigned 32-bit integer type.
*/
*/
typedef
uint32_t
Uint32
;
typedef
uint32_t
Uint32
;
#ifdef SDL_HAS_64BIT_TYPE
#ifdef SDL_HAS_64BIT_TYPE
/**
/**
* \brief A signed 64-bit integer type.
* \brief A signed 64-bit integer type.
* \warning On platforms without any sort of 64-bit datatype, this is equivalent to Sint32!
* \warning On platforms without any sort of 64-bit datatype, this is equivalent to Sint32!
*/
*/
typedef
int64_t
Sint64
;
typedef
int64_t
Sint64
;
/**
/**
* \brief An unsigned 64-bit integer type.
* \brief An unsigned 64-bit integer type.
* \warning On platforms without any sort of 64-bit datatype, this is equivalent to Uint32!
* \warning On platforms without any sort of 64-bit datatype, this is equivalent to Uint32!
*/
*/
typedef
uint64_t
Uint64
;
typedef
uint64_t
Uint64
;
#else
#else
/* This is really just a hack to prevent the compiler from complaining */
/* This is really just a hack to prevent the compiler from complaining */
typedef
Sint32
Sint64
;
typedef
Sint32
Sint64
;
typedef
Uint32
Uint64
;
typedef
Uint32
Uint64
;
#endif
#endif
/*@}*//*Basic data types*/
/*@}*//*Basic data types*/
#define SDL_COMPILE_TIME_ASSERT(name, x) \
#define SDL_COMPILE_TIME_ASSERT(name, x) \
typedef
int
SDL_dummy_
##
name
[(
x
)
*
2
-
1
]
typedef int SDL_dummy_ ## name[(x) * 2 - 1]
/** \cond */
/** \cond */
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
SDL_COMPILE_TIME_ASSERT
(
uint8
,
sizeof
(
Uint8
)
==
1
);
SDL_COMPILE_TIME_ASSERT
(
uint8
,
sizeof
(
Uint8
)
==
1
);
SDL_COMPILE_TIME_ASSERT
(
sint8
,
sizeof
(
Sint8
)
==
1
);
SDL_COMPILE_TIME_ASSERT
(
sint8
,
sizeof
(
Sint8
)
==
1
);
SDL_COMPILE_TIME_ASSERT
(
uint16
,
sizeof
(
Uint16
)
==
2
);
SDL_COMPILE_TIME_ASSERT
(
uint16
,
sizeof
(
Uint16
)
==
2
);
SDL_COMPILE_TIME_ASSERT
(
sint16
,
sizeof
(
Sint16
)
==
2
);
SDL_COMPILE_TIME_ASSERT
(
sint16
,
sizeof
(
Sint16
)
==
2
);
SDL_COMPILE_TIME_ASSERT
(
uint32
,
sizeof
(
Uint32
)
==
4
);
SDL_COMPILE_TIME_ASSERT
(
uint32
,
sizeof
(
Uint32
)
==
4
);
SDL_COMPILE_TIME_ASSERT
(
sint32
,
sizeof
(
Sint32
)
==
4
);
SDL_COMPILE_TIME_ASSERT
(
sint32
,
sizeof
(
Sint32
)
==
4
);
#ifndef __NINTENDODS__
/* TODO: figure out why the following happens:
#ifndef __NINTENDODS__
/* TODO: figure out why the following happens:
include/SDL_stdinc.h:150: error: size of array 'SDL_dummy_uint64' is negative
include/SDL_stdinc.h:150: error: size of array 'SDL_dummy_uint64' is negative
include/SDL_stdinc.h:151: error: size of array 'SDL_dummy_sint64' is negative */
include/SDL_stdinc.h:151: error: size of array 'SDL_dummy_sint64' is negative */
SDL_COMPILE_TIME_ASSERT
(
uint64
,
sizeof
(
Uint64
)
==
8
);
SDL_COMPILE_TIME_ASSERT
(
uint64
,
sizeof
(
Uint64
)
==
8
);
SDL_COMPILE_TIME_ASSERT
(
sint64
,
sizeof
(
Sint64
)
==
8
);
SDL_COMPILE_TIME_ASSERT
(
sint64
,
sizeof
(
Sint64
)
==
8
);
#endif
#endif
#endif
/* DOXYGEN_SHOULD_IGNORE_THIS */
#endif
/* DOXYGEN_SHOULD_IGNORE_THIS */
/** \endcond */
/** \endcond */
/* Check to make sure enums are the size of ints, for structure packing.
/* Check to make sure enums are the size of ints, for structure packing.
For both Watcom C/C++ and Borland C/C++ the compiler option that makes
For both Watcom C/C++ and Borland C/C++ the compiler option that makes
enums having the size of an int must be enabled.
enums having the size of an int must be enabled.
This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
*/
*/
/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */
/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */
#ifdef __MWERKS__
#ifdef __MWERKS__
#pragma enumsalwaysint on
#pragma enumsalwaysint on
#endif
#endif
/** \cond */
/** \cond */
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
#ifndef __NINTENDODS__
/* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
#ifndef __NINTENDODS__
/* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
typedef
enum
typedef
enum
{
{
DUMMY_ENUM_VALUE
DUMMY_ENUM_VALUE
}
SDL_DUMMY_ENUM
;
}
SDL_DUMMY_ENUM
;
SDL_COMPILE_TIME_ASSERT
(
enum
,
sizeof
(
SDL_DUMMY_ENUM
)
==
sizeof
(
int
));
SDL_COMPILE_TIME_ASSERT
(
enum
,
sizeof
(
SDL_DUMMY_ENUM
)
==
sizeof
(
int
));
#endif
#endif
#endif
/* DOXYGEN_SHOULD_IGNORE_THIS */
#endif
/* DOXYGEN_SHOULD_IGNORE_THIS */
/** \endcond */
/** \endcond */
#include "begin_code.h"
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
#ifdef __cplusplus
/* *INDENT-OFF* */
/* *INDENT-OFF* */
extern
"C"
{
extern
"C"
{
/* *INDENT-ON* */
/* *INDENT-ON* */
#endif
#endif
#ifdef HAVE_MALLOC
#ifdef HAVE_MALLOC
#define SDL_malloc malloc
#define SDL_malloc malloc
#else
#else
extern
DECLSPEC
void
*
SDLCALL
SDL_malloc
(
size_t
size
);
extern
DECLSPEC
void
*
SDLCALL
SDL_malloc
(
size_t
size
);
#endif
#endif
#ifdef HAVE_CALLOC
#ifdef HAVE_CALLOC
#define SDL_calloc calloc
#define SDL_calloc calloc
#else
#else
extern
DECLSPEC
void
*
SDLCALL
SDL_calloc
(
size_t
nmemb
,
size_t
size
);
extern
DECLSPEC
void
*
SDLCALL
SDL_calloc
(
size_t
nmemb
,
size_t
size
);
#endif
#endif
#ifdef HAVE_REALLOC
#ifdef HAVE_REALLOC
#define SDL_realloc realloc
#define SDL_realloc realloc
#else
#else
extern
DECLSPEC
void
*
SDLCALL
SDL_realloc
(
void
*
mem
,
size_t
size
);
extern
DECLSPEC
void
*
SDLCALL
SDL_realloc
(
void
*
mem
,
size_t
size
);
#endif
#endif
#ifdef HAVE_FREE
#ifdef HAVE_FREE
#define SDL_free free
#define SDL_free free
#else
#else
extern
DECLSPEC
void
SDLCALL
SDL_free
(
void
*
mem
);
extern
DECLSPEC
void
SDLCALL
SDL_free
(
void
*
mem
);
#endif
#endif
#if defined(HAVE_ALLOCA) && !defined(alloca)
#if defined(HAVE_ALLOCA) && !defined(alloca)
# if defined(HAVE_ALLOCA_H)
# if defined(HAVE_ALLOCA_H)
# include <alloca.h>
# include <alloca.h>
# elif defined(__GNUC__)
# elif defined(__GNUC__)
# define alloca __builtin_alloca
# define alloca __builtin_alloca
# elif defined(_MSC_VER)
# elif defined(_MSC_VER)
# include <malloc.h>
# include <malloc.h>
# define alloca _alloca
# define alloca _alloca
# elif defined(__WATCOMC__)
# elif defined(__WATCOMC__)
# include <malloc.h>
# include <malloc.h>
# elif defined(__BORLANDC__)
# elif defined(__BORLANDC__)
# include <malloc.h>
# include <malloc.h>
# elif defined(__DMC__)
# elif defined(__DMC__)
# include <stdlib.h>
# include <stdlib.h>
# elif defined(__AIX__)
# elif defined(__AIX__)
#pragma alloca
#pragma alloca
# elif defined(__MRC__)
# elif defined(__MRC__)
void
*
alloca
(
unsigned
);
void
*
alloca
(
unsigned
);
# else
# else
char
*
alloca
();
char
*
alloca
();
# endif
# endif
#endif
#endif
#ifdef HAVE_ALLOCA
#ifdef HAVE_ALLOCA
#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
#define SDL_stack_free(data)
#define SDL_stack_free(data)
#else
#else
#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
#define SDL_stack_free(data) SDL_free(data)
#define SDL_stack_free(data) SDL_free(data)
#endif
#endif
#ifdef HAVE_GETENV
#ifdef HAVE_GETENV
#define SDL_getenv getenv
#define SDL_getenv getenv
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_getenv
(
const
char
*
name
);
extern
DECLSPEC
char
*
SDLCALL
SDL_getenv
(
const
char
*
name
);
#endif
#endif
/* SDL_putenv() has moved to SDL_compat. */
/* SDL_putenv() has moved to SDL_compat. */
#ifdef HAVE_SETENV
#ifdef HAVE_SETENV
#define SDL_setenv setenv
#define SDL_setenv setenv
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_setenv
(
const
char
*
name
,
const
char
*
value
,
extern
DECLSPEC
int
SDLCALL
SDL_setenv
(
const
char
*
name
,
const
char
*
value
,
int
overwrite
);
int
overwrite
);
#endif
#endif
#ifdef HAVE_QSORT
#ifdef HAVE_QSORT
#define SDL_qsort qsort
#define SDL_qsort qsort
#else
#else
extern
DECLSPEC
void
SDLCALL
SDL_qsort
(
void
*
base
,
size_t
nmemb
,
size_t
size
,
extern
DECLSPEC
void
SDLCALL
SDL_qsort
(
void
*
base
,
size_t
nmemb
,
size_t
size
,
int
(
*
compare
)
(
const
void
*
,
int
(
*
compare
)
(
const
void
*
,
const
void
*
));
const
void
*
));
#endif
#endif
#ifdef HAVE_ABS
#ifdef HAVE_ABS
#define SDL_abs abs
#define SDL_abs abs
#else
#else
#define SDL_abs(X) ((X) < 0 ? -(X) : (X))
#define SDL_abs(X) ((X) < 0 ? -(X) : (X))
#endif
#endif
#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
#ifdef HAVE_CTYPE_H
#ifdef HAVE_CTYPE_H
#define SDL_isdigit(X) isdigit(X)
#define SDL_isdigit(X) isdigit(X)
#define SDL_isspace(X) isspace(X)
#define SDL_isspace(X) isspace(X)
#define SDL_toupper(X) toupper(X)
#define SDL_toupper(X) toupper(X)
#define SDL_tolower(X) tolower(X)
#define SDL_tolower(X) tolower(X)
#else
#else
#define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9'))
#define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9'))
#define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n'))
#define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n'))
#define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X))
#define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X))
#define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X))
#define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X))
#endif
#endif
#ifdef HAVE_MEMSET
#ifdef HAVE_MEMSET
#define SDL_memset memset
#define SDL_memset memset
#else
#else
extern
DECLSPEC
void
*
SDLCALL
SDL_memset
(
void
*
dst
,
int
c
,
size_t
len
);
extern
DECLSPEC
void
*
SDLCALL
SDL_memset
(
void
*
dst
,
int
c
,
size_t
len
);
#endif
#endif
#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
#if defined(__GNUC__) && defined(i386)
#if defined(__GNUC__) && defined(i386)
#define SDL_memset4(dst, val, len) \
#define SDL_memset4(dst, val, len) \
do
{
\
do { \
int
u0
,
u1
,
u2
;
\
int u0, u1, u2; \
__asm__
__volatile__
(
\
__asm__ __volatile__ ( \
"cld
\n\t
"
\
"cld\n\t" \
"rep ; stosl
\n\t
"
\
"rep ; stosl\n\t" \
:
"=&D"
(
u0
),
"=&a"
(
u1
),
"=&c"
(
u2
)
\
: "=&D" (u0), "=&a" (u1), "=&c" (u2) \
:
"0"
(
dst
),
"1"
(
val
),
"2"
(
SDL_static_cast
(
Uint32
,
len
))
\
: "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, len)) \
:
"memory"
);
\
: "memory" ); \
}
while
(
0
)
} while(0)
#endif
#endif
#ifndef SDL_memset4
#ifndef SDL_memset4
#define SDL_memset4(dst, val, len) \
#define SDL_memset4(dst, val, len) \
do
{
\
do { \
unsigned
_count
=
(
len
);
\
unsigned _count = (len); \
unsigned
_n
=
(
_count
+
3
)
/
4
;
\
unsigned _n = (_count + 3) / 4; \
Uint32
*
_p
=
SDL_static_cast
(
Uint32
*
,
dst
);
\
Uint32 *_p = SDL_static_cast(Uint32 *, dst); \
Uint32
_val
=
(
val
);
\
Uint32 _val = (val); \
if
(
len
==
0
)
break
;
\
if (len == 0) break; \
switch
(
_count
%
4
)
{
\
switch (_count % 4) { \
case
0
:
do
{
*
_p
++
=
_val
;
\
case 0: do { *_p++ = _val; \
case
3
:
*
_p
++
=
_val
;
\
case 3: *_p++ = _val; \
case
2
:
*
_p
++
=
_val
;
\
case 2: *_p++ = _val; \
case
1
:
*
_p
++
=
_val
;
\
case 1: *_p++ = _val; \
}
while
(
--
_n
);
\
} while ( --_n ); \
}
\
} \
}
while
(
0
)
} while(0)
#endif
#endif
/* We can count on memcpy existing on Mac OS X and being well-tuned. */
/* We can count on memcpy existing on Mac OS X and being well-tuned. */
#if defined(__MACH__) && defined(__APPLE__)
#if defined(__MACH__) && defined(__APPLE__)
#define SDL_memcpy(dst, src, len) memcpy(dst, src, len)
#define SDL_memcpy(dst, src, len) memcpy(dst, src, len)
#elif defined(__GNUC__) && defined(i386)
#elif defined(__GNUC__) && defined(i386)
#define SDL_memcpy(dst, src, len) \
#define SDL_memcpy(dst, src, len) \
do
{
\
do { \
int
u0
,
u1
,
u2
;
\
int u0, u1, u2; \
__asm__
__volatile__
(
\
__asm__ __volatile__ ( \
"cld
\n\t
"
\
"cld\n\t" \
"rep ; movsl
\n\t
"
\
"rep ; movsl\n\t" \
"testb $2,%b4
\n\t
"
\
"testb $2,%b4\n\t" \
"je 1f
\n\t
"
\
"je 1f\n\t" \
"movsw
\n
"
\
"movsw\n" \
"1:
\t
testb $1,%b4
\n\t
"
\
"1:\ttestb $1,%b4\n\t" \
"je 2f
\n\t
"
\
"je 2f\n\t" \
"movsb
\n
"
\
"movsb\n" \
"2:"
\
"2:" \
:
"=&c"
(
u0
),
"=&D"
(
u1
),
"=&S"
(
u2
)
\
: "=&c" (u0), "=&D" (u1), "=&S" (u2) \
:
"0"
(
SDL_static_cast
(
unsigned
,
len
)
/
4
),
"q"
(
len
),
"1"
(
dst
),
"2"
(
src
)
\
: "0" (SDL_static_cast(unsigned, len)/4), "q" (len), "1" (dst),"2" (src) \
:
"memory"
);
\
: "memory" ); \
}
while
(
0
)
} while(0)
#endif
#endif
#ifndef SDL_memcpy
#ifndef SDL_memcpy
#ifdef HAVE_MEMCPY
#ifdef HAVE_MEMCPY
#define SDL_memcpy memcpy
#define SDL_memcpy memcpy
#elif defined(HAVE_BCOPY)
#elif defined(HAVE_BCOPY)
#define SDL_memcpy(d, s, n) bcopy((s), (d), (n))
#define SDL_memcpy(d, s, n) bcopy((s), (d), (n))
#else
#else
extern
DECLSPEC
void
*
SDLCALL
SDL_memcpy
(
void
*
dst
,
const
void
*
src
,
extern
DECLSPEC
void
*
SDLCALL
SDL_memcpy
(
void
*
dst
,
const
void
*
src
,
size_t
len
);
size_t
len
);
#endif
#endif
#endif
#endif
/* We can count on memcpy existing on Mac OS X and being well-tuned. */
/* We can count on memcpy existing on Mac OS X and being well-tuned. */
#if defined(__MACH__) && defined(__APPLE__)
#if defined(__MACH__) && defined(__APPLE__)
#define SDL_memcpy4(dst, src, len) memcpy(dst, src, (len)*4)
#define SDL_memcpy4(dst, src, len) memcpy(dst, src, (len)*4)
#elif defined(__GNUC__) && defined(i386)
#elif defined(__GNUC__) && defined(i386)
#define SDL_memcpy4(dst, src, len) \
#define SDL_memcpy4(dst, src, len) \
do
{
\
do { \
int
ecx
,
edi
,
esi
;
\
int ecx, edi, esi; \
__asm__
__volatile__
(
\
__asm__ __volatile__ ( \
"cld
\n\t
"
\
"cld\n\t" \
"rep ; movsl"
\
"rep ; movsl" \
:
"=&c"
(
ecx
),
"=&D"
(
edi
),
"=&S"
(
esi
)
\
: "=&c" (ecx), "=&D" (edi), "=&S" (esi) \
:
"0"
(
SDL_static_cast
(
unsigned
,
len
)),
"1"
(
dst
),
"2"
(
src
)
\
: "0" (SDL_static_cast(unsigned, len)), "1" (dst), "2" (src) \
:
"memory"
);
\
: "memory" ); \
}
while
(
0
)
} while(0)
#endif
#endif
#ifndef SDL_memcpy4
#ifndef SDL_memcpy4
#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2)
#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2)
#endif
#endif
#if defined(__GNUC__) && defined(i386)
#if defined(__GNUC__) && defined(i386)
#define SDL_revcpy(dst, src, len) \
#define SDL_revcpy(dst, src, len) \
do
{
\
do { \
int
u0
,
u1
,
u2
;
\
int u0, u1, u2; \
char
*
dstp
=
SDL_static_cast
(
char
*
,
dst
);
\
char *dstp = SDL_static_cast(char *, dst); \
char
*
srcp
=
SDL_static_cast
(
char
*
,
src
);
\
char *srcp = SDL_static_cast(char *, src); \
int
n
=
(
len
);
\
int n = (len); \
if
(
n
>=
4
)
{
\
if ( n >= 4 ) { \
__asm__
__volatile__
(
\
__asm__ __volatile__ ( \
"std
\n\t
"
\
"std\n\t" \
"rep ; movsl
\n\t
"
\
"rep ; movsl\n\t" \
"cld
\n\t
"
\
"cld\n\t" \
:
"=&c"
(
u0
),
"=&D"
(
u1
),
"=&S"
(
u2
)
\
: "=&c" (u0), "=&D" (u1), "=&S" (u2) \
:
"0"
(
n
>>
2
),
\
: "0" (n >> 2), \
"1"
(
dstp
+
(
n
-
4
)),
"2"
(
srcp
+
(
n
-
4
))
\
"1" (dstp+(n-4)), "2" (srcp+(n-4)) \
:
"memory"
);
\
: "memory" ); \
}
\
} \
switch
(
n
&
3
)
{
\
switch (n & 3) { \
case
3
:
dstp
[
2
]
=
srcp
[
2
];
\
case 3: dstp[2] = srcp[2]; \
case
2
:
dstp
[
1
]
=
srcp
[
1
];
\
case 2: dstp[1] = srcp[1]; \
case
1
:
dstp
[
0
]
=
srcp
[
0
];
\
case 1: dstp[0] = srcp[0]; \
break
;
\
break; \
default
:
\
default: \
break
;
\
break; \
}
\
} \
}
while
(
0
)
} while(0)
#endif
#endif
#ifndef SDL_revcpy
#ifndef SDL_revcpy
extern
DECLSPEC
void
*
SDLCALL
SDL_revcpy
(
void
*
dst
,
const
void
*
src
,
extern
DECLSPEC
void
*
SDLCALL
SDL_revcpy
(
void
*
dst
,
const
void
*
src
,
size_t
len
);
size_t
len
);
#endif
#endif
#ifdef HAVE_MEMMOVE
#ifdef HAVE_MEMMOVE
#define SDL_memmove memmove
#define SDL_memmove memmove
#elif defined(HAVE_BCOPY)
#elif defined(HAVE_BCOPY)
#define SDL_memmove(d, s, n) bcopy((s), (d), (n))
#define SDL_memmove(d, s, n) bcopy((s), (d), (n))
#else
#else
#define SDL_memmove(dst, src, len) \
#define SDL_memmove(dst, src, len) \
do
{
\
do { \
if
(
dst
<
src
)
{
\
if ( dst < src ) { \
SDL_memcpy
(
dst
,
src
,
len
);
\
SDL_memcpy(dst, src, len); \
}
else
{
\
} else { \
SDL_revcpy
(
dst
,
src
,
len
);
\
SDL_revcpy(dst, src, len); \
}
\
} \
}
while
(
0
)
} while(0)
#endif
#endif
#ifdef HAVE_MEMCMP
#ifdef HAVE_MEMCMP
#define SDL_memcmp memcmp
#define SDL_memcmp memcmp
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_memcmp
(
const
void
*
s1
,
const
void
*
s2
,
extern
DECLSPEC
int
SDLCALL
SDL_memcmp
(
const
void
*
s1
,
const
void
*
s2
,
size_t
len
);
size_t
len
);
#endif
#endif
#ifdef HAVE_STRLEN
#ifdef HAVE_STRLEN
#define SDL_strlen strlen
#define SDL_strlen strlen
#else
#else
extern
DECLSPEC
size_t
SDLCALL
SDL_strlen
(
const
char
*
string
);
extern
DECLSPEC
size_t
SDLCALL
SDL_strlen
(
const
char
*
string
);
#endif
#endif
#ifdef HAVE_WCSLEN
#ifdef HAVE_WCSLEN
#define SDL_wcslen wcslen
#define SDL_wcslen wcslen
#else
#else
#if !defined(wchar_t) && defined(__NINTENDODS__)
#if !defined(wchar_t) && defined(__NINTENDODS__)
#define wchar_t short
/* TODO: figure out why libnds doesn't have this */
#define wchar_t short
/* TODO: figure out why libnds doesn't have this */
#endif
#endif
extern
DECLSPEC
size_t
SDLCALL
SDL_wcslen
(
const
wchar_t
*
string
);
extern
DECLSPEC
size_t
SDLCALL
SDL_wcslen
(
const
wchar_t
*
string
);
#endif
#endif
#ifdef HAVE_WCSLCPY
#ifdef HAVE_WCSLCPY
#define SDL_wcslcpy wcslcpy
#define SDL_wcslcpy wcslcpy
#else
#else
extern
DECLSPEC
size_t
SDLCALL
SDL_wcslcpy
(
wchar_t
*
dst
,
const
wchar_t
*
src
,
size_t
maxlen
);
extern
DECLSPEC
size_t
SDLCALL
SDL_wcslcpy
(
wchar_t
*
dst
,
const
wchar_t
*
src
,
size_t
maxlen
);
#endif
#endif
#ifdef HAVE_WCSLCAT
#ifdef HAVE_WCSLCAT
#define SDL_wcslcat wcslcat
#define SDL_wcslcat wcslcat
#else
#else
extern
DECLSPEC
size_t
SDLCALL
SDL_wcslcat
(
wchar_t
*
dst
,
const
wchar_t
*
src
,
size_t
maxlen
);
extern
DECLSPEC
size_t
SDLCALL
SDL_wcslcat
(
wchar_t
*
dst
,
const
wchar_t
*
src
,
size_t
maxlen
);
#endif
#endif
#ifdef HAVE_STRLCPY
#ifdef HAVE_STRLCPY
#define SDL_strlcpy strlcpy
#define SDL_strlcpy strlcpy
#else
#else
extern
DECLSPEC
size_t
SDLCALL
SDL_strlcpy
(
char
*
dst
,
const
char
*
src
,
extern
DECLSPEC
size_t
SDLCALL
SDL_strlcpy
(
char
*
dst
,
const
char
*
src
,
size_t
maxlen
);
size_t
maxlen
);
#endif
#endif
extern
DECLSPEC
size_t
SDLCALL
SDL_utf8strlcpy
(
char
*
dst
,
const
char
*
src
,
extern
DECLSPEC
size_t
SDLCALL
SDL_utf8strlcpy
(
char
*
dst
,
const
char
*
src
,
size_t
dst_bytes
);
size_t
dst_bytes
);
#ifdef HAVE_STRLCAT
#ifdef HAVE_STRLCAT
#define SDL_strlcat strlcat
#define SDL_strlcat strlcat
#else
#else
extern
DECLSPEC
size_t
SDLCALL
SDL_strlcat
(
char
*
dst
,
const
char
*
src
,
extern
DECLSPEC
size_t
SDLCALL
SDL_strlcat
(
char
*
dst
,
const
char
*
src
,
size_t
maxlen
);
size_t
maxlen
);
#endif
#endif
#ifdef HAVE_STRDUP
#ifdef HAVE_STRDUP
#define SDL_strdup strdup
#define SDL_strdup strdup
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strdup
(
const
char
*
string
);
extern
DECLSPEC
char
*
SDLCALL
SDL_strdup
(
const
char
*
string
);
#endif
#endif
#ifdef HAVE__STRREV
#ifdef HAVE__STRREV
#define SDL_strrev _strrev
#define SDL_strrev _strrev
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strrev
(
char
*
string
);
extern
DECLSPEC
char
*
SDLCALL
SDL_strrev
(
char
*
string
);
#endif
#endif
#ifdef HAVE__STRUPR
#ifdef HAVE__STRUPR
#define SDL_strupr _strupr
#define SDL_strupr _strupr
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strupr
(
char
*
string
);
extern
DECLSPEC
char
*
SDLCALL
SDL_strupr
(
char
*
string
);
#endif
#endif
#ifdef HAVE__STRLWR
#ifdef HAVE__STRLWR
#define SDL_strlwr _strlwr
#define SDL_strlwr _strlwr
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strlwr
(
char
*
string
);
extern
DECLSPEC
char
*
SDLCALL
SDL_strlwr
(
char
*
string
);
#endif
#endif
#ifdef HAVE_STRCHR
#ifdef HAVE_STRCHR
#define SDL_strchr strchr
#define SDL_strchr strchr
#elif defined(HAVE_INDEX)
#elif defined(HAVE_INDEX)
#define SDL_strchr index
#define SDL_strchr index
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strchr
(
const
char
*
string
,
int
c
);
extern
DECLSPEC
char
*
SDLCALL
SDL_strchr
(
const
char
*
string
,
int
c
);
#endif
#endif
#ifdef HAVE_STRRCHR
#ifdef HAVE_STRRCHR
#define SDL_strrchr strrchr
#define SDL_strrchr strrchr
#elif defined(HAVE_RINDEX)
#elif defined(HAVE_RINDEX)
#define SDL_strrchr rindex
#define SDL_strrchr rindex
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strrchr
(
const
char
*
string
,
int
c
);
extern
DECLSPEC
char
*
SDLCALL
SDL_strrchr
(
const
char
*
string
,
int
c
);
#endif
#endif
#ifdef HAVE_STRSTR
#ifdef HAVE_STRSTR
#define SDL_strstr strstr
#define SDL_strstr strstr
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_strstr
(
const
char
*
haystack
,
extern
DECLSPEC
char
*
SDLCALL
SDL_strstr
(
const
char
*
haystack
,
const
char
*
needle
);
const
char
*
needle
);
#endif
#endif
#ifdef HAVE_ITOA
#ifdef HAVE_ITOA
#define SDL_itoa itoa
#define SDL_itoa itoa
#else
#else
#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix)
#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix)
#endif
#endif
#ifdef HAVE__LTOA
#ifdef HAVE__LTOA
#define SDL_ltoa _ltoa
#define SDL_ltoa _ltoa
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_ltoa
(
long
value
,
char
*
string
,
int
radix
);
extern
DECLSPEC
char
*
SDLCALL
SDL_ltoa
(
long
value
,
char
*
string
,
int
radix
);
#endif
#endif
#ifdef HAVE__UITOA
#ifdef HAVE__UITOA
#define SDL_uitoa _uitoa
#define SDL_uitoa _uitoa
#else
#else
#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix)
#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix)
#endif
#endif
#ifdef HAVE__ULTOA
#ifdef HAVE__ULTOA
#define SDL_ultoa _ultoa
#define SDL_ultoa _ultoa
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_ultoa
(
unsigned
long
value
,
char
*
string
,
extern
DECLSPEC
char
*
SDLCALL
SDL_ultoa
(
unsigned
long
value
,
char
*
string
,
int
radix
);
int
radix
);
#endif
#endif
#ifdef HAVE_STRTOL
#ifdef HAVE_STRTOL
#define SDL_strtol strtol
#define SDL_strtol strtol
#else
#else
extern
DECLSPEC
long
SDLCALL
SDL_strtol
(
const
char
*
string
,
char
**
endp
,
extern
DECLSPEC
long
SDLCALL
SDL_strtol
(
const
char
*
string
,
char
**
endp
,
int
base
);
int
base
);
#endif
#endif
#ifdef HAVE_STRTOUL
#ifdef HAVE_STRTOUL
#define SDL_strtoul strtoul
#define SDL_strtoul strtoul
#else
#else
extern
DECLSPEC
unsigned
long
SDLCALL
SDL_strtoul
(
const
char
*
string
,
extern
DECLSPEC
unsigned
long
SDLCALL
SDL_strtoul
(
const
char
*
string
,
char
**
endp
,
int
base
);
char
**
endp
,
int
base
);
#endif
#endif
#ifdef SDL_HAS_64BIT_TYPE
#ifdef SDL_HAS_64BIT_TYPE
#ifdef HAVE__I64TOA
#ifdef HAVE__I64TOA
#define SDL_lltoa _i64toa
#define SDL_lltoa _i64toa
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_lltoa
(
Sint64
value
,
char
*
string
,
extern
DECLSPEC
char
*
SDLCALL
SDL_lltoa
(
Sint64
value
,
char
*
string
,
int
radix
);
int
radix
);
#endif
#endif
#ifdef HAVE__UI64TOA
#ifdef HAVE__UI64TOA
#define SDL_ulltoa _ui64toa
#define SDL_ulltoa _ui64toa
#else
#else
extern
DECLSPEC
char
*
SDLCALL
SDL_ulltoa
(
Uint64
value
,
char
*
string
,
extern
DECLSPEC
char
*
SDLCALL
SDL_ulltoa
(
Uint64
value
,
char
*
string
,
int
radix
);
int
radix
);
#endif
#endif
#ifdef HAVE_STRTOLL
#ifdef HAVE_STRTOLL
#define SDL_strtoll strtoll
#define SDL_strtoll strtoll
#else
#else
extern
DECLSPEC
Sint64
SDLCALL
SDL_strtoll
(
const
char
*
string
,
char
**
endp
,
extern
DECLSPEC
Sint64
SDLCALL
SDL_strtoll
(
const
char
*
string
,
char
**
endp
,
int
base
);
int
base
);
#endif
#endif
#ifdef HAVE_STRTOULL
#ifdef HAVE_STRTOULL
#define SDL_strtoull strtoull
#define SDL_strtoull strtoull
#else
#else
extern
DECLSPEC
Uint64
SDLCALL
SDL_strtoull
(
const
char
*
string
,
char
**
endp
,
extern
DECLSPEC
Uint64
SDLCALL
SDL_strtoull
(
const
char
*
string
,
char
**
endp
,
int
base
);
int
base
);
#endif
#endif
#endif
/* SDL_HAS_64BIT_TYPE */
#endif
/* SDL_HAS_64BIT_TYPE */
#ifdef HAVE_STRTOD
#ifdef HAVE_STRTOD
#define SDL_strtod strtod
#define SDL_strtod strtod
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_strtod
(
const
char
*
string
,
char
**
endp
);
extern
DECLSPEC
double
SDLCALL
SDL_strtod
(
const
char
*
string
,
char
**
endp
);
#endif
#endif
#ifdef HAVE_ATOI
#ifdef HAVE_ATOI
#define SDL_atoi atoi
#define SDL_atoi atoi
#else
#else
#define SDL_atoi(X) SDL_strtol(X, NULL, 0)
#define SDL_atoi(X) SDL_strtol(X, NULL, 0)
#endif
#endif
#ifdef HAVE_ATOF
#ifdef HAVE_ATOF
#define SDL_atof atof
#define SDL_atof atof
#else
#else
#define SDL_atof(X) SDL_strtod(X, NULL)
#define SDL_atof(X) SDL_strtod(X, NULL)
#endif
#endif
#ifdef HAVE_STRCMP
#ifdef HAVE_STRCMP
#define SDL_strcmp strcmp
#define SDL_strcmp strcmp
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_strcmp
(
const
char
*
str1
,
const
char
*
str2
);
extern
DECLSPEC
int
SDLCALL
SDL_strcmp
(
const
char
*
str1
,
const
char
*
str2
);
#endif
#endif
#ifdef HAVE_STRNCMP
#ifdef HAVE_STRNCMP
#define SDL_strncmp strncmp
#define SDL_strncmp strncmp
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_strncmp
(
const
char
*
str1
,
const
char
*
str2
,
extern
DECLSPEC
int
SDLCALL
SDL_strncmp
(
const
char
*
str1
,
const
char
*
str2
,
size_t
maxlen
);
size_t
maxlen
);
#endif
#endif
#ifdef HAVE_STRCASECMP
#ifdef HAVE_STRCASECMP
#define SDL_strcasecmp strcasecmp
#define SDL_strcasecmp strcasecmp
#elif defined(HAVE__STRICMP)
#elif defined(HAVE__STRICMP)
#define SDL_strcasecmp _stricmp
#define SDL_strcasecmp _stricmp
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_strcasecmp
(
const
char
*
str1
,
extern
DECLSPEC
int
SDLCALL
SDL_strcasecmp
(
const
char
*
str1
,
const
char
*
str2
);
const
char
*
str2
);
#endif
#endif
#ifdef HAVE_STRNCASECMP
#ifdef HAVE_STRNCASECMP
#define SDL_strncasecmp strncasecmp
#define SDL_strncasecmp strncasecmp
#elif defined(HAVE__STRNICMP)
#elif defined(HAVE__STRNICMP)
#define SDL_strncasecmp _strnicmp
#define SDL_strncasecmp _strnicmp
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_strncasecmp
(
const
char
*
str1
,
extern
DECLSPEC
int
SDLCALL
SDL_strncasecmp
(
const
char
*
str1
,
const
char
*
str2
,
size_t
maxlen
);
const
char
*
str2
,
size_t
maxlen
);
#endif
#endif
#ifdef HAVE_SSCANF
#ifdef HAVE_SSCANF
#define SDL_sscanf sscanf
#define SDL_sscanf sscanf
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_sscanf
(
const
char
*
text
,
const
char
*
fmt
,
extern
DECLSPEC
int
SDLCALL
SDL_sscanf
(
const
char
*
text
,
const
char
*
fmt
,
...);
...);
#endif
#endif
#ifdef HAVE_SNPRINTF
#ifdef HAVE_SNPRINTF
#define SDL_snprintf snprintf
#define SDL_snprintf snprintf
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_snprintf
(
char
*
text
,
size_t
maxlen
,
extern
DECLSPEC
int
SDLCALL
SDL_snprintf
(
char
*
text
,
size_t
maxlen
,
const
char
*
fmt
,
...);
const
char
*
fmt
,
...);
#endif
#endif
#ifdef HAVE_VSNPRINTF
#ifdef HAVE_VSNPRINTF
#define SDL_vsnprintf vsnprintf
#define SDL_vsnprintf vsnprintf
#else
#else
extern
DECLSPEC
int
SDLCALL
SDL_vsnprintf
(
char
*
text
,
size_t
maxlen
,
extern
DECLSPEC
int
SDLCALL
SDL_vsnprintf
(
char
*
text
,
size_t
maxlen
,
const
char
*
fmt
,
va_list
ap
);
const
char
*
fmt
,
va_list
ap
);
#endif
#endif
#ifndef HAVE_M_PI
#ifndef HAVE_M_PI
#define M_PI 3.14159265358979323846264338327950288
/* pi */
#define M_PI 3.14159265358979323846264338327950288
/* pi */
#endif
#endif
#ifdef HAVE_CEIL
#ifdef HAVE_CEIL
#define SDL_ceil ceil
#define SDL_ceil ceil
#else
#else
#define SDL_ceil(x) ((double)(int)((x)+0.5))
#define SDL_ceil(x) ((double)(int)((x)+0.5))
#endif
#endif
#ifdef HAVE_COPYSIGN
#ifdef HAVE_COPYSIGN
#define SDL_copysign copysign
#define SDL_copysign copysign
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_copysign
(
double
x
,
double
y
);
extern
DECLSPEC
double
SDLCALL
SDL_copysign
(
double
x
,
double
y
);
#endif
#endif
#ifdef HAVE_COS
#ifdef HAVE_COS
#define SDL_cos cos
#define SDL_cos cos
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_cos
(
double
x
);
extern
DECLSPEC
double
SDLCALL
SDL_cos
(
double
x
);
#endif
#endif
#ifdef HAVE_COSF
#ifdef HAVE_COSF
#define SDL_cosf cosf
#define SDL_cosf cosf
#else
#else
#define SDL_cosf(x) (float)SDL_cos((double)x)
#define SDL_cosf(x) (float)SDL_cos((double)x)
#endif
#endif
#ifdef HAVE_FABS
#ifdef HAVE_FABS
#define SDL_fabs fabs
#define SDL_fabs fabs
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_fabs
(
double
x
);
extern
DECLSPEC
double
SDLCALL
SDL_fabs
(
double
x
);
#endif
#endif
#ifdef HAVE_FLOOR
#ifdef HAVE_FLOOR
#define SDL_floor floor
#define SDL_floor floor
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_floor
(
double
x
);
extern
DECLSPEC
double
SDLCALL
SDL_floor
(
double
x
);
#endif
#endif
#ifdef HAVE_LOG
#ifdef HAVE_LOG
#define SDL_log log
#define SDL_log log
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_log
(
double
x
);
extern
DECLSPEC
double
SDLCALL
SDL_log
(
double
x
);
#endif
#endif
#ifdef HAVE_POW
#ifdef HAVE_POW
#define SDL_pow pow
#define SDL_pow pow
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_pow
(
double
x
,
double
y
);
extern
DECLSPEC
double
SDLCALL
SDL_pow
(
double
x
,
double
y
);
#endif
#endif
#ifdef HAVE_SCALBN
#ifdef HAVE_SCALBN
#define SDL_scalbn scalbn
#define SDL_scalbn scalbn
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_scalbn
(
double
x
,
int
n
);
extern
DECLSPEC
double
SDLCALL
SDL_scalbn
(
double
x
,
int
n
);
#endif
#endif
#ifdef HAVE_SIN
#ifdef HAVE_SIN
#define SDL_sin sin
#define SDL_sin sin
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_sin
(
double
x
);
extern
DECLSPEC
double
SDLCALL
SDL_sin
(
double
x
);
#endif
#endif
#ifdef HAVE_SINF
#ifdef HAVE_SINF
#define SDL_sinf sinf
#define SDL_sinf sinf
#else
#else
#define SDL_sinf(x) (float)SDL_sin((double)x)
#define SDL_sinf(x) (float)SDL_sin((double)x)
#endif
#endif
#ifdef HAVE_SQRT
#ifdef HAVE_SQRT
#define SDL_sqrt sqrt
#define SDL_sqrt sqrt
#else
#else
extern
DECLSPEC
double
SDLCALL
SDL_sqrt
(
double
x
);
extern
DECLSPEC
double
SDLCALL
SDL_sqrt
(
double
x
);
#endif
#endif
/* The SDL implementation of iconv() returns these error codes */
/* The SDL implementation of iconv() returns these error codes */
#define SDL_ICONV_ERROR (size_t)-1
#define SDL_ICONV_ERROR (size_t)-1
#define SDL_ICONV_E2BIG (size_t)-2
#define SDL_ICONV_E2BIG (size_t)-2
#define SDL_ICONV_EILSEQ (size_t)-3
#define SDL_ICONV_EILSEQ (size_t)-3
#define SDL_ICONV_EINVAL (size_t)-4
#define SDL_ICONV_EINVAL (size_t)-4
#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H)
#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H)
#define SDL_iconv_t iconv_t
#define SDL_iconv_t iconv_t
#define SDL_iconv_open iconv_open
#define SDL_iconv_open iconv_open
#define SDL_iconv_close iconv_close
#define SDL_iconv_close iconv_close
#else
#else
typedef
struct
_SDL_iconv_t
*
SDL_iconv_t
;
typedef
struct
_SDL_iconv_t
*
SDL_iconv_t
;
extern
DECLSPEC
SDL_iconv_t
SDLCALL
SDL_iconv_open
(
const
char
*
tocode
,
extern
DECLSPEC
SDL_iconv_t
SDLCALL
SDL_iconv_open
(
const
char
*
tocode
,
const
char
*
fromcode
);
const
char
*
fromcode
);
extern
DECLSPEC
int
SDLCALL
SDL_iconv_close
(
SDL_iconv_t
cd
);
extern
DECLSPEC
int
SDLCALL
SDL_iconv_close
(
SDL_iconv_t
cd
);
#endif
#endif
extern
DECLSPEC
size_t
SDLCALL
SDL_iconv
(
SDL_iconv_t
cd
,
const
char
**
inbuf
,
extern
DECLSPEC
size_t
SDLCALL
SDL_iconv
(
SDL_iconv_t
cd
,
const
char
**
inbuf
,
size_t
*
inbytesleft
,
char
**
outbuf
,
size_t
*
inbytesleft
,
char
**
outbuf
,
size_t
*
outbytesleft
);
size_t
*
outbytesleft
);
/**
/**
* This function converts a string between encodings in one pass, returning a
* This function converts a string between encodings in one pass, returning a
* string that must be freed with SDL_free() or NULL on error.
* string that must be freed with SDL_free() or NULL on error.
*/
*/
extern
DECLSPEC
char
*
SDLCALL
SDL_iconv_string
(
const
char
*
tocode
,
extern
DECLSPEC
char
*
SDLCALL
SDL_iconv_string
(
const
char
*
tocode
,
const
char
*
fromcode
,
const
char
*
fromcode
,
const
char
*
inbuf
,
const
char
*
inbuf
,
size_t
inbytesleft
);
size_t
inbytesleft
);
#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
/* Ends C function definitions when using C++ */
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
#ifdef __cplusplus
/* *INDENT-OFF* */
/* *INDENT-OFF* */
}
}
/* *INDENT-ON* */
/* *INDENT-ON* */
#endif
#endif
#include "close_code.h"
#include "close_code.h"
#endif
/* _SDL_stdinc_h */
#endif
/* _SDL_stdinc_h */
/* vi: set ts=4 sw=4 expandtab: */
/* vi: set ts=4 sw=4 expandtab: */
src/haptic/nds/SDL_syshaptic.c
View file @
7d245d05
...
@@ -43,35 +43,35 @@ typedef struct
...
@@ -43,35 +43,35 @@ typedef struct
}
NDS_HapticData
;
}
NDS_HapticData
;
v
oid
void
NDS_EZF_OpenNorWrite
()
NDS_EZF_OpenNorWrite
()
{
{
G
BA_BUS
[
0x0FF0000
]
=
0xD200
;
GBA_BUS
[
0x0FF0000
]
=
0xD200
;
G
BA_BUS
[
0x0000000
]
=
0x1500
;
GBA_BUS
[
0x0000000
]
=
0x1500
;
G
BA_BUS
[
0x0010000
]
=
0xD200
;
GBA_BUS
[
0x0010000
]
=
0xD200
;
G
BA_BUS
[
0x0020000
]
=
0x1500
;
GBA_BUS
[
0x0020000
]
=
0x1500
;
G
BA_BUS
[
0x0E20000
]
=
0x1500
;
GBA_BUS
[
0x0E20000
]
=
0x1500
;
G
BA_BUS
[
0x0FE0000
]
=
0x1500
;
GBA_BUS
[
0x0FE0000
]
=
0x1500
;
}
void
}
void
NDS_EZF_CloseNorWrite
()
NDS_EZF_CloseNorWrite
()
{
{
G
BA_BUS
[
0x0FF0000
]
=
0xD200
;
GBA_BUS
[
0x0FF0000
]
=
0xD200
;
G
BA_BUS
[
0x0000000
]
=
0x1500
;
GBA_BUS
[
0x0000000
]
=
0x1500
;
G
BA_BUS
[
0x0010000
]
=
0xD200
;
GBA_BUS
[
0x0010000
]
=
0xD200
;
G
BA_BUS
[
0x0020000
]
=
0x1500
;
GBA_BUS
[
0x0020000
]
=
0x1500
;
G
BA_BUS
[
0x0E20000
]
=
0xD200
;
GBA_BUS
[
0x0E20000
]
=
0xD200
;
G
BA_BUS
[
0x0FE0000
]
=
0x1500
;
GBA_BUS
[
0x0FE0000
]
=
0x1500
;
}
}
void
void
NDS_EZF_ChipReset
()
NDS_EZF_ChipReset
()
{
{
G
BA_BUS
[
0x0000
]
=
0x00F0
;
GBA_BUS
[
0x0000
]
=
0x00F0
;
G
BA_BUS
[
0x1000
]
=
0x00F0
;
GBA_BUS
[
0x1000
]
=
0x00F0
;
}
uint32
NDS_EZF_IsPresent
()
}
uint32
NDS_EZF_IsPresent
()
{
{
v
uint16
id1
,
id2
;
vuint16
id1
,
id2
;
NDS_EZF_OpenNorWrite
();
NDS_EZF_OpenNorWrite
();
...
@@ -81,35 +81,35 @@ NDS_EZF_ChipReset()
...
@@ -81,35 +81,35 @@ NDS_EZF_ChipReset()
GBA_BUS
[
0x1555
]
=
0x00AA
;
GBA_BUS
[
0x1555
]
=
0x00AA
;
GBA_BUS
[
0x12AA
]
=
0x0055
;
GBA_BUS
[
0x12AA
]
=
0x0055
;
GBA_BUS
[
0x1555
]
=
0x0090
;
GBA_BUS
[
0x1555
]
=
0x0090
;
i
d1
=
GBA_BUS
[
0x0001
];
id1
=
GBA_BUS
[
0x0001
];
i
d2
=
GBA_BUS
[
0x1001
];
id2
=
GBA_BUS
[
0x1001
];
i
f
((
id1
!=
0x227E
)
||
(
id2
!=
0x227E
))
{
if
((
id1
!=
0x227E
)
||
(
id2
!=
0x227E
))
{
NDS_EZF_CloseNorWrite
();
NDS_EZF_CloseNorWrite
();
r
eturn
0
;
return
0
;
}
}
i
d1
=
GBA_BUS
[
0x000E
];
id1
=
GBA_BUS
[
0x000E
];
i
d2
=
GBA_BUS
[
0x100E
];
id2
=
GBA_BUS
[
0x100E
];
NDS_EZF_CloseNorWrite
();
NDS_EZF_CloseNorWrite
();
i
f
(
id1
==
0x2218
&&
id2
==
0x2218
)
{
if
(
id1
==
0x2218
&&
id2
==
0x2218
)
{
r
eturn
1
;
return
1
;
}
}
r
eturn
0
;
return
0
;
}
}
v
oid
void
NDS_EZF_SetShake
(
u8
pos
)
NDS_EZF_SetShake
(
u8
pos
)
{
{
u16
data
=
((
pos
%
3
)
|
0x00F0
);
u16
data
=
((
pos
%
3
)
|
0x00F0
);
G
BA_BUS
[
0x0FF0000
]
=
0xD200
;
GBA_BUS
[
0x0FF0000
]
=
0xD200
;
G
BA_BUS
[
0x0000000
]
=
0x1500
;
GBA_BUS
[
0x0000000
]
=
0x1500
;
G
BA_BUS
[
0x0010000
]
=
0xD200
;
GBA_BUS
[
0x0010000
]
=
0xD200
;
G
BA_BUS
[
0x0020000
]
=
0x1500
;
GBA_BUS
[
0x0020000
]
=
0x1500
;
G
BA_BUS
[
0x0F10000
]
=
data
;
GBA_BUS
[
0x0F10000
]
=
data
;
G
BA_BUS
[
0x0FE0000
]
=
0x1500
;
GBA_BUS
[
0x0FE0000
]
=
0x1500
;
GBA_BUS
[
0
]
=
0x0000
;
/* write any value for vibration. */
GBA_BUS
[
0
]
=
0x0000
;
/* write any value for vibration. */
GBA_BUS
[
0
]
=
0x0002
;
GBA_BUS
[
0
]
=
0x0002
;
}
}
static
int
static
int
SDL_SYS_LogicError
(
void
)
SDL_SYS_LogicError
(
void
)
...
...
src/joystick/nds/SDL_sysjoystick.c
View file @
7d245d05
...
@@ -45,7 +45,7 @@ int
...
@@ -45,7 +45,7 @@ int
SDL_SYS_JoystickInit
(
void
)
SDL_SYS_JoystickInit
(
void
)
{
{
SDL_numjoysticks
=
1
;
SDL_numjoysticks
=
1
;
r
eturn
(
1
);
return
(
1
);
}
}
/* Function to get the device-dependent name of a joystick */
/* Function to get the device-dependent name of a joystick */
...
@@ -73,7 +73,7 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
...
@@ -73,7 +73,7 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick)
return
0
;
return
0
;
}
}
/* Function to update the state of a joystick - called as a device poll.
/* Function to update the state of a joystick - called as a device poll.
* This function shouldn't update the joystick structure directly,
* This function shouldn't update the joystick structure directly,
* but instead should call SDL_PrivateJoystick*() to deliver events
* but instead should call SDL_PrivateJoystick*() to deliver events
...
@@ -84,8 +84,8 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
...
@@ -84,8 +84,8 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
{
{
u32
keysd
,
keysu
;
u32
keysd
,
keysu
;
int
magnitude
=
16384
;
int
magnitude
=
16384
;
/*scanKeys(); - this is done in PumpEvents, because touch uses it too */
/*scanKeys(); - this is done in PumpEvents, because touch uses it too */
keysd
=
keysDown
();
keysd
=
keysDown
();
keysu
=
keysUp
();
keysu
=
keysUp
();
...
@@ -101,61 +101,61 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
...
@@ -101,61 +101,61 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
if
((
keysd
&
KEY_RIGHT
))
{
if
((
keysd
&
KEY_RIGHT
))
{
SDL_PrivateJoystickAxis
(
joystick
,
0
,
magnitude
);
SDL_PrivateJoystickAxis
(
joystick
,
0
,
magnitude
);
}
}
i
f
((
keysu
&
(
KEY_UP
|
KEY_DOWN
)))
{
if
((
keysu
&
(
KEY_UP
|
KEY_DOWN
)))
{
SDL_PrivateJoystickAxis
(
joystick
,
1
,
0
);
SDL_PrivateJoystickAxis
(
joystick
,
1
,
0
);
}
}
i
f
((
keysu
&
(
KEY_LEFT
|
KEY_RIGHT
)))
{
if
((
keysu
&
(
KEY_LEFT
|
KEY_RIGHT
)))
{
SDL_PrivateJoystickAxis
(
joystick
,
0
,
0
);
SDL_PrivateJoystickAxis
(
joystick
,
0
,
0
);
}
}
i
f
((
keysd
&
KEY_A
))
{
if
((
keysd
&
KEY_A
))
{
SDL_PrivateJoystickButton
(
joystick
,
0
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
0
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_B
))
{
if
((
keysd
&
KEY_B
))
{
SDL_PrivateJoystickButton
(
joystick
,
1
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
1
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_X
))
{
if
((
keysd
&
KEY_X
))
{
SDL_PrivateJoystickButton
(
joystick
,
2
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
2
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_Y
))
{
if
((
keysd
&
KEY_Y
))
{
SDL_PrivateJoystickButton
(
joystick
,
3
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
3
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_L
))
{
if
((
keysd
&
KEY_L
))
{
SDL_PrivateJoystickButton
(
joystick
,
4
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
4
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_R
))
{
if
((
keysd
&
KEY_R
))
{
SDL_PrivateJoystickButton
(
joystick
,
5
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
5
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_SELECT
))
{
if
((
keysd
&
KEY_SELECT
))
{
SDL_PrivateJoystickButton
(
joystick
,
6
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
6
,
SDL_PRESSED
);
}
}
i
f
((
keysd
&
KEY_START
))
{
if
((
keysd
&
KEY_START
))
{
SDL_PrivateJoystickButton
(
joystick
,
7
,
SDL_PRESSED
);
SDL_PrivateJoystickButton
(
joystick
,
7
,
SDL_PRESSED
);
}
}
i
f
((
keysu
&
KEY_A
))
{
if
((
keysu
&
KEY_A
))
{
SDL_PrivateJoystickButton
(
joystick
,
0
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
0
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_B
))
{
if
((
keysu
&
KEY_B
))
{
SDL_PrivateJoystickButton
(
joystick
,
1
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
1
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_X
))
{
if
((
keysu
&
KEY_X
))
{
SDL_PrivateJoystickButton
(
joystick
,
2
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
2
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_Y
))
{
if
((
keysu
&
KEY_Y
))
{
SDL_PrivateJoystickButton
(
joystick
,
3
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
3
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_L
))
{
if
((
keysu
&
KEY_L
))
{
SDL_PrivateJoystickButton
(
joystick
,
4
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
4
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_R
))
{
if
((
keysu
&
KEY_R
))
{
SDL_PrivateJoystickButton
(
joystick
,
5
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
5
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_SELECT
))
{
if
((
keysu
&
KEY_SELECT
))
{
SDL_PrivateJoystickButton
(
joystick
,
6
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
6
,
SDL_RELEASED
);
}
}
i
f
((
keysu
&
KEY_START
))
{
if
((
keysu
&
KEY_START
))
{
SDL_PrivateJoystickButton
(
joystick
,
7
,
SDL_RELEASED
);
SDL_PrivateJoystickButton
(
joystick
,
7
,
SDL_RELEASED
);
}
}
}
}
/* Function to close a joystick after use */
/* Function to close a joystick after use */
void
void
...
...
src/video/win32/SDL_win32video.c
View file @
7d245d05
/*
/*
SDL - Simple DirectMedia Layer
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2010 Sam Lantinga
Copyright (C) 1997-2010 Sam Lantinga
This library is free software; you can redistribute it and/or
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
Sam Lantinga
slouken@libsdl.org
slouken@libsdl.org
*/
*/
#include "SDL_config.h"
#include "SDL_config.h"
#include "SDL_main.h"
#include "SDL_main.h"
#include "SDL_video.h"
#include "SDL_video.h"
#include "SDL_mouse.h"
#include "SDL_mouse.h"
#include "../SDL_sysvideo.h"
#include "../SDL_sysvideo.h"
#include "../SDL_pixels_c.h"
#include "../SDL_pixels_c.h"
#include "SDL_win32video.h"
#include "SDL_win32video.h"
#include "SDL_d3drender.h"
#include "SDL_d3drender.h"
#include "SDL_gdirender.h"
#include "SDL_gdirender.h"
/* Initialization/Query functions */
/* Initialization/Query functions */
static
int
WIN_VideoInit
(
_THIS
);
static
int
WIN_VideoInit
(
_THIS
);
static
void
WIN_VideoQuit
(
_THIS
);
static
void
WIN_VideoQuit
(
_THIS
);
/* Sets an error message based on GetLastError() */
/* Sets an error message based on GetLastError() */
void
void
WIN_SetError
(
const
char
*
prefix
)
WIN_SetError
(
const
char
*
prefix
)
{
{
TCHAR
buffer
[
1024
];
TCHAR
buffer
[
1024
];
char
*
message
;
char
*
message
;
FormatMessage
(
FORMAT_MESSAGE_FROM_SYSTEM
,
NULL
,
GetLastError
(),
0
,
FormatMessage
(
FORMAT_MESSAGE_FROM_SYSTEM
,
NULL
,
GetLastError
(),
0
,
buffer
,
SDL_arraysize
(
buffer
),
NULL
);
buffer
,
SDL_arraysize
(
buffer
),
NULL
);
message
=
WIN_StringToUTF8
(
buffer
);
message
=
WIN_StringToUTF8
(
buffer
);
SDL_SetError
(
"%s%s%s"
,
prefix
?
prefix
:
""
,
prefix
?
": "
:
""
,
message
);
SDL_SetError
(
"%s%s%s"
,
prefix
?
prefix
:
""
,
prefix
?
": "
:
""
,
message
);
SDL_free
(
message
);
SDL_free
(
message
);
}
}
/* WIN32 driver bootstrap functions */
/* WIN32 driver bootstrap functions */
static
int
static
int
WIN_Available
(
void
)
WIN_Available
(
void
)
{
{
return
(
1
);
return
(
1
);
}
}
static
void
static
void
WIN_DeleteDevice
(
SDL_VideoDevice
*
device
)
WIN_DeleteDevice
(
SDL_VideoDevice
*
device
)
{
{
SDL_VideoData
*
data
=
(
SDL_VideoData
*
)
device
->
driverdata
;
SDL_VideoData
*
data
=
(
SDL_VideoData
*
)
device
->
driverdata
;
SDL_UnregisterApp
();
SDL_UnregisterApp
();
#if SDL_VIDEO_RENDER_D3D
#if SDL_VIDEO_RENDER_D3D
if
(
data
->
d3d
)
{
if
(
data
->
d3d
)
{
IDirect3D9_Release
(
data
->
d3d
);
IDirect3D9_Release
(
data
->
d3d
);
FreeLibrary
(
data
->
d3dDLL
);
FreeLibrary
(
data
->
d3dDLL
);
}
}
#endif
#endif
#if SDL_VIDEO_RENDER_DDRAW
#if SDL_VIDEO_RENDER_DDRAW
if
(
data
->
ddraw
)
{
if
(
data
->
ddraw
)
{
data
->
ddraw
->
lpVtbl
->
Release
(
data
->
ddraw
);
data
->
ddraw
->
lpVtbl
->
Release
(
data
->
ddraw
);
FreeLibrary
(
data
->
ddrawDLL
);
FreeLibrary
(
data
->
ddrawDLL
);
}
}
#endif
#endif
SDL_free
(
device
->
driverdata
);
SDL_free
(
device
->
driverdata
);
SDL_free
(
device
);
SDL_free
(
device
);
}
}
static
SDL_VideoDevice
*
static
SDL_VideoDevice
*
WIN_CreateDevice
(
int
devindex
)
WIN_CreateDevice
(
int
devindex
)
{
{
SDL_VideoDevice
*
device
;
SDL_VideoDevice
*
device
;
SDL_VideoData
*
data
;
SDL_VideoData
*
data
;
SDL_RegisterApp
(
NULL
,
0
,
NULL
);
SDL_RegisterApp
(
NULL
,
0
,
NULL
);
/* Initialize all variables that we clean on shutdown */
/* Initialize all variables that we clean on shutdown */
device
=
(
SDL_VideoDevice
*
)
SDL_calloc
(
1
,
sizeof
(
SDL_VideoDevice
));
device
=
(
SDL_VideoDevice
*
)
SDL_calloc
(
1
,
sizeof
(
SDL_VideoDevice
));
if
(
device
)
{
if
(
device
)
{
data
=
(
struct
SDL_VideoData
*
)
SDL_calloc
(
1
,
sizeof
(
SDL_VideoData
));
data
=
(
struct
SDL_VideoData
*
)
SDL_calloc
(
1
,
sizeof
(
SDL_VideoData
));
}
else
{
}
else
{
data
=
NULL
;
data
=
NULL
;
}
}
if
(
!
data
)
{
if
(
!
data
)
{
SDL_OutOfMemory
();
SDL_OutOfMemory
();
if
(
device
)
{
if
(
device
)
{
SDL_free
(
device
);
SDL_free
(
device
);
}
}
return
NULL
;
return
NULL
;
}
}
device
->
driverdata
=
data
;
device
->
driverdata
=
data
;
#if SDL_VIDEO_RENDER_D3D
#if SDL_VIDEO_RENDER_D3D
data
->
d3dDLL
=
LoadLibrary
(
TEXT
(
"D3D9.DLL"
));
data
->
d3dDLL
=
LoadLibrary
(
TEXT
(
"D3D9.DLL"
));
if
(
data
->
d3dDLL
)
{
if
(
data
->
d3dDLL
)
{
IDirect3D9
*
(
WINAPI
*
D3DCreate
)
(
UINT
SDKVersion
);
IDirect3D9
*
(
WINAPI
*
D3DCreate
)
(
UINT
SDKVersion
);
D3DCreate
=
D3DCreate
=
(
IDirect3D9
*
(
WINAPI
*
)
(
UINT
))
GetProcAddress
(
data
->
d3dDLL
,
(
IDirect3D9
*
(
WINAPI
*
)
(
UINT
))
GetProcAddress
(
data
->
d3dDLL
,
"Direct3DCreate9"
);
"Direct3DCreate9"
);
if
(
D3DCreate
)
{
if
(
D3DCreate
)
{
data
->
d3d
=
D3DCreate
(
D3D_SDK_VERSION
);
data
->
d3d
=
D3DCreate
(
D3D_SDK_VERSION
);
}
}
if
(
!
data
->
d3d
)
{
if
(
!
data
->
d3d
)
{
FreeLibrary
(
data
->
d3dDLL
);
FreeLibrary
(
data
->
d3dDLL
);
data
->
d3dDLL
=
NULL
;
data
->
d3dDLL
=
NULL
;
}
}
}
}
#endif
/* SDL_VIDEO_RENDER_D3D */
#endif
/* SDL_VIDEO_RENDER_D3D */
#if SDL_VIDEO_RENDER_DDRAW
#if SDL_VIDEO_RENDER_DDRAW
data
->
ddrawDLL
=
LoadLibrary
(
TEXT
(
"ddraw.dll"
));
data
->
ddrawDLL
=
LoadLibrary
(
TEXT
(
"ddraw.dll"
));
if
(
data
->
ddrawDLL
)
{
if
(
data
->
ddrawDLL
)
{
IDirectDraw
*
(
WINAPI
*
DDCreate
)
(
GUID
FAR
*
lpGUID
,
IDirectDraw
*
(
WINAPI
*
DDCreate
)
(
GUID
FAR
*
lpGUID
,
LPDIRECTDRAW
FAR
*
lplpDD
,
LPDIRECTDRAW
FAR
*
lplpDD
,
IUnknown
FAR
*
pUnkOuter
);
IUnknown
FAR
*
pUnkOuter
);
DDCreate
=
DDCreate
=
(
IDirectDraw
*
(
IDirectDraw
*
(
WINAPI
*
)
(
GUID
FAR
*
,
LPDIRECTDRAW
FAR
*
,
IUnknown
FAR
*
))
(
WINAPI
*
)
(
GUID
FAR
*
,
LPDIRECTDRAW
FAR
*
,
IUnknown
FAR
*
))
GetProcAddress
(
data
->
ddrawDLL
,
TEXT
(
"DirectDrawCreate"
));
GetProcAddress
(
data
->
ddrawDLL
,
TEXT
(
"DirectDrawCreate"
));
if
(
!
DDCreate
||
DDCreate
(
NULL
,
&
data
->
ddraw
,
NULL
)
!=
DD_OK
)
{
if
(
!
DDCreate
||
DDCreate
(
NULL
,
&
data
->
ddraw
,
NULL
)
!=
DD_OK
)
{
FreeLibrary
(
data
->
ddrawDLL
);
FreeLibrary
(
data
->
ddrawDLL
);
data
->
ddrawDLL
=
NULL
;
data
->
ddrawDLL
=
NULL
;
data
->
ddraw
=
NULL
;
data
->
ddraw
=
NULL
;
}
}
}
}
#endif
/* SDL_VIDEO_RENDER_DDRAW */
#endif
/* SDL_VIDEO_RENDER_DDRAW */
/* Set the function pointers */
/* Set the function pointers */
device
->
VideoInit
=
WIN_VideoInit
;
device
->
VideoInit
=
WIN_VideoInit
;
device
->
VideoQuit
=
WIN_VideoQuit
;
device
->
VideoQuit
=
WIN_VideoQuit
;
device
->
GetDisplayBounds
=
WIN_GetDisplayBounds
;
device
->
GetDisplayBounds
=
WIN_GetDisplayBounds
;
device
->
GetDisplayModes
=
WIN_GetDisplayModes
;
device
->
GetDisplayModes
=
WIN_GetDisplayModes
;
device
->
SetDisplayMode
=
WIN_SetDisplayMode
;
device
->
SetDisplayMode
=
WIN_SetDisplayMode
;
device
->
SetDisplayGammaRamp
=
WIN_SetDisplayGammaRamp
;
device
->
SetDisplayGammaRamp
=
WIN_SetDisplayGammaRamp
;
device
->
GetDisplayGammaRamp
=
WIN_GetDisplayGammaRamp
;
device
->
GetDisplayGammaRamp
=
WIN_GetDisplayGammaRamp
;
device
->
PumpEvents
=
WIN_PumpEvents
;
device
->
PumpEvents
=
WIN_PumpEvents
;
#undef CreateWindow
#undef CreateWindow
device
->
CreateWindow
=
WIN_CreateWindow
;
device
->
CreateWindow
=
WIN_CreateWindow
;
device
->
CreateWindowFrom
=
WIN_CreateWindowFrom
;
device
->
CreateWindowFrom
=
WIN_CreateWindowFrom
;
device
->
SetWindowTitle
=
WIN_SetWindowTitle
;
device
->
SetWindowTitle
=
WIN_SetWindowTitle
;
device
->
SetWindowIcon
=
WIN_SetWindowIcon
;
device
->
SetWindowIcon
=
WIN_SetWindowIcon
;
device
->
SetWindowPosition
=
WIN_SetWindowPosition
;
device
->
SetWindowPosition
=
WIN_SetWindowPosition
;
device
->
SetWindowSize
=
WIN_SetWindowSize
;
device
->
SetWindowSize
=
WIN_SetWindowSize
;
device
->
ShowWindow
=
WIN_ShowWindow
;
device
->
ShowWindow
=
WIN_ShowWindow
;
device
->
HideWindow
=
WIN_HideWindow
;
device
->
HideWindow
=
WIN_HideWindow
;
device
->
RaiseWindow
=
WIN_RaiseWindow
;
device
->
RaiseWindow
=
WIN_RaiseWindow
;
device
->
MaximizeWindow
=
WIN_MaximizeWindow
;
device
->
MaximizeWindow
=
WIN_MaximizeWindow
;
device
->
MinimizeWindow
=
WIN_MinimizeWindow
;
device
->
MinimizeWindow
=
WIN_MinimizeWindow
;
device
->
RestoreWindow
=
WIN_RestoreWindow
;
device
->
RestoreWindow
=
WIN_RestoreWindow
;
device
->
SetWindowGrab
=
WIN_SetWindowGrab
;
device
->
SetWindowGrab
=
WIN_SetWindowGrab
;
device
->
DestroyWindow
=
WIN_DestroyWindow
;
device
->
DestroyWindow
=
WIN_DestroyWindow
;
device
->
GetWindowWMInfo
=
WIN_GetWindowWMInfo
;
device
->
GetWindowWMInfo
=
WIN_GetWindowWMInfo
;
#ifdef SDL_VIDEO_OPENGL_WGL
#ifdef SDL_VIDEO_OPENGL_WGL
device
->
GL_LoadLibrary
=
WIN_GL_LoadLibrary
;
device
->
GL_LoadLibrary
=
WIN_GL_LoadLibrary
;
device
->
GL_GetProcAddress
=
WIN_GL_GetProcAddress
;
device
->
GL_GetProcAddress
=
WIN_GL_GetProcAddress
;
device
->
GL_UnloadLibrary
=
WIN_GL_UnloadLibrary
;
device
->
GL_UnloadLibrary
=
WIN_GL_UnloadLibrary
;
device
->
GL_CreateContext
=
WIN_GL_CreateContext
;
device
->
GL_CreateContext
=
WIN_GL_CreateContext
;
device
->
GL_MakeCurrent
=
WIN_GL_MakeCurrent
;
device
->
GL_MakeCurrent
=
WIN_GL_MakeCurrent
;
device
->
GL_SetSwapInterval
=
WIN_GL_SetSwapInterval
;
device
->
GL_SetSwapInterval
=
WIN_GL_SetSwapInterval
;
device
->
GL_GetSwapInterval
=
WIN_GL_GetSwapInterval
;
device
->
GL_GetSwapInterval
=
WIN_GL_GetSwapInterval
;
device
->
GL_SwapWindow
=
WIN_GL_SwapWindow
;
device
->
GL_SwapWindow
=
WIN_GL_SwapWindow
;
device
->
GL_DeleteContext
=
WIN_GL_DeleteContext
;
device
->
GL_DeleteContext
=
WIN_GL_DeleteContext
;
#endif
#endif
device
->
StartTextInput
=
WIN_StartTextInput
;
device
->
StartTextInput
=
WIN_StartTextInput
;
device
->
StopTextInput
=
WIN_StopTextInput
;
device
->
StopTextInput
=
WIN_StopTextInput
;
device
->
SetTextInputRect
=
WIN_SetTextInputRect
;
device
->
SetTextInputRect
=
WIN_SetTextInputRect
;
device
->
SetClipboardText
=
WIN_SetClipboardText
;
device
->
SetClipboardText
=
WIN_SetClipboardText
;
device
->
GetClipboardText
=
WIN_GetClipboardText
;
device
->
GetClipboardText
=
WIN_GetClipboardText
;
device
->
HasClipboardText
=
WIN_HasClipboardText
;
device
->
HasClipboardText
=
WIN_HasClipboardText
;
device
->
free
=
WIN_DeleteDevice
;
device
->
free
=
WIN_DeleteDevice
;
return
device
;
return
device
;
}
}
VideoBootStrap
WIN32_bootstrap
=
{
VideoBootStrap
WIN32_bootstrap
=
{
"win32"
,
"SDL Win32/64 video driver"
,
WIN_Available
,
WIN_CreateDevice
"win32"
,
"SDL Win32/64 video driver"
,
WIN_Available
,
WIN_CreateDevice
};
};
int
int
WIN_VideoInit
(
_THIS
)
WIN_VideoInit
(
_THIS
)
{
{
if
(
WIN_InitModes
(
_this
)
<
0
)
{
if
(
WIN_InitModes
(
_this
)
<
0
)
{
return
-
1
;
return
-
1
;
}
}
#if SDL_VIDEO_RENDER_D3D
#if SDL_VIDEO_RENDER_D3D
D3D_AddRenderDriver
(
_this
);
D3D_AddRenderDriver
(
_this
);
#endif
#endif
#if SDL_VIDEO_RENDER_DDRAW
#if SDL_VIDEO_RENDER_DDRAW
DDRAW_AddRenderDriver
(
_this
);
DDRAW_AddRenderDriver
(
_this
);
#endif
#endif
#if SDL_VIDEO_RENDER_GDI
#if SDL_VIDEO_RENDER_GDI
GDI_AddRenderDriver
(
_this
);
GDI_AddRenderDriver
(
_this
);
#endif
#endif
#if SDL_VIDEO_RENDER_GAPI
#if SDL_VIDEO_RENDER_GAPI
GAPI_AddRenderDriver
(
_this
);
GAPI_AddRenderDriver
(
_this
);
#endif
#endif
WIN_InitKeyboard
(
_this
);
WIN_InitKeyboard
(
_this
);
WIN_InitMouse
(
_this
);
WIN_InitMouse
(
_this
);
return
0
;
return
0
;
}
}
void
void
WIN_VideoQuit
(
_THIS
)
WIN_VideoQuit
(
_THIS
)
{
{
WIN_QuitModes
(
_this
);
WIN_QuitModes
(
_this
);
WIN_QuitKeyboard
(
_this
);
WIN_QuitKeyboard
(
_this
);
WIN_QuitMouse
(
_this
);
WIN_QuitMouse
(
_this
);
}
}
/* vim: set ts=4 sw=4 expandtab: */
/* vim: set ts=4 sw=4 expandtab: */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment