include/begin_code.h
author Sam Lantinga <slouken@libsdl.org>
Thu, 13 Apr 2006 13:08:26 +0000
changeset 1621 f12379c41042
parent 1595 4aa7df2476e7
child 1662 782fd950bd46
child 3965 19d708301fab
permissions -rw-r--r--
Fixes bug #195:
The proper name of Apple's operating system is "Mac OS X" not "MacOS X", as can
bee seen in many places, for example http://www.apple.com/macosx/). This
contrasts the naming of the old operating system, which was called "MacOS" and
today is often refered to as "MacOS Classic".

The attached patches fixes the misuse of the name "MacOS X" in both the SDL12
and sdlweb CVS modules.
slouken@0
     1
/*
slouken@0
     2
    SDL - Simple DirectMedia Layer
slouken@769
     3
    Copyright (C) 1997-2004 Sam Lantinga
slouken@0
     4
slouken@0
     5
    This library is free software; you can redistribute it and/or
slouken@0
     6
    modify it under the terms of the GNU Library General Public
slouken@0
     7
    License as published by the Free Software Foundation; either
slouken@0
     8
    version 2 of the License, or (at your option) any later version.
slouken@0
     9
slouken@0
    10
    This library is distributed in the hope that it will be useful,
slouken@0
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
slouken@0
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
slouken@0
    13
    Library General Public License for more details.
slouken@0
    14
slouken@0
    15
    You should have received a copy of the GNU Library General Public
slouken@0
    16
    License along with this library; if not, write to the Free
slouken@0
    17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
slouken@0
    18
slouken@0
    19
    Sam Lantinga
slouken@251
    20
    slouken@libsdl.org
slouken@0
    21
*/
slouken@0
    22
slouken@0
    23
/* This file sets things up for C dynamic library function definitions,
slouken@0
    24
   static inlined functions, and structures aligned at 4-byte alignment.
slouken@0
    25
   If you don't like ugly C preprocessor code, don't look at this file. :)
slouken@0
    26
*/
slouken@0
    27
slouken@0
    28
/* This shouldn't be nested -- included it around code only. */
slouken@0
    29
#ifdef _begin_code_h
slouken@0
    30
#error Nested inclusion of begin_code.h
slouken@0
    31
#endif
slouken@0
    32
#define _begin_code_h
slouken@0
    33
slouken@0
    34
/* Some compilers use a special export keyword */
slouken@0
    35
#ifndef DECLSPEC
slouken@1574
    36
# if defined(__BEOS__)
slouken@0
    37
#  if defined(__GNUC__)
slouken@0
    38
#   define DECLSPEC	__declspec(dllexport)
slouken@0
    39
#  else
slouken@0
    40
#   define DECLSPEC	__declspec(export)
slouken@0
    41
#  endif
slouken@1574
    42
# elif defined(__WIN32__)
slouken@274
    43
#  ifdef __BORLANDC__
slouken@274
    44
#   ifdef BUILD_SDL
slouken@636
    45
#    define DECLSPEC 
slouken@274
    46
#   else
slouken@1574
    47
#    define DECLSPEC	__declspec(dllimport)
slouken@274
    48
#   endif
slouken@274
    49
#  else
slouken@274
    50
#   define DECLSPEC	__declspec(dllexport)
slouken@274
    51
#  endif
slouken@1574
    52
# elif defined(__OS2__)
icculus@1190
    53
#  ifdef __WATCOMC__
icculus@1190
    54
#   ifdef BUILD_SDL
slouken@1574
    55
#    define DECLSPEC	__declspec(dllexport)
icculus@1190
    56
#   else
slouken@1574
    57
#    define DECLSPEC
slouken@1574
    58
#   endif
icculus@1190
    59
#  else
icculus@1190
    60
#   define DECLSPEC
icculus@1190
    61
#  endif
icculus@1190
    62
# else
slouken@1595
    63
#  if defined(__GNUC__) && __GNUC__ >= 4
slouken@1574
    64
#   define DECLSPEC	__attribute__ ((visibility("default")))
slouken@1574
    65
#  else
slouken@1574
    66
#   define DECLSPEC
slouken@1574
    67
#  endif
slouken@0
    68
# endif
slouken@0
    69
#endif
slouken@0
    70
slouken@337
    71
/* By default SDL uses the C calling convention */
slouken@337
    72
#ifndef SDLCALL
slouken@1402
    73
#if defined(__WIN32__) && !defined(__GNUC__)
slouken@337
    74
#define SDLCALL __cdecl
slouken@337
    75
#else
icculus@1190
    76
#ifdef __OS2__
icculus@1190
    77
/* But on OS/2, we use the _System calling convention */
icculus@1190
    78
/* to be compatible with every compiler */
icculus@1190
    79
#define SDLCALL _System
icculus@1190
    80
#else
slouken@337
    81
#define SDLCALL
slouken@337
    82
#endif
icculus@1190
    83
#endif
slouken@337
    84
#endif /* SDLCALL */
slouken@337
    85
slouken@173
    86
/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
slouken@173
    87
#ifdef __SYMBIAN32__ 
slouken@173
    88
#undef DECLSPEC
slouken@173
    89
#define DECLSPEC
slouken@187
    90
#endif /* __SYMBIAN32__ */
slouken@173
    91
slouken@0
    92
/* Force structure packing at 4 byte alignment.
slouken@0
    93
   This is necessary if the header is included in code which has structure
slouken@0
    94
   packing set to an alternate value, say for loading structures from disk.
slouken@0
    95
   The packing is reset to the previous value in close_code.h
slouken@0
    96
 */
slouken@288
    97
#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)
slouken@0
    98
#ifdef _MSC_VER
slouken@0
    99
#pragma warning(disable: 4103)
slouken@0
   100
#endif
slouken@0
   101
#ifdef __BORLANDC__
slouken@0
   102
#pragma nopackwarning
slouken@0
   103
#endif
slouken@195
   104
#pragma pack(push,4)
slouken@1402
   105
#elif (defined(__MWERKS__) && defined(__MACOS__))
slouken@189
   106
#pragma options align=mac68k4byte
slouken@189
   107
#pragma enumsalwaysint on
slouken@0
   108
#endif /* Compiler needs structure packing set */
slouken@0
   109
slouken@0
   110
/* Set up compiler-specific options for inlining functions */
slouken@0
   111
#ifndef SDL_INLINE_OKAY
slouken@0
   112
#ifdef __GNUC__
slouken@0
   113
#define SDL_INLINE_OKAY
slouken@0
   114
#else
slouken@0
   115
/* Add any special compiler-specific cases here */
slouken@288
   116
#if defined(_MSC_VER) || defined(__BORLANDC__) || \
slouken@288
   117
    defined(__DMC__) || defined(__SC__) || \
slouken@1019
   118
    defined(__WATCOMC__) || defined(__LCC__) || \
slouken@1019
   119
    defined(__DECC)
slouken@288
   120
#ifndef __inline__
slouken@85
   121
#define __inline__	__inline
slouken@288
   122
#endif
slouken@85
   123
#define SDL_INLINE_OKAY
slouken@85
   124
#else
slouken@85
   125
#if !defined(__MRC__) && !defined(_SGI_SOURCE)
slouken@0
   126
#define __inline__ inline
slouken@0
   127
#define SDL_INLINE_OKAY
slouken@0
   128
#endif /* Not a funky compiler */
slouken@85
   129
#endif /* Visual C++ */
slouken@0
   130
#endif /* GNU C */
slouken@0
   131
#endif /* SDL_INLINE_OKAY */
slouken@0
   132
slouken@0
   133
/* If inlining isn't supported, remove "__inline__", turning static
slouken@0
   134
   inlined functions into static functions (resulting in code bloat
slouken@0
   135
   in all files which include the offending header files)
slouken@0
   136
*/
slouken@0
   137
#ifndef SDL_INLINE_OKAY
slouken@0
   138
#define __inline__
slouken@0
   139
#endif
slouken@0
   140
slouken@288
   141
/* Apparently this is needed by several Windows compilers */
slouken@346
   142
#if !defined(__MACH__)
slouken@288
   143
#ifndef NULL
slouken@288
   144
#ifdef __cplusplus
slouken@288
   145
#define NULL 0
slouken@288
   146
#else
slouken@288
   147
#define NULL ((void *)0)
slouken@288
   148
#endif
slouken@288
   149
#endif /* NULL */
slouken@1621
   150
#endif /* ! Mac OS X - breaks precompiled headers */