home *** CD-ROM | disk | FTP | other *** search
/ RISCWORLD 7 / RISCWORLD_VOL7.iso / Software / Issue6 / SDL.ZIP / !SDL / include / SDL / h / begin_code next >
Encoding:
Text File  |  2006-09-20  |  4.1 KB  |  151 lines

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997-2004 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@libsdl.org
  21. */
  22.  
  23. /* This file sets things up for C dynamic library function definitions,
  24.    static inlined functions, and structures aligned at 4-byte alignment.
  25.    If you don't like ugly C preprocessor code, don't look at this file. :)
  26. */
  27.  
  28. /* This shouldn't be nested -- included it around code only. */
  29. #ifdef _begin_code_h
  30. #error Nested inclusion of begin_code.h
  31. #endif
  32. #define _begin_code_h
  33.  
  34. /* Some compilers use a special export keyword */
  35. #ifndef DECLSPEC
  36. # if defined(__BEOS__)
  37. #  if defined(__GNUC__)
  38. #   define DECLSPEC    __declspec(dllexport)
  39. #  else
  40. #   define DECLSPEC    __declspec(export)
  41. #  endif
  42. # elif defined(__WIN32__)
  43. #  ifdef __BORLANDC__
  44. #   ifdef BUILD_SDL
  45. #    define DECLSPEC 
  46. #   else
  47. #    define DECLSPEC    __declspec(dllimport)
  48. #   endif
  49. #  else
  50. #   define DECLSPEC    __declspec(dllexport)
  51. #  endif
  52. # elif defined(__OS2__)
  53. #  ifdef __WATCOMC__
  54. #   ifdef BUILD_SDL
  55. #    define DECLSPEC    __declspec(dllexport)
  56. #   else
  57. #    define DECLSPEC
  58. #   endif
  59. #  else
  60. #   define DECLSPEC
  61. #  endif
  62. # else
  63. #  if defined(__GNUC__) && __GNUC__ >= 4
  64. #   define DECLSPEC    __attribute__ ((visibility("default")))
  65. #  else
  66. #   define DECLSPEC
  67. #  endif
  68. # endif
  69. #endif
  70.  
  71. /* By default SDL uses the C calling convention */
  72. #ifndef SDLCALL
  73. #if defined(__WIN32__) && !defined(__GNUC__)
  74. #define SDLCALL __cdecl
  75. #else
  76. #ifdef __OS2__
  77. /* But on OS/2, we use the _System calling convention */
  78. /* to be compatible with every compiler */
  79. #define SDLCALL _System
  80. #else
  81. #define SDLCALL
  82. #endif
  83. #endif
  84. #endif /* SDLCALL */
  85.  
  86. /* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
  87. #ifdef __SYMBIAN32__ 
  88. #undef DECLSPEC
  89. #define DECLSPEC
  90. #endif /* __SYMBIAN32__ */
  91.  
  92. /* Force structure packing at 4 byte alignment.
  93.    This is necessary if the header is included in code which has structure
  94.    packing set to an alternate value, say for loading structures from disk.
  95.    The packing is reset to the previous value in close_code.h
  96.  */
  97. #if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
  98. #ifdef _MSC_VER
  99. #pragma warning(disable: 4103)
  100. #endif
  101. #ifdef __BORLANDC__
  102. #pragma nopackwarning
  103. #endif
  104. #pragma pack(push,4)
  105. #elif (defined(__MWERKS__) && defined(__MACOS__))
  106. #pragma options align=mac68k4byte
  107. #pragma enumsalwaysint on
  108. #endif /* Compiler needs structure packing set */
  109.  
  110. /* Set up compiler-specific options for inlining functions */
  111. #ifndef SDL_INLINE_OKAY
  112. #ifdef __GNUC__
  113. #define SDL_INLINE_OKAY
  114. #else
  115. /* Add any special compiler-specific cases here */
  116. #if defined(_MSC_VER) || defined(__BORLANDC__) || \
  117.     defined(__DMC__) || defined(__SC__) || \
  118.     defined(__WATCOMC__) || defined(__LCC__) || \
  119.     defined(__DECC)
  120. #ifndef __inline__
  121. #define __inline__    __inline
  122. #endif
  123. #define SDL_INLINE_OKAY
  124. #else
  125. #if !defined(__MRC__) && !defined(_SGI_SOURCE)
  126. #define __inline__ inline
  127. #define SDL_INLINE_OKAY
  128. #endif /* Not a funky compiler */
  129. #endif /* Visual C++ */
  130. #endif /* GNU C */
  131. #endif /* SDL_INLINE_OKAY */
  132.  
  133. /* If inlining isn't supported, remove "__inline__", turning static
  134.    inlined functions into static functions (resulting in code bloat
  135.    in all files which include the offending header files)
  136. */
  137. #ifndef SDL_INLINE_OKAY
  138. #define __inline__
  139. #endif
  140.  
  141. /* Apparently this is needed by several Windows compilers */
  142. #if !defined(__MACH__)
  143. #ifndef NULL
  144. #ifdef __cplusplus
  145. #define NULL 0
  146. #else
  147. #define NULL ((void *)0)
  148. #endif
  149. #endif /* NULL */
  150. #endif /* ! Mac OS X - breaks precompiled headers */
  151.