⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdl_stdinc.h

📁 ffmpeg build for armv4i / windowsCE
💻 H
📖 第 1 页 / 共 2 页
字号:
/*    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 is a general header that includes C language support */#ifndef _SDL_stdinc_h#define _SDL_stdinc_h#include "SDL_config.h"#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_STDIO_H#include <stdio.h>#endif#if defined(STDC_HEADERS)# include <stdlib.h># include <stddef.h># include <stdarg.h>#else# if defined(HAVE_STDLIB_H)#  include <stdlib.h># elif defined(HAVE_MALLOC_H)#  include <malloc.h># endif# if defined(HAVE_STDDEF_H)#  include <stddef.h># endif# if defined(HAVE_STDARG_H)#  include <stdarg.h># endif#endif#ifdef HAVE_STRING_H# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)#  include <memory.h># endif# include <string.h>#endif#ifdef HAVE_STRINGS_H# include <strings.h>#endif#if defined(HAVE_INTTYPES_H)# include <inttypes.h>#elif defined(HAVE_STDINT_H)# include <stdint.h>#endif#ifdef HAVE_CTYPE_H# include <ctype.h>#endif#ifdef HAVE_ICONV_H# include <iconv.h>#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;typedef int8_t		Sint8;typedef uint8_t		Uint8;typedef int16_t		Sint16;typedef uint16_t	Uint16;typedef int32_t		Sint32;typedef uint32_t	Uint32;#ifdef SDL_HAS_64BIT_TYPEtypedef int64_t		Sint64;#ifndef SYMBIAN32_GCCEtypedef uint64_t	Uint64;#endif#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#endiftypedef enum {	DUMMY_ENUM_VALUE} SDL_DUMMY_ENUM;#ifndef __NDS__SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));#endif#include "begin_code.h"/* Set up for C function definitions, even when using C++ */#ifdef __cplusplusextern "C" {#endif#ifdef HAVE_MALLOC#define SDL_malloc	malloc#elseextern DECLSPEC void * SDLCALL SDL_malloc(size_t size);#endif#ifdef HAVE_CALLOC#define SDL_calloc	calloc#elseextern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size);#endif#ifdef HAVE_REALLOC#define SDL_realloc	realloc#elseextern DECLSPEC void * SDLCALL SDL_realloc(void *mem, size_t size);#endif#ifdef HAVE_FREE#define SDL_free	free#elseextern DECLSPEC void SDLCALL SDL_free(void *mem);#endif#if defined(HAVE_ALLOCA) && !defined(alloca)# if defined(HAVE_ALLOCA_H)#  include <alloca.h># elif defined(__GNUC__)#  define alloca __builtin_alloca# elif defined(_MSC_VER)#  include <malloc.h>#  define alloca _alloca# elif defined(__WATCOMC__)#  include <malloc.h># elif defined(__BORLANDC__)#  include <malloc.h># elif defined(__DMC__)#  include <stdlib.h># elif defined(__AIX__)  #pragma alloca# elif defined(__MRC__)   void *alloca (unsigned);# else   char *alloca ();# endif#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#elseextern DECLSPEC char * SDLCALL SDL_getenv(const char *name);#endif#ifdef HAVE_PUTENV#define SDL_putenv	putenv#elseextern DECLSPEC int SDLCALL SDL_putenv(const char *variable);#endif#ifdef HAVE_QSORT#define SDL_qsort	qsort#elseextern 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#define SDL_min(x, y)	(((x) < (y)) ? (x) : (y))#define SDL_max(x, y)	(((x) > (y)) ? (x) : (y))#ifdef HAVE_CTYPE_H#define SDL_isdigit(X)  isdigit(X)#define SDL_isspace(X)  isspace(X)#define SDL_toupper(X)  toupper(X)#define SDL_tolower(X)  tolower(X)#else#define SDL_isdigit(X)  (((X) >= '0') && ((X) <= '9'))#define SDL_isspace(X)  (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n'))#define SDL_toupper(X)  (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X))#define SDL_tolower(X)  (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X))#endif#ifdef HAVE_MEMSET#define SDL_memset      memset#elseextern 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/* We can count on memcpy existing on Mac OS X and being well-tuned. */#if defined(__MACH__) && defined(__APPLE__)#define SDL_memcpy(dst, src, len) memcpy(dst, src, len)#elif 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#elif defined(HAVE_BCOPY)#define SDL_memcpy(d, s, n)	bcopy((s), (d), (n))#else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -