|
|
1.1 root 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: [email protected]
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: #if defined(WIN32) && !defined(__GNUC__)
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: defined(__DECC)
107: #ifndef __inline__
108: #define __inline__ __inline
109: #endif
110: #define SDL_INLINE_OKAY
111: #else
112: #if !defined(__MRC__) && !defined(_SGI_SOURCE)
113: #define __inline__ inline
114: #define SDL_INLINE_OKAY
115: #endif /* Not a funky compiler */
116: #endif /* Visual C++ */
117: #endif /* GNU C */
118: #endif /* SDL_INLINE_OKAY */
119:
120: /* If inlining isn't supported, remove "__inline__", turning static
121: inlined functions into static functions (resulting in code bloat
122: in all files which include the offending header files)
123: */
124: #ifndef SDL_INLINE_OKAY
125: #define __inline__
126: #endif
127:
128: /* Apparently this is needed by several Windows compilers */
129: #if !defined(__MACH__)
130: #ifndef NULL
131: #ifdef __cplusplus
132: #define NULL 0
133: #else
134: #define NULL ((void *)0)
135: #endif
136: #endif /* NULL */
137: #endif /* ! MacOS X - breaks precompiled headers */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.