include/SDL_types.h

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. SDL_TABLESIZE
  2. SDL_COMPILE_TIME_ASSERT

   1 /*
   2     SDL - Simple DirectMedia Layer
   3     Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
   4 
   5     This library is free software; you can redistribute it and/or
   6     modify it under the terms of the GNU Library General Public
   7     License as published by the Free Software Foundation; either
   8     version 2 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     Library General Public License for more details.
  14 
  15     You should have received a copy of the GNU Library General Public
  16     License along with this library; if not, write to the Free
  17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18 
  19     Sam Lantinga
  20     slouken@devolution.com
  21 */
  22 
  23 #ifdef SAVE_RCSID
  24 static char rcsid =
  25  "@(#) $Id: SDL_types.h,v 1.4.2.7 2001/02/28 12:06:11 hercules Exp $";
  26 #endif
  27 
  28 /* General data types used by the SDL library */
  29 
  30 #ifndef _SDL_types_h
  31 #define _SDL_types_h
  32 
  33 /* The number of elements in a table */
  34 #define SDL_TABLESIZE(table)    (sizeof(table)/sizeof(table[0]))
     /* [<][>][^][v][top][bottom][index][help] */
  35 
  36 /* Basic data types */
  37 typedef enum {
  38         SDL_FALSE = 0,
  39         SDL_TRUE  = 1
  40 } SDL_bool;
  41 typedef unsigned char   Uint8;
  42 typedef signed char     Sint8;
  43 typedef unsigned short  Uint16;
  44 typedef signed short    Sint16;
  45 typedef unsigned int    Uint32;
  46 typedef signed int      Sint32;
  47 
  48 /* Figure out how to support 64-bit datatypes */
  49 #if !defined(__STRICT_ANSI__)
  50 #if defined(__GNUC__) || defined(__MWERKS__) /* MJS */
  51 #define SDL_HAS_64BIT_TYPE      long long
  52 #elif defined(_MSC_VER) /* VC++ */
  53 #define SDL_HAS_64BIT_TYPE      __int64
  54 #endif
  55 #endif /* !__STRICT_ANSI__ */
  56 
  57 /* The 64-bit datatype isn't supported on all platforms */
  58 #ifdef SDL_HAS_64BIT_TYPE
  59 typedef unsigned SDL_HAS_64BIT_TYPE Uint64;
  60 typedef SDL_HAS_64BIT_TYPE Sint64;
  61 #else
  62 /* This is really just a hack to prevent the compiler from complaining */
  63 typedef struct {
  64         Uint32 hi;
  65         Uint32 lo;
  66 } Uint64, Sint64;
  67 #endif
  68 
  69 /* Make sure the types really have the right sizes */
  70 #define SDL_COMPILE_TIME_ASSERT(name, x)               \
     /* [<][>][^][v][top][bottom][index][help] */
  71        typedef int SDL_dummy_ ## name[(x) * 2 - 1]
  72 
  73 SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
  74 SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
  75 SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
  76 SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
  77 SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
  78 SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
  79 SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
  80 SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
  81 
  82 #undef SDL_COMPILE_TIME_ASSERT
  83 
  84 /* General keyboard/mouse state definitions */
  85 enum { SDL_PRESSED = 0x01, SDL_RELEASED = 0x00 };
  86 
  87 #endif

/* [<][>][^][v][top][bottom][index][help] */