Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
135 lines (123 loc) · 3.87 KB

begin_code.h

File metadata and controls

135 lines (123 loc) · 3.87 KB
 
Apr 26, 2001
Apr 26, 2001
1
/*
Apr 8, 2011
Apr 8, 2011
2
3
Simple DirectMedia Layer
Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
Apr 26, 2001
Apr 26, 2001
4
Apr 8, 2011
Apr 8, 2011
5
6
7
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Apr 26, 2001
Apr 26, 2001
8
Apr 8, 2011
Apr 8, 2011
9
10
11
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
Apr 26, 2001
Apr 26, 2001
12
Apr 8, 2011
Apr 8, 2011
13
14
15
16
17
18
19
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Apr 26, 2001
Apr 26, 2001
20
21
*/
Oct 19, 2009
Oct 19, 2009
22
23
24
25
26
27
28
/**
* \file begin_code.h
*
* This file sets things up for C dynamic library function definitions,
* static inlined functions, and structures aligned at 4-byte alignment.
* If you don't like ugly C preprocessor code, don't look at this file. :)
*/
Apr 26, 2001
Apr 26, 2001
29
30
31
32
33
34
35
36
37
/* This shouldn't be nested -- included it around code only. */
#ifdef _begin_code_h
#error Nested inclusion of begin_code.h
#endif
#define _begin_code_h
/* Some compilers use a special export keyword */
#ifndef DECLSPEC
Sep 21, 2009
Sep 21, 2009
38
# if defined(__BEOS__) || defined(__HAIKU__)
Apr 26, 2001
Apr 26, 2001
39
40
41
42
43
# if defined(__GNUC__)
# define DECLSPEC __declspec(dllexport)
# else
# define DECLSPEC __declspec(export)
# endif
Jan 24, 2011
Jan 24, 2011
44
# elif defined(__WIN32__)
Feb 13, 2002
Feb 13, 2002
45
46
# ifdef __BORLANDC__
# ifdef BUILD_SDL
Jul 10, 2006
Jul 10, 2006
47
# define DECLSPEC
Feb 13, 2002
Feb 13, 2002
48
# else
Mar 22, 2006
Mar 22, 2006
49
# define DECLSPEC __declspec(dllimport)
Feb 13, 2002
Feb 13, 2002
50
51
52
53
# endif
# else
# define DECLSPEC __declspec(dllexport)
# endif
Nov 23, 2005
Nov 23, 2005
54
# else
Mar 23, 2006
Mar 23, 2006
55
# if defined(__GNUC__) && __GNUC__ >= 4
Mar 22, 2006
Mar 22, 2006
56
57
58
59
# define DECLSPEC __attribute__ ((visibility("default")))
# else
# define DECLSPEC
# endif
Nov 23, 2005
Nov 23, 2005
60
# endif
Apr 26, 2001
Apr 26, 2001
61
62
#endif
Apr 11, 2002
Apr 11, 2002
63
64
/* By default SDL uses the C calling convention */
#ifndef SDLCALL
Jan 24, 2011
Jan 24, 2011
65
#if defined(__WIN32__) && !defined(__GNUC__)
Jan 7, 2010
Jan 7, 2010
66
67
68
69
#define SDLCALL __cdecl
#else
#define SDLCALL
#endif
Apr 11, 2002
Apr 11, 2002
70
71
#endif /* SDLCALL */
Sep 11, 2001
Sep 11, 2001
72
/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
Jul 10, 2006
Jul 10, 2006
73
#ifdef __SYMBIAN32__
Sep 11, 2001
Sep 11, 2001
74
75
#undef DECLSPEC
#define DECLSPEC
Sep 23, 2001
Sep 23, 2001
76
#endif /* __SYMBIAN32__ */
Sep 11, 2001
Sep 11, 2001
77
Apr 26, 2001
Apr 26, 2001
78
79
80
81
82
/* Force structure packing at 4 byte alignment.
This is necessary if the header is included in code which has structure
packing set to an alternate value, say for loading structures from disk.
The packing is reset to the previous value in close_code.h
*/
Feb 28, 2002
Feb 28, 2002
83
#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
Apr 26, 2001
Apr 26, 2001
84
85
86
87
88
89
#ifdef _MSC_VER
#pragma warning(disable: 4103)
#endif
#ifdef __BORLANDC__
#pragma nopackwarning
#endif
Sep 23, 2001
Sep 23, 2001
90
#pragma pack(push,4)
Apr 26, 2001
Apr 26, 2001
91
92
93
94
95
96
97
98
#endif /* Compiler needs structure packing set */
/* Set up compiler-specific options for inlining functions */
#ifndef SDL_INLINE_OKAY
#ifdef __GNUC__
#define SDL_INLINE_OKAY
#else
/* Add any special compiler-specific cases here */
Feb 28, 2002
Feb 28, 2002
99
100
#if defined(_MSC_VER) || defined(__BORLANDC__) || \
defined(__DMC__) || defined(__SC__) || \
Jan 2, 2005
Jan 2, 2005
101
102
defined(__WATCOMC__) || defined(__LCC__) || \
defined(__DECC)
Feb 28, 2002
Feb 28, 2002
103
#ifndef __inline__
Jul 2, 2001
Jul 2, 2001
104
#define __inline__ __inline
Feb 28, 2002
Feb 28, 2002
105
#endif
Jul 2, 2001
Jul 2, 2001
106
107
108
#define SDL_INLINE_OKAY
#else
#if !defined(__MRC__) && !defined(_SGI_SOURCE)
Jun 15, 2007
Jun 15, 2007
109
#ifndef __inline__
Apr 26, 2001
Apr 26, 2001
110
#define __inline__ inline
Jun 15, 2007
Jun 15, 2007
111
#endif
Apr 26, 2001
Apr 26, 2001
112
113
#define SDL_INLINE_OKAY
#endif /* Not a funky compiler */
Jul 2, 2001
Jul 2, 2001
114
#endif /* Visual C++ */
Apr 26, 2001
Apr 26, 2001
115
116
117
118
119
120
121
122
123
124
125
#endif /* GNU C */
#endif /* SDL_INLINE_OKAY */
/* If inlining isn't supported, remove "__inline__", turning static
inlined functions into static functions (resulting in code bloat
in all files which include the offending header files)
*/
#ifndef SDL_INLINE_OKAY
#define __inline__
#endif
Feb 28, 2002
Feb 28, 2002
126
/* Apparently this is needed by several Windows compilers */
Apr 13, 2002
Apr 13, 2002
127
#if !defined(__MACH__)
Feb 28, 2002
Feb 28, 2002
128
129
130
131
132
133
134
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif /* NULL */
Apr 13, 2006
Apr 13, 2006
135
#endif /* ! Mac OS X - breaks precompiled headers */