Annotation of sbbs/include/sdl/sdl_stdinc.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.