Started the process of improving configure support, and merging C types
and library support into a single header.
--- a/configure.in Thu Feb 09 05:46:55 2006 +0000
+++ b/configure.in Thu Feb 09 09:07:13 2006 +0000
@@ -1,6 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(README)
AC_CONFIG_HEADER(include/SDL_config.h)
+AC_GNU_SOURCE
dnl Set various version strings - taken gratefully from the GTk sources
#
@@ -53,11 +54,8 @@
AM_PROG_LIBTOOL
AC_PROG_MAKE_SET
AC_PROG_CC
-AC_C_INLINE
-AC_C_CONST
AC_PROG_CXX
AC_PROG_INSTALL
-AC_FUNC_ALLOCA
ASFLAGS=""
AC_SUBST(ASFLAGS)
CCAS="$CC"
@@ -122,34 +120,76 @@
[ --enable-libc Use the system C library [default=yes]],
, AC_DEFINE([HAVE_LIBC]))
-dnl Checks for header files.
-AC_CHECK_HEADERS(alloca.h stdint.h stdlib.h stdarg.h malloc.h)
-AC_CHECK_HEADERS(ctype.h)
-AC_CHECK_HEADERS(string.h)
-AC_CHECK_HEADERS(stdio.h)
-AC_CHECK_HEADERS(signal.h)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
+dnl Check for compiler characteristics
AC_C_CONST
AC_C_INLINE
+AC_C_VOLATILE
+
+dnl Check for header files
+AC_HEADER_STDC
+AC_CHECK_HEADERS(sys/types.h stdio.h stdlib.h stddef.h stdarg.h malloc.h memory.h string.h strings.h inttypes.h stdint.h ctype.h signal.h)
+
+dnl Check for typedefs, structures, etc.
AC_TYPE_SIZE_T
-AC_CHECK_SIZEOF(char, 1)
-AC_CHECK_SIZEOF(short, 2)
-AC_CHECK_SIZEOF(int, 4)
-AC_CHECK_SIZEOF(long, 4)
-AC_CHECK_SIZEOF(long long, 8)
+if test x$ac_cv_header_inttypes_h = xyes -o x$ac_cv_header_stdint_h = xyes; then
+ AC_CHECK_TYPE(int64_t)
+ if test x$ac_cv_type_int64_t = xyes; then
+ AC_DEFINE(SDL_HAS_64BIT_TYPE)
+ fi
+else
+ AC_CHECK_SIZEOF(char, 1)
+ AC_CHECK_SIZEOF(short, 2)
+ AC_CHECK_SIZEOF(int, 4)
+ AC_CHECK_SIZEOF(long, 4)
+ AC_CHECK_SIZEOF(long long, 8)
+ if test x$ac_cv_sizeof_char = x1; then
+ AC_DEFINE(int8_t, signed char)
+ AC_DEFINE(uint8_t, unsigned char)
+ fi
+ if test x$ac_cv_sizeof_short = x2; then
+ AC_DEFINE(int16_t, signed short)
+ AC_DEFINE(uint16_t, unsigned short)
+ else
+ if test x$ac_cv_sizeof_int = x2; then
+ AC_DEFINE(int16_t, signed int)
+ AC_DEFINE(uint16_t, unsigned int)
+ fi
+ fi
+ if test x$ac_cv_sizeof_int = x4; then
+ AC_DEFINE(int32_t, signed int)
+ AC_DEFINE(uint32_t, unsigned int)
+ else
+ if test x$ac_cv_sizeof_long = x4; then
+ AC_DEFINE(int32_t, signed long)
+ AC_DEFINE(uint32_t, unsigned long)
+ fi
+ fi
+ if test x$ac_cv_sizeof_long = x8; then
+ AC_DEFINE(int64_t, signed long)
+ AC_DEFINE(uint64_t, unsigned long)
+ AC_DEFINE(SDL_HAS_64BIT_TYPE)
+ else
+ if test x$ac_cv_sizeof_long_long = x8; then
+ AC_DEFINE(int64_t, signed long long)
+ AC_DEFINE(uint64_t, unsigned long long)
+ AC_DEFINE(SDL_HAS_64BIT_TYPE)
+ fi
+ fi
+ AC_CHECK_TYPE(uintptr_t, unsigned long)
+fi
dnl Checks for library functions.
AC_FUNC_ALLOCA
-AC_CHECK_FUNCS(malloc calloc realloc free)
-AC_CHECK_FUNCS(getenv putenv unsetenv qsort abs)
-AC_CHECK_FUNCS(memset memcpy memmove memcmp)
-AC_CHECK_FUNCS(strlen strcpy strncpy strcat strncat strdup)
-AC_CHECK_FUNCS(_strrev _strupr _strlwr)
-AC_CHECK_FUNCS(strchr strrchr strstr)
-AC_CHECK_FUNCS(itoa _ltoa _uitoa _ultoa strtol _i64toa _ui64toa strtoll strtod atoi atof)
-AC_CHECK_FUNCS(strcmp strncmp stricmp strcasecmp)
-AC_CHECK_FUNCS(sscanf snprintf vsnprintf)
+AC_FUNC_MEMCMP
+if test x$ac_cv_func_memcmp_working = xyes; then
+ AC_DEFINE(HAVE_MEMCMP)
+fi
+AC_FUNC_STRTOD
+if test x$ac_cv_func_strtod = xyes; then
+ AC_DEFINE(HAVE_STRTOD)
+fi
+AC_CHECK_FUNCS(malloc calloc realloc free getenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strcpy strncpy strcat strncat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol _i64toa _ui64toa strtoll atoi atof strcmp strncmp stricmp strcasecmp sscanf snprintf vsnprint)
+
dnl Initialize the compiler and linker flags for SDL applications
--- a/include/SDL.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL.h Thu Feb 09 09:07:13 2006 +0000
@@ -25,10 +25,8 @@
#ifndef _SDL_H
#define _SDL_H
-#include "SDL_config.h"
+#include "SDL_stdinc.h"
#include "SDL_main.h"
-#include "SDL_types.h"
-#include "SDL_getenv.h"
#include "SDL_error.h"
#include "SDL_rwops.h"
#include "SDL_timer.h"
@@ -37,9 +35,9 @@
#include "SDL_joystick.h"
#include "SDL_events.h"
#include "SDL_video.h"
+#include "SDL_loadso.h"
#include "SDL_byteorder.h"
#include "SDL_version.h"
-#include "SDL_loadso.h"
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
--- a/include/SDL_active.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_active.h Thu Feb 09 09:07:13 2006 +0000
@@ -25,6 +25,9 @@
#ifndef _SDL_active_h
#define _SDL_active_h
+#include "SDL_stdinc.h"
+
+#ifndef DISABLE_EVENTS
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
@@ -51,5 +54,6 @@
}
#endif
#include "close_code.h"
+#endif /* !DISABLE_EVENTS */
#endif /* _SDL_active_h */
--- a/include/SDL_audio.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_audio.h Thu Feb 09 09:07:13 2006 +0000
@@ -25,12 +25,13 @@
#ifndef _SDL_audio_h
#define _SDL_audio_h
+#include "SDL_stdinc.h"
#include "SDL_main.h"
-#include "SDL_types.h"
#include "SDL_error.h"
#include "SDL_rwops.h"
#include "SDL_byteorder.h"
+#ifndef DISABLE_AUDIO
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
@@ -248,5 +249,6 @@
}
#endif
#include "close_code.h"
+#endif /* !DISABLE_AUDIO */
#endif /* _SDL_audio_h */
--- a/include/SDL_byteorder.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_byteorder.h Thu Feb 09 09:07:13 2006 +0000
@@ -25,38 +25,24 @@
#ifndef _SDL_byteorder_h
#define _SDL_byteorder_h
+#include "SDL_config.h"
+
/* The two types of endianness */
#define SDL_LIL_ENDIAN 1234
#define SDL_BIG_ENDIAN 4321
-#ifdef __linux__
-# include <endian.h>
-# if BYTE_ORDER == LITTLE_ENDIAN
-# define SDL_BYTEORDER SDL_LIL_ENDIAN
-# else
-# define SDL_BYTEORDER SDL_BIG_ENDIAN
-# endif
-
-#else
-
-/* Pardon the mess, I'm trying to determine the endianness of this host.
- I'm doing it by preprocessor defines rather than some sort of configure
- script so that application code can use this too. The "right" way would
- be to dynamically generate this file on install, but that's a lot of work.
- */
+#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */
#if (defined(__i386__) || defined(__i386)) || \
- defined(__ia64__) || defined(WIN32) || \
+ defined(__ia64__) || defined(__x86_64__) || \
(defined(__alpha__) || defined(__alpha)) || \
(defined(__arm__) || defined(__thumb__)) || \
(defined(__sh__) || defined(__sh64__)) || \
(defined(__mips__) && defined(__MIPSEL__)) || \
- defined(__SYMBIAN32__) || defined(__x86_64__) || \
- defined(__OS2__) || defined(__LITTLE_ENDIAN__)
+ defined(__SYMBIAN32__) || defined(__OS2__)
#define SDL_BYTEORDER SDL_LIL_ENDIAN
#else
#define SDL_BYTEORDER SDL_BIG_ENDIAN
#endif
-
-#endif /* __linux__ */
+#endif /* !SDL_BYTEORDER */
#endif /* _SDL_byteorder_h */
--- a/include/SDL_cdrom.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_cdrom.h Thu Feb 09 09:07:13 2006 +0000
@@ -25,8 +25,9 @@
#ifndef _SDL_cdrom_h
#define _SDL_cdrom_h
-#include "SDL_types.h"
+#include "SDL_stdinc.h"
+#ifndef DISABLE_CDROM
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
@@ -166,5 +167,6 @@
}
#endif
#include "close_code.h"
+#endif /* !DISABLE_CDROM */
#endif /* _SDL_video_h */
--- a/include/SDL_config.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_config.h Thu Feb 09 09:07:13 2006 +0000
@@ -25,6 +25,15 @@
/* This is the minimal configuration that can be used to build SDL */
-#define HAVE_STDARG_H 1
+#include <stdarg.h>
+
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef signed short int16_t;
+typedef unsigned short uint16_t;
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+typedef unsigned int size_t;
+typedef unsigned long uintptr_t;
#endif /* _SDL_config_h */
--- a/include/SDL_config.h.in Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_config.h.in Thu Feb 09 09:07:13 2006 +0000
@@ -25,23 +25,44 @@
/* This is a set of defines to configure the SDL features */
-#undef HAVE_STDARG_H
+/* C language features */
+#undef const
+#undef inline
+#undef volatile
-/* Comment this if you want to build without any libc requirements */
+/* C datatypes */
+#undef size_t
+#undef int8_t
+#undef uint8_t
+#undef int16_t
+#undef uint16_t
+#undef int32_t
+#undef uint32_t
+#undef SDL_HAS_64BIT_TYPE
+#undef int64_t
+#undef uint64_t
+#undef uintptr_t
+
+/* Comment this if you want to build without any C library requirements */
#undef HAVE_LIBC
#ifdef HAVE_LIBC
-/* Various C library headers */
+/* Useful headers */
+#undef HAVE_SYS_TYPES_H
#undef HAVE_STDIO_H
+#undef STDC_HEADERS
#undef HAVE_STDLIB_H
+#undef HAVE_STDARG_H
#undef HAVE_MALLOC_H
+#undef HAVE_MEMORY_H
#undef HAVE_STRING_H
+#undef HAVE_STRINGS_H
+#undef HAVE_INTTYPES_H
+#undef HAVE_STDINT_H
#undef HAVE_CTYPE_H
-#ifndef _WIN32_WCE
#undef HAVE_SIGNAL_H
-#endif /* !_WIN32_WCE */
-/* Features provided by SDL_stdlib.h */
+/* C library functions */
#undef HAVE_MALLOC
#undef HAVE_CALLOC
#undef HAVE_REALLOC
@@ -54,8 +75,7 @@
#endif
#undef HAVE_QSORT
#undef HAVE_ABS
-
-/* Features provided by SDL_string.h */
+#undef HAVE_BCOPY
#undef HAVE_MEMSET
#undef HAVE_MEMCPY
#undef HAVE_MEMMOVE
@@ -69,6 +89,8 @@
#undef HAVE__STRREV
#undef HAVE__STRUPR
#undef HAVE__STRLWR
+#undef HAVE_INDEX
+#undef HAVE_RINDEX
#undef HAVE_STRCHR
#undef HAVE_STRRCHR
#undef HAVE_STRSTR
@@ -93,4 +115,17 @@
#endif /* HAVE_LIBC */
+
+/* Allow disabling of core subsystems */
+#undef DISABLE_AUDIO
+#undef DISABLE_VIDEO
+#undef DISABLE_EVENTS
+#undef DISABLE_JOYSTICK
+#undef DISABLE_CDROM
+#undef DISABLE_THREADS
+#undef DISABLE_TIMERS
+#undef DISABLE_ENDIAN
+#undef DISABLE_FILE
+#undef DISABLE_CPUINFO
+
#endif /* _SDL_config_h */
--- a/include/SDL_config.h.minimal Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_config.h.minimal Thu Feb 09 09:07:13 2006 +0000
@@ -25,6 +25,15 @@
/* This is the minimal configuration that can be used to build SDL */
-#define HAVE_STDARG_H 1
+#include <stdarg.h>
+
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef signed short int16_t;
+typedef unsigned short uint16_t;
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+typedef unsigned int size_t;
+typedef unsigned long uintptr_t;
#endif /* _SDL_config_h */
--- a/include/SDL_cpuinfo.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_cpuinfo.h Thu Feb 09 09:07:13 2006 +0000
@@ -23,9 +23,12 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* CPU feature detection for SDL */
+#include "SDL_stdinc.h"
+
#ifndef _SDL_cpuinfo_h
#define _SDL_cpuinfo_h
+#ifndef DISABLE_CPUINFO
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
@@ -69,5 +72,6 @@
}
#endif
#include "close_code.h"
+#endif /* !DISABLE_CPUINFO */
#endif /* _SDL_cpuinfo_h */
--- a/include/SDL_ctype.h Thu Feb 09 05:46:55 2006 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2006 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-
-/* This file contains portable character manipulation functions for SDL */
-
-#ifndef _SDL_CTYPE_H_
-#define _SDL_CTYPE_H_
-
-#include "SDL_config.h"
-
-#ifdef HAVE_CTYPE_H
-#include <ctype.h>
-#else
-#define isdigit(X) (((X) >= '0') && ((X) <= '9'))
-#define isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n'))
-#define toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X))
-#define tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X))
-#endif
-
-#endif /* _SDL_CTYPE_H_ */
--- a/include/SDL_endian.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_endian.h Thu Feb 09 09:07:13 2006 +0000
@@ -38,6 +38,7 @@
*/
#include "SDL_types.h"
+//#warning FIXME: move rwops into rwops and swapping into byteorder.h
#include "SDL_rwops.h"
#include "SDL_byteorder.h"
--- a/include/SDL_getenv.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_getenv.h Thu Feb 09 09:07:13 2006 +0000
@@ -20,4 +20,4 @@
slouken@libsdl.org
*/
-#include "SDL_stdlib.h"
+#include "SDL_stdinc.h"
--- a/include/SDL_stdlib.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_stdlib.h Thu Feb 09 09:07:13 2006 +0000
@@ -20,103 +20,4 @@
slouken@libsdl.org
*/
-#ifndef _SDL_stdlib_h
-#define _SDL_stdlib_h
-
-#include "SDL_config.h"
-
-/* AIX requires this to be the first thing in the file. */
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif
-# endif
-#endif
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-
-#include "SDL_types.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef HAVE_MALLOC
-#define SDL_malloc malloc
-#else
-extern DECLSPEC void * SDLCALL SDL_malloc(size_t size);
-#endif
-
-#ifdef HAVE_CALLOC
-#define SDL_calloc calloc
-#else
-extern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size);
-#endif
-
-#ifdef HAVE_REALLOC
-#define SDL_realloc realloc
-#else
-extern DECLSPEC void * SDLCALL SDL_realloc(void *mem, size_t size);
-#endif
-
-#ifdef HAVE_FREE
-#define SDL_free free
-#else
-extern DECLSPEC void SDLCALL SDL_free(void *mem);
-#endif
-
-#ifdef HAVE_ALLOCA
-#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*count)
-#define SDL_stack_free(data)
-#else
-#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*count)
-#define SDL_stack_free(data) SDL_free(data)
-#endif
-
-#ifdef HAVE_GETENV
-#define SDL_getenv getenv
-#else
-extern DECLSPEC char * SDLCALL SDL_getenv(const char *name);
-#endif
-
-#ifdef HAVE_PUTENV
-#define SDL_putenv putenv
-#else
-extern DECLSPEC int SDLCALL SDL_putenv(const char *variable);
-#endif
-
-#ifdef HAVE_QSORT
-#define SDL_qsort qsort
-#else
-extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size,
- int (*compare)(const void *, const void *));
-#endif
-
-#ifdef HAVE_ABS
-#define SDL_abs abs
-#else
-#define SDL_abs(X) ((X) < 0 ? -(X) : (X))
-#endif
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* _SDL_stdlib_h */
+#include "SDL_stdinc.h"
--- a/include/SDL_string.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_string.h Thu Feb 09 09:07:13 2006 +0000
@@ -20,343 +20,4 @@
slouken@libsdl.org
*/
-/* This file contains portable string manipulation functions for SDL */
-
-#ifndef _SDL_string_h
-#define _SDL_string_h
-
-#include "SDL_config.h"
-
-#ifdef HAVE_STDIO_H
-#include <stdio.h> /* For snprintf() and friends */
-#endif
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include "SDL_types.h"
-#include "SDL_stdarg.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef HAVE_MEMSET
-#define SDL_memset memset
-#else
-extern DECLSPEC void * SDLCALL SDL_memset(void *dst, int c, size_t len);
-#endif
-
-#if defined(__GNUC__) && defined(i386)
-#define SDL_memset4(dst, val, len) \
-do { \
- int u0, u1, u2; \
- __asm__ __volatile__ ( \
- "cld\n\t" \
- "rep ; stosl\n\t" \
- : "=&D" (u0), "=&a" (u1), "=&c" (u2) \
- : "0" (dst), "1" (val), "2" ((Uint32)(len)) \
- : "memory" ); \
-} while(0)
-#endif
-#ifndef SDL_memset4
-#define SDL_memset4(dst, val, len) \
-do { \
- unsigned _count = (len); \
- unsigned _n = (_count + 3) / 4; \
- Uint32 *_p = (Uint32 *)(dst); \
- Uint32 _val = (val); \
- switch (_count % 4) { \
- case 0: do { *_p++ = _val; \
- case 3: *_p++ = _val; \
- case 2: *_p++ = _val; \
- case 1: *_p++ = _val; \
- } while ( --_n ); \
- } \
-} while(0)
-#endif
-
-#if defined(__GNUC__) && defined(i386)
-#define SDL_memcpy(dst, src, len) \
-do { \
- int u0, u1, u2; \
- __asm__ __volatile__ ( \
- "cld\n\t" \
- "rep ; movsl\n\t" \
- "testb $2,%b4\n\t" \
- "je 1f\n\t" \
- "movsw\n" \
- "1:\ttestb $1,%b4\n\t" \
- "je 2f\n\t" \
- "movsb\n" \
- "2:" \
- : "=&c" (u0), "=&D" (u1), "=&S" (u2) \
- : "0" ((unsigned)(len)/4), "q" (len), "1" (dst),"2" (src) \
- : "memory" ); \
-} while(0)
-#endif
-#ifndef SDL_memcpy
-#ifdef HAVE_MEMCPY
-#define SDL_memcpy memcpy
-#else
-extern DECLSPEC void * SDLCALL SDL_memcpy(void *dst, const void *src, size_t len);
-#endif
-#endif
-
-#if defined(__GNUC__) && defined(i386)
-#define SDL_memcpy4(dst, src, len) \
-do { \
- int ecx, edi, esi; \
- __asm__ __volatile__ ( \
- "cld\n\t" \
- "rep ; movsl" \
- : "=&c" (ecx), "=&D" (edi), "=&S" (esi) \
- : "0" ((unsigned)(len)), "1" (dst), "2" (src) \
- : "memory" ); \
-} while(0)
-#endif
-#ifndef SDL_memcpy4
-#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2)
-#endif
-
-#if defined(__GNUC__) && defined(i386)
-#define SDL_revcpy(dst, src, len) \
-do { \
- int u0, u1, u2; \
- char *dstp = (char *)(dst); \
- char *srcp = (char *)(src); \
- int n = (len); \
- if ( n >= 4 ) { \
- __asm__ __volatile__ ( \
- "std\n\t" \
- "rep ; movsl\n\t" \
- : "=&c" (u0), "=&D" (u1), "=&S" (u2) \
- : "0" (n >> 2), \
- "1" (dstp+(n-4)), "2" (srcp+(n-4)) \
- : "memory" ); \
- } \
- switch (n & 3) { \
- case 3: dstp[2] = srcp[2]; \
- case 2: dstp[1] = srcp[1]; \
- case 1: dstp[0] = srcp[0]; \
- break; \
- default: \
- break; \
- } \
-} while(0)
-#endif
-#ifndef SDL_revcpy
-extern DECLSPEC void * SDLCALL SDL_revcpy(void *dst, const void *src, size_t len);
-#endif
-
-#ifdef HAVE_MEMMOVE
-#define SDL_memmove memmove
-#else
-#define SDL_memmove(dst, src, len) \
-do { \
- if ( dst < src ) { \
- SDL_memcpy(dst, src, len); \
- } else { \
- SDL_revcpy(dst, src, len); \
- } \
-} while(0)
-#endif
-
-#ifdef HAVE_MEMCMP
-#define SDL_memcmp memcmp
-#else
-extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
-#endif
-
-#ifdef HAVE_STRLEN
-#define SDL_strlen strlen
-#else
-extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string);
-#endif
-
-#ifdef HAVE_STRCPY
-#define SDL_strcpy strcpy
-#else
-extern DECLSPEC char * SDLCALL SDL_strcpy(char *dst, const char *src);
-#endif
-
-#ifdef HAVE_STRNCPY
-#define SDL_strncpy strncpy
-#else
-extern DECLSPEC char * SDLCALL SDL_strncpy(char *dst, const char *src, size_t maxlen);
-#endif
-
-#ifdef HAVE_STRCAT
-#define SDL_strcat strcat
-#else
-#define SDL_strcat(dst, src) (SDL_strcpy(dst+SDL_strlen(dst), src), dst)
-#endif
-
-#ifdef HAVE_STRNCAT
-#define SDL_strncat strncat
-#else
-#define SDL_strncat(dst, src, n) (SDL_strncpy(dst+SDL_strlen(dst), src, n), dst)
-#endif
-
-#ifdef HAVE_STRDUP
-#define SDL_strdup strdup
-#else
-extern DECLSPEC char * SDLCALL SDL_strdup(const char *string);
-#endif
-
-#ifdef HAVE__STRREV
-#define SDL_strrev _strrev
-#else
-extern DECLSPEC char * SDLCALL SDL_strrev(char *string);
-#endif
-
-#ifdef HAVE__STRUPR
-#define SDL_strupr _strupr
-#else
-extern DECLSPEC char * SDLCALL SDL_strupr(char *string);
-#endif
-
-#ifdef HAVE__STRLWR
-#define SDL_strlwr _strlwr
-#else
-extern DECLSPEC char * SDLCALL SDL_strlwr(char *string);
-#endif
-
-#ifdef HAVE_STRCHR
-#define SDL_strchr strchr
-#else
-extern DECLSPEC char * SDLCALL SDL_strchr(const char *string, int c);
-#endif
-
-#ifdef HAVE_STRRCHR
-#define SDL_strrchr strrchr
-#else
-extern DECLSPEC char * SDLCALL SDL_strrchr(const char *string, int c);
-#endif
-
-#ifdef HAVE_STRSTR
-#define SDL_strstr strstr
-#else
-extern DECLSPEC char * SDLCALL SDL_strstr(const char *haystack, const char *needle);
-#endif
-
-#ifdef HAVE_ITOA
-#define SDL_itoa itoa
-#else
-#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix)
-#endif
-
-#ifdef HAVE__LTOA
-#define SDL_ltoa _ltoa
-#else
-extern DECLSPEC char * SDLCALL SDL_ltoa(long value, char *string, int radix);
-#endif
-
-#ifdef HAVE__UITOA
-#define SDL_uitoa _uitoa
-#else
-#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix)
-#endif
-
-#ifdef HAVE__ULTOA
-#define SDL_ultoa _ultoa
-#else
-extern DECLSPEC char * SDLCALL SDL_ultoa(unsigned long value, char *string, int radix);
-#endif
-
-#ifdef HAVE_STRTOL
-#define SDL_strtol strtol
-#else
-extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, int base);
-#endif
-
-#ifdef SDL_HAS_64BIT_TYPE
-
-#ifdef HAVE__I64TOA
-#define SDL_lltoa _i64toa
-#else
-extern DECLSPEC char* SDLCALL SDL_lltoa(Sint64 value, char *string, int radix);
-#endif
-
-#ifdef HAVE__UI64TOA
-#define SDL_ulltoa _ui64toa
-#else
-extern DECLSPEC char* SDLCALL SDL_ulltoa(Uint64 value, char *string, int radix);
-#endif
-
-#ifdef HAVE_STRTOLL
-#define SDL_strtoll strtoll
-#else
-extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int base);
-#endif
-
-#endif /* SDL_HAS_64BIT_TYPE */
-
-#ifdef HAVE_STRTOD
-#define SDL_strtod strtod
-#else
-extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp);
-#endif
-
-#ifdef HAVE_ATOI
-#define SDL_atoi atoi
-#else
-#define SDL_atoi(X) SDL_strtol(X, NULL, 0)
-#endif
-
-#ifdef HAVE_ATOF
-#define SDL_atof atof
-#else
-#define SDL_atof(X) SDL_strtod(X, NULL)
-#endif
-
-#ifdef HAVE_STRCMP
-#define SDL_strcmp strcmp
-#else
-extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
-#endif
-
-#ifdef HAVE_STRNCMP
-#define SDL_strncmp strncmp
-#else
-extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
-#endif
-
-#if defined(HAVE_STRICMP) && !defined(HAVE_STRCASECMP)
-#define strcasecmp stricmp
-#define HAVE_STRCASECMP
-#endif
-#ifdef HAVE_STRCASECMP
-#define SDL_strcasecmp strcasecmp
-#else
-extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
-#endif
-
-#ifdef HAVE_SSCANF
-#define SDL_sscanf sscanf
-#else
-extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...);
-#endif
-
-#ifdef HAVE_SNPRINTF
-#define SDL_snprintf snprintf
-#else
-extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...);
-#endif
-
-#ifdef HAVE_VSNPRINTF
-#define SDL_vsnprintf vsnprintf
-#else
-extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap);
-#endif
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* _SDL_string_h */
+#include "SDL_stdinc.h"
--- a/include/SDL_types.h Thu Feb 09 05:46:55 2006 +0000
+++ b/include/SDL_types.h Thu Feb 09 09:07:13 2006 +0000
@@ -20,105 +20,4 @@
slouken@libsdl.org
*/
-/* General data types used by the SDL library */
-
-#ifndef _SDL_types_h
-#define _SDL_types_h
-
-#include <sys/types.h>
-#ifdef _MSC_VER
-#ifndef _SIZE_T_DEFINED
-#ifdef _WIN64
-typedef unsigned __int64 size_t;
-#else
-typedef _W64 unsigned int size_t;
-#endif
-#define _SIZE_T_DEFINED
-#endif
-typedef size_t uintptr_t;
-#endif
-
-/* The number of elements in an array */
-#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
-#define SDL_TABLESIZE(table) SDL_arraysize(table)
-
-/* Basic data types */
-typedef enum SDL_bool {
- SDL_FALSE = 0,
- SDL_TRUE = 1
-} SDL_bool;
-
-#ifdef H_MMBASIC /* mmbasic.h (Tru64 MME) */
-/* Some of the basic types are already defined in mmbasic.h */
-typedef signed char Sint8;
-typedef signed short Sint16;
-typedef signed int Sint32;
-#else
-typedef unsigned char Uint8;
-typedef signed char Sint8;
-typedef unsigned short Uint16;
-typedef signed short Sint16;
-typedef unsigned int Uint32;
-typedef signed int Sint32;
-#endif
-
-/* Figure out how to support 64-bit datatypes */
-#if !defined(__STRICT_ANSI__)
-#ifdef __osf__ /* Tru64 */
-#define SDL_HAS_64BIT_TYPE long
-#elif defined(__GNUC__) || defined(__MWERKS__) || defined(__SUNPRO_C) || defined(__DECC) || defined(__WATCOMC__)
-#define SDL_HAS_64BIT_TYPE long long
-#elif defined(_MSC_VER) /* VC++ */
-#define SDL_HAS_64BIT_TYPE __int64
-#endif
-#endif /* !__STRICT_ANSI__ */
-
-/* The 64-bit type isn't available on EPOC/Symbian OS */
-#ifdef __SYMBIAN32__
-#undef SDL_HAS_64BIT_TYPE
-#endif
-
-/* The 64-bit datatype isn't supported on all platforms */
-#ifdef SDL_HAS_64BIT_TYPE
-#ifndef H_MMBASIC
-typedef unsigned SDL_HAS_64BIT_TYPE Uint64;
-#endif
-typedef SDL_HAS_64BIT_TYPE Sint64;
-#else
-/* This is really just a hack to prevent the compiler from complaining */
-typedef struct {
- Uint32 hi;
- Uint32 lo;
-} Uint64, Sint64;
-#endif
-
-/* Make sure the types really have the right sizes */
-#define SDL_COMPILE_TIME_ASSERT(name, x) \
- typedef int SDL_dummy_ ## name[(x) * 2 - 1]
-
-SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
-SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
-SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
-SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
-SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
-SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
-SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
-SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
-
-/* Check to make sure enums are the size of ints, for structure packing.
- For both Watcom C/C++ and Borland C/C++ the compiler option that makes
- enums having the size of an int must be enabled.
- This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
-*/
-/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */
-#ifdef __MWERKS__
-#pragma enumsalwaysint on
-#endif
-
-typedef enum {
- DUMMY_ENUM_VALUE
-} SDL_DUMMY_ENUM;
-
-SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
-
-#endif
+#include "SDL_stdinc.h"