Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  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. /* Make sure the correct platform symbols are defined */
  35. #if !defined(WIN32) && defined(_WIN32)
  36. #define WIN32
  37. #endif /* Windows */
  38.  
  39. /* Some compilers use a special export keyword */
  40. #ifndef DECLSPEC
  41. # ifdef __BEOS__
  42. #  if defined(__GNUC__)
  43. #   define DECLSPEC     __declspec(dllexport)
  44. #  else
  45. #   define DECLSPEC     __declspec(export)
  46. #  endif
  47. # else
  48. # ifdef WIN32
  49. #  ifdef __BORLANDC__
  50. #   ifdef BUILD_SDL
  51. #    define DECLSPEC
  52. #   else
  53. #    define DECLSPEC __declspec(dllimport)
  54. #   endif
  55. #  else
  56. #   define DECLSPEC     __declspec(dllexport)
  57. #  endif
  58. # else
  59. #  define DECLSPEC
  60. # endif
  61. # endif
  62. #endif
  63.  
  64. /* By default SDL uses the C calling convention */
  65. #ifndef SDLCALL
  66. #ifdef WIN32
  67. #define SDLCALL __cdecl
  68. #else
  69. #define SDLCALL
  70. #endif
  71. #endif /* SDLCALL */
  72.  
  73. /* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
  74. #ifdef __SYMBIAN32__
  75. #undef DECLSPEC
  76. #define DECLSPEC
  77. #endif /* __SYMBIAN32__ */
  78.  
  79. /* Force structure packing at 4 byte alignment.
  80.    This is necessary if the header is included in code which has structure
  81.    packing set to an alternate value, say for loading structures from disk.
  82.    The packing is reset to the previous value in close_code.h
  83.  */
  84. #if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
  85. #ifdef _MSC_VER
  86. #pragma warning(disable: 4103)
  87. #endif
  88. #ifdef __BORLANDC__
  89. #pragma nopackwarning
  90. #endif
  91. #pragma pack(push,4)
  92. #elif (defined(__MWERKS__) && defined(macintosh))
  93. #pragma options align=mac68k4byte
  94. #pragma enumsalwaysint on
  95. #endif /* Compiler needs structure packing set */
  96.  
  97. /* Set up compiler-specific options for inlining functions */
  98. #ifndef SDL_INLINE_OKAY
  99. #ifdef __GNUC__
  100. #define SDL_INLINE_OKAY
  101. #else
  102. /* Add any special compiler-specific cases here */
  103. #if defined(_MSC_VER) || defined(__BORLANDC__) || \
  104.     defined(__DMC__) || defined(__SC__) || \
  105.     defined(__WATCOMC__) || defined(__LCC__)
  106. #ifndef __inline__
  107. #define __inline__      __inline
  108. #endif
  109. #define SDL_INLINE_OKAY
  110. #else
  111. #if !defined(__MRC__) && !defined(_SGI_SOURCE)
  112. #define __inline__ inline
  113. #define SDL_INLINE_OKAY
  114. #endif /* Not a funky compiler */
  115. #endif /* Visual C++ */
  116. #endif /* GNU C */
  117. #endif /* SDL_INLINE_OKAY */
  118.  
  119. /* If inlining isn't supported, remove "__inline__", turning static
  120.    inlined functions into static functions (resulting in code bloat
  121.    in all files which include the offending header files)
  122. */
  123. #ifndef SDL_INLINE_OKAY
  124. #define __inline__
  125. #endif
  126.  
  127. /* Apparently this is needed by several Windows compilers */
  128. #if !defined(__MACH__)
  129. #ifndef NULL
  130. #ifdef __cplusplus
  131. #define NULL 0
  132. #else
  133. #define NULL ((void *)0)
  134. #endif
  135. #endif /* NULL */
  136. #endif /* ! MacOS X - breaks precompiled headers */
  137.