src/stdafx.h
author rubidium
Fri, 31 Aug 2007 23:02:16 +0000
changeset 8009 9e1e8ff6ac95
parent 7901 1af11255e634
child 8271 393440621fb9
permissions -rw-r--r--
(svn r11028) -Fix [FS#1177]: crash when having the Finance window opened of the player you are cheating to.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2125
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2125
diff changeset
     2
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6916
diff changeset
     3
/** @file stdafx.h */
6916
e87d54a598ea (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6611
diff changeset
     4
2436
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2225
diff changeset
     5
#ifndef STDAFX_H
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2225
diff changeset
     6
#define STDAFX_H
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     7
6071
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
     8
/* It seems that we need to include stdint.h before anything else
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
     9
 * We need INT64_MAX, which for most systems comes from stdint.h. However, MSVC
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    10
 * does not have stdint.h and apparently neither does MorphOS, so define
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    11
 * INT64_MAX for them ourselves. */
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    12
#if !defined(_MSC_VER) && !defined( __MORPHOS__)
6559
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    13
# if defined (SUNOS)
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    14
/* SunOS/Solaris does not have stdint.h, but inttypes.h defines everything
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    15
 * stdint.h defines and we need. */
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    16
#  include <inttypes.h>
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    17
# else
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    18
#  define __STDC_LIMIT_MACROS
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    19
#  include <stdint.h>
86175c4c421e (svn r9036) -Fix [SunOS]: SunOS/Solaris does not have stdint.h, so use inttypes.h which defines the things we need from stdint.h.
rubidium
parents: 6520
diff changeset
    20
# endif
6071
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    21
#else
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    22
# define INT64_MAX 9223372036854775807LL
7453
67ba4a6fc014 (svn r10212) -Fix [FS#723]: money overflow bugs in many locations.
rubidium
parents: 7434
diff changeset
    23
# define INT64_MIN -9223372036854775808LL
6071
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    24
#endif
c37b45d0109b (svn r8382) -Fix (r8374): moved the include of stdint.h to the front of stdafx.h
bjarni
parents: 6063
diff changeset
    25
6184
3cfe1dfa7a04 (svn r8572) -Fix: use the C++ version of the Standard C Library headers. This due to the fact that some stl headers will include them anyway and #undef several defines made in stdafx.h.
rubidium
parents: 6094
diff changeset
    26
#include <cstdio>
3cfe1dfa7a04 (svn r8572) -Fix: use the C++ version of the Standard C Library headers. This due to the fact that some stl headers will include them anyway and #undef several defines made in stdafx.h.
rubidium
parents: 6094
diff changeset
    27
#include <cstddef>
3cfe1dfa7a04 (svn r8572) -Fix: use the C++ version of the Standard C Library headers. This due to the fact that some stl headers will include them anyway and #undef several defines made in stdafx.h.
rubidium
parents: 6094
diff changeset
    28
#include <cstring>
3cfe1dfa7a04 (svn r8572) -Fix: use the C++ version of the Standard C Library headers. This due to the fact that some stl headers will include them anyway and #undef several defines made in stdafx.h.
rubidium
parents: 6094
diff changeset
    29
#include <cstdlib>
3cfe1dfa7a04 (svn r8572) -Fix: use the C++ version of the Standard C Library headers. This due to the fact that some stl headers will include them anyway and #undef several defines made in stdafx.h.
rubidium
parents: 6094
diff changeset
    30
#include <climits>
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    31
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
    32
/* MacOS X will use an NSAlert to display failed assertaions since they're lost unless running from a terminal
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
    33
 * strgen always runs from terminal and don't need a window for asserts */
2731
97a409a62741 (svn r3276) reverted the last two commits. OSX 10.2 kept finding new stuff to prevent it from running OpenTTD, so now it's not supported anymore
bjarni
parents: 2730
diff changeset
    34
#if !defined(__APPLE__) || defined(STRGEN)
6184
3cfe1dfa7a04 (svn r8572) -Fix: use the C++ version of the Standard C Library headers. This due to the fact that some stl headers will include them anyway and #undef several defines made in stdafx.h.
rubidium
parents: 6094
diff changeset
    35
# include <cassert>
2223
29d61b962cb0 (svn r2741) -Feature: [OSX] added a window to display asserts on OSX (Tobin)
bjarni
parents: 2186
diff changeset
    36
#else
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    37
# include "os/macosx/macos.h"
2223
29d61b962cb0 (svn r2741) -Feature: [OSX] added a window to display asserts on OSX (Tobin)
bjarni
parents: 2186
diff changeset
    38
#endif
29d61b962cb0 (svn r2741) -Feature: [OSX] added a window to display asserts on OSX (Tobin)
bjarni
parents: 2186
diff changeset
    39
858
329ff519fb45 (svn r1339) -Fix: compilation with networking works on MinGW32 again (thx orudge).
darkvater
parents: 796
diff changeset
    40
#if defined(UNIX) || defined(__MINGW32__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    41
# include <sys/types.h>
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
#endif
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    43
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
    44
#if defined(__OS2__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    45
# include <types.h>
4216
c403fc7b6e10 (svn r5760) - Codechange: Use a define for case-string comparison in OS/2 instead of function.
Darkvater
parents: 4000
diff changeset
    46
# define strcasecmp stricmp
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
    47
#endif
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
    48
6227
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
    49
#if defined(PSP)
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
    50
# include <psptypes.h>
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
    51
# include <pspdebug.h>
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
    52
# include <pspthreadman.h>
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
    53
#endif /* PSP */
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
    54
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    55
#ifdef __BEOS__
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    56
# include <SupportDefs.h>
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    57
#endif
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    58
446
20304ea8e94e (svn r655) Add the necessary bits to make building on SunOS/Solaris work
tron
parents: 425
diff changeset
    59
#ifdef SUNOS
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    60
# include <alloca.h>
446
20304ea8e94e (svn r655) Add the necessary bits to make building on SunOS/Solaris work
tron
parents: 425
diff changeset
    61
#endif
20304ea8e94e (svn r655) Add the necessary bits to make building on SunOS/Solaris work
tron
parents: 425
diff changeset
    62
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 569
diff changeset
    63
#ifdef __MORPHOS__
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
    64
/* MorphOS defines certain Amiga defines per default, we undefine them
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
    65
 * here to make the rest of source less messy and more clear what is
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
    66
 * required for morphos and what for AmigaOS */
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    67
# ifdef amigaos
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    68
#  undef amigaos
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    69
# endif
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    70
# ifdef __amigaos__
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    71
#  undef __amigaos__
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    72
# endif
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    73
# ifdef __AMIGA__
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    74
#  undef __AMIGA__
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    75
# endif
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    76
# ifdef AMIGA
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    77
#  undef AMIGA
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    78
# endif
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    79
# ifdef amiga
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    80
#  undef amiga
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
    81
# endif
7020
f24a9e27d290 (svn r9711) -Fix: don't include one system-header-file on MorphOS as it gives silly warnings and is unneeded for OpenTTD
truelight
parents: 6977
diff changeset
    82
/* Act like we already included this file, as it somehow gives linkage problems
f24a9e27d290 (svn r9711) -Fix: don't include one system-header-file on MorphOS as it gives silly warnings and is unneeded for OpenTTD
truelight
parents: 6977
diff changeset
    83
 *  (mismatch linkage of C++ and C between this include and unistd.h). */
f24a9e27d290 (svn r9711) -Fix: don't include one system-header-file on MorphOS as it gives silly warnings and is unneeded for OpenTTD
truelight
parents: 6977
diff changeset
    84
#define CLIB_USERGROUP_PROTOS_H
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 569
diff changeset
    85
#endif /* __MORPHOS__ */
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 569
diff changeset
    86
3016
c63fb93fa1a0 (svn r3596) -Codechange: [OSX] changed to use Apple's macros instead of OTTD macros for endian conversion
bjarni
parents: 2984
diff changeset
    87
#ifdef __APPLE__
3289
8c0707257253 (svn r4003) - Minor codebeautifier@work
Darkvater
parents: 3016
diff changeset
    88
# include "os/macosx/osx_stdafx.h"
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
    89
/* Make endian swapping use Apple's macros to increase speed (since it will use hardware swapping if available)
5795
41fd1f439c51 (svn r7887) -Fix: [OSX] Endian32_Swap should always return a uint32, not a long unsigned int
bjarni
parents: 5726
diff changeset
    90
 * Even though they should return uint16 and uint32, we get warnings if we don't cast those (why?) */
41fd1f439c51 (svn r7887) -Fix: [OSX] Endian32_Swap should always return a uint32, not a long unsigned int
bjarni
parents: 5726
diff changeset
    91
# define BSWAP32(x) ((uint32)Endian32_Swap(x))
41fd1f439c51 (svn r7887) -Fix: [OSX] Endian32_Swap should always return a uint32, not a long unsigned int
bjarni
parents: 5726
diff changeset
    92
# define BSWAP16(x) ((uint16)Endian16_Swap(x))
3016
c63fb93fa1a0 (svn r3596) -Codechange: [OSX] changed to use Apple's macros instead of OTTD macros for endian conversion
bjarni
parents: 2984
diff changeset
    93
#else
3289
8c0707257253 (svn r4003) - Minor codebeautifier@work
Darkvater
parents: 3016
diff changeset
    94
# define BSWAP32(x) ((((x) >> 24) & 0xFF) | (((x) >> 8) & 0xFF00) | (((x) << 8) & 0xFF0000) | (((x) << 24) & 0xFF000000))
8c0707257253 (svn r4003) - Minor codebeautifier@work
Darkvater
parents: 3016
diff changeset
    95
# define BSWAP16(x) ((x) >> 8 | (x) << 8)
8c0707257253 (svn r4003) - Minor codebeautifier@work
Darkvater
parents: 3016
diff changeset
    96
#endif /* __APPLE__ */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    97
6218
89dc931b8d78 (svn r8647) -Codechange: add a general way to handle platforms who can only have a limited amount of file-descripters open at any given time.
truelight
parents: 6198
diff changeset
    98
#if defined(PSP)
89dc931b8d78 (svn r8647) -Codechange: add a general way to handle platforms who can only have a limited amount of file-descripters open at any given time.
truelight
parents: 6198
diff changeset
    99
/* PSP can only have 10 file-descriptors open at any given time, but this
89dc931b8d78 (svn r8647) -Codechange: add a general way to handle platforms who can only have a limited amount of file-descripters open at any given time.
truelight
parents: 6198
diff changeset
   100
 *  switch only limits reads via the Fio system. So keep 2 fds free for things
89dc931b8d78 (svn r8647) -Codechange: add a general way to handle platforms who can only have a limited amount of file-descripters open at any given time.
truelight
parents: 6198
diff changeset
   101
 *  like saving a game. */
6227
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
   102
# define LIMITED_FDS 8
ab74f5faf662 (svn r8674) [PSP] -Add: added network code for PSP, based on the work of Turulo
truelight
parents: 6218
diff changeset
   103
# define printf pspDebugScreenPrintf
6218
89dc931b8d78 (svn r8647) -Codechange: add a general way to handle platforms who can only have a limited amount of file-descripters open at any given time.
truelight
parents: 6198
diff changeset
   104
#endif /* PSP */
89dc931b8d78 (svn r8647) -Codechange: add a general way to handle platforms who can only have a limited amount of file-descripters open at any given time.
truelight
parents: 6198
diff changeset
   105
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   106
/* by default we use [] var arrays */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   107
#define VARARRAY_SIZE
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   108
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   109
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   110
/* Stuff for GCC */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   111
#if defined(__GNUC__)
4000
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3900
diff changeset
   112
# define NORETURN __attribute__ ((noreturn))
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   113
# define FORCEINLINE inline
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   114
# define CDECL
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   115
# define __int64 long long
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   116
# define GCC_PACK __attribute__((packed))
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   117
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   118
# if (__GNUC__ == 2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   119
#  undef VARARRAY_SIZE
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   120
#  define VARARRAY_SIZE 0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   121
# endif
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   122
#endif /* __GNUC__ */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   123
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
   124
#if defined(__WATCOMC__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   125
# define NORETURN
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   126
# define FORCEINLINE inline
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   127
# define CDECL
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   128
# define GCC_PACK
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   129
# include <malloc.h>
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   130
#endif /* __WATCOMC__ */
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
   131
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 781
diff changeset
   132
#if defined(__MINGW32__) || defined(__CYGWIN__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   133
# include <malloc.h> // alloca()
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 781
diff changeset
   134
#endif
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 781
diff changeset
   135
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   136
/* Stuff for MSVC */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   137
#if defined(_MSC_VER)
2695
395110265c87 (svn r3237) - CodeChange: remove silencing of some warnings. MSVC6 once again has some issues with enums, and other things as usual, so silence those still.
Darkvater
parents: 2694
diff changeset
   138
# pragma once
6520
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   139
/* Define a win32 target platform, to override defaults of the SDK
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   140
 * We need to define NTDDI version for Vista SDK, but win2k is minimum */
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   141
# define NTDDI_VERSION NTDDI_WIN2K // Windows 2000
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   142
# define _WIN32_WINNT 0x0500       // Windows 2000
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   143
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   144
# define _WIN32_WINDOWS 0x400      // Windows 95
7901
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   145
#if !defined(WINCE)
6520
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   146
# define WINVER 0x0400             // Windows NT 4.0 / Windows 95
7901
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   147
#endif
6520
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   148
# define _WIN32_IE_ 0x0401         // 4.01 (win98 and NT4SP5+)
c35345c0897d (svn r8974) -Fix: [win32] Define a win32 target platform ourselves so that we don't conflict with Vista Platform SDK (boekabart)
Darkvater
parents: 6409
diff changeset
   149
2695
395110265c87 (svn r3237) - CodeChange: remove silencing of some warnings. MSVC6 once again has some issues with enums, and other things as usual, so silence those still.
Darkvater
parents: 2694
diff changeset
   150
# define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
395110265c87 (svn r3237) - CodeChange: remove silencing of some warnings. MSVC6 once again has some issues with enums, and other things as usual, so silence those still.
Darkvater
parents: 2694
diff changeset
   151
# pragma warning(disable: 4244)  // 'conversion' conversion from 'type1' to 'type2', possible loss of data
395110265c87 (svn r3237) - CodeChange: remove silencing of some warnings. MSVC6 once again has some issues with enums, and other things as usual, so silence those still.
Darkvater
parents: 2694
diff changeset
   152
# pragma warning(disable: 4761)  // integral size mismatch in argument : conversion supplied
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5795
diff changeset
   153
# pragma warning(disable: 4200)  // nonstandard extension used : zero-sized array in struct/union
5120
e12dfc67761f (svn r7200) -Codechange: remove unneeded redraw (console.c), coding style, use FindWindowById
Darkvater
parents: 5082
diff changeset
   154
2976
a89ead6e2247 (svn r3551) Add directives to allow Visual Studio 2005 compilation.
peter1138
parents: 2974
diff changeset
   155
# if _MSC_VER >= 1400              // MSVC 2005 safety checks
a89ead6e2247 (svn r3551) Add directives to allow Visual Studio 2005 compilation.
peter1138
parents: 2974
diff changeset
   156
#  pragma warning(disable: 4996)   // 'strdup' was declared deprecated
a89ead6e2247 (svn r3551) Add directives to allow Visual Studio 2005 compilation.
peter1138
parents: 2974
diff changeset
   157
#  define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
7643
eafa19c7f11c (svn r10421) -Fix [MSVC]: suppress some code analyzer warnings for VC8
KUDr
parents: 7524
diff changeset
   158
#  pragma warning(disable: 6308)   // code analyzer: 'realloc' might return null pointer: assigning null pointer to 't_ptr', which is passed as an argument to 'realloc', will cause the original memory block to be leaked
eafa19c7f11c (svn r10421) -Fix [MSVC]: suppress some code analyzer warnings for VC8
KUDr
parents: 7524
diff changeset
   159
#  pragma warning(disable: 6011)   // code analyzer: Dereferencing NULL pointer 'pfGetAddrInfo': Lines: 995, 996, 998, 999, 1001
7650
ebd88feaa190 (svn r10428) -Fix: some more VC code analyzer warnings disabled
KUDr
parents: 7643
diff changeset
   160
#  pragma warning(disable: 6326)   // code analyzer: potential comparison of a constant with another constant
ebd88feaa190 (svn r10428) -Fix: some more VC code analyzer warnings disabled
KUDr
parents: 7643
diff changeset
   161
#  pragma warning(disable: 6031)   // code analyzer: Return value ignored: 'ReadFile'
ebd88feaa190 (svn r10428) -Fix: some more VC code analyzer warnings disabled
KUDr
parents: 7643
diff changeset
   162
#  pragma warning(disable: 6255)   // code analyzer: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead
ebd88feaa190 (svn r10428) -Fix: some more VC code analyzer warnings disabled
KUDr
parents: 7643
diff changeset
   163
#  pragma warning(disable: 6246)   // code analyzer: Local declaration of 'statspec' hides declaration of the same name in outer scope. For additional information, see previous declaration at ...
6186
8232b762d596 (svn r8574) -Fix: Silence VC2003 warning: "compiler limit : terminating debug information emission for enum 'StringIdEnum'"
KUDr
parents: 6185
diff changeset
   164
# else /* _MSC_VER >= 1400  ( <1400 for MSVC2003) */
7524
6f535308d3df (svn r10292) -Fix: suppress VC 7.1 warning: "\src\texteff.cpp(251) : warning C4258: 'y' : definition from the for loop is ignored; the definition from the enclosing scope is used" which prevents compilation on MSVC 2003
KUDr
parents: 7453
diff changeset
   165
#  pragma warning(disable: 4288)   // nonstandard extension used : 'y' : loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scope
6186
8232b762d596 (svn r8574) -Fix: Silence VC2003 warning: "compiler limit : terminating debug information emission for enum 'StringIdEnum'"
KUDr
parents: 6185
diff changeset
   166
#  pragma warning(disable: 4292)   // compiler limit : terminating debug information emission for enum 'StringIdEnum' with member 'STR_801D_COAL_CAR'
2976
a89ead6e2247 (svn r3551) Add directives to allow Visual Studio 2005 compilation.
peter1138
parents: 2974
diff changeset
   167
# endif /* _MSC_VER >= 1400 */
2695
395110265c87 (svn r3237) - CodeChange: remove silencing of some warnings. MSVC6 once again has some issues with enums, and other things as usual, so silence those still.
Darkvater
parents: 2694
diff changeset
   168
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   169
# include <malloc.h> // alloca()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   170
# define NORETURN __declspec(noreturn)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   171
# define FORCEINLINE __forceinline
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   172
# define inline _inline
7901
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   173
# if !defined(WINCE)
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   174
#  define CDECL _cdecl
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   175
# endif
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   176
  int CDECL snprintf(char *str, size_t size, const char *format, ...);
7901
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   177
# if _MSC_VER < 1400 || defined(WINCE)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   178
   int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap);
1881
023a134a4b12 (svn r2387) - CodeChange: made the saveload code more readable and also removed the 'byte' saveload arrays which means you can save an array of more than 255 elements, or bigger structs than 255 bytes. This doesn't yet solve the problem that a chunk can be a maximum of 16384 big.
Darkvater
parents: 1812
diff changeset
   179
# endif
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   180
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   181
# if defined(WIN32) && !defined(_WIN64) && !defined(WIN64)
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   182
#  ifndef _W64
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   183
#   define _W64
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   184
#  endif
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   185
   typedef _W64 int INT_PTR, *PINT_PTR;
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   186
   typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   187
# endif /* WIN32 && !_WIN64 && !WIN64 */
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   188
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   189
# define GCC_PACK
2694
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   190
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   191
/* This is needed to zlib uses the stdcall calling convention on visual studio */
2694
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   192
# if defined(WITH_ZLIB) || defined(WITH_PNG)
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   193
#  ifndef ZLIB_WINAPI
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   194
#   define ZLIB_WINAPI
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   195
#  endif
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   196
# endif
99d88a9d5337 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2639
diff changeset
   197
7901
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   198
# if defined(WINCE)
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   199
#  define strcasecmp _stricmp
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   200
#  define strncasecmp _strnicmp
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   201
#  undef DEBUG
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   202
# else
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   203
#  define strcasecmp stricmp
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   204
#  define strncasecmp strnicmp
1af11255e634 (svn r10778) -Fix: one-liners to allow MSVC and WINCE to work together (or anyway, a step towards that goal)
truelight
parents: 7773
diff changeset
   205
# endif
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   206
/* suppress: warning C4005: 'offsetof' : macro redefinition (VC8) */
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   207
#endif /* defined(_MSC_VER) */
2483
ee0517ddfa92 (svn r3009) DIEEEEEEEEEEE VS6 (you good-for-nothing compiler)
Darkvater
parents: 2482
diff changeset
   208
6006
56ccbc3ec899 (svn r8306) [WinCE] -Fix: some functions don't exists in WinCE, so give an alternative where possible
truelight
parents: 5922
diff changeset
   209
#if defined(WINCE)
56ccbc3ec899 (svn r8306) [WinCE] -Fix: some functions don't exists in WinCE, so give an alternative where possible
truelight
parents: 5922
diff changeset
   210
# define strdup _strdup
56ccbc3ec899 (svn r8306) [WinCE] -Fix: some functions don't exists in WinCE, so give an alternative where possible
truelight
parents: 5922
diff changeset
   211
#endif /* WINCE */
56ccbc3ec899 (svn r8306) [WinCE] -Fix: some functions don't exists in WinCE, so give an alternative where possible
truelight
parents: 5922
diff changeset
   212
5167
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   213
/* NOTE: the string returned by these functions is only valid until the next
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   214
 * call to the same function and is not thread- or reentrancy-safe */
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   215
#if !defined(STRGEN)
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   216
# if defined(WIN32) || defined(WIN64)
7330
577e92774f23 (svn r10073) -Codechange: make the NewGRF paths in the config file without any full paths (again).
rubidium
parents: 7130
diff changeset
   217
char *getcwd(char *buf, size_t size);
6577
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   218
#  include <tchar.h>
6006
56ccbc3ec899 (svn r8306) [WinCE] -Fix: some functions don't exists in WinCE, so give an alternative where possible
truelight
parents: 5922
diff changeset
   219
/* XXX - WinCE without MSVCRT doesn't support wfopen, so it seems */
6577
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   220
#  if !defined(WINCE)
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   221
#   define fopen(file, mode) _tfopen(OTTD2FS(file), _T(mode))
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   222
#  endif /* WINCE */
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   223
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   224
   const char *FS2OTTD(const TCHAR *name);
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   225
   const TCHAR *OTTD2FS(const char *name);
5167
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   226
# else
6577
ee768d653dd0 (svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents: 6559
diff changeset
   227
5167
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   228
#  define fopen(file, mode) fopen(OTTD2FS(file), mode)
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   229
   const char *FS2OTTD(const char *name);
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   230
   const char *OTTD2FS(const char *name);
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   231
# endif /* WIN32 */
2b9d61386688 (svn r7274) -Codechange [utf8]: Add input/output unicode support. This actually only changes win32
Darkvater
parents: 5138
diff changeset
   232
#endif /* STRGEN */
2482
dffcca243dbc (svn r3008) [ 1247535 ] Native Support for Win64 (compile&run only) (michi_cc)
Darkvater
parents: 2436
diff changeset
   233
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   234
/* Windows has always LITTLE_ENDIAN */
2482
dffcca243dbc (svn r3008) [ 1247535 ] Native Support for Win64 (compile&run only) (michi_cc)
Darkvater
parents: 2436
diff changeset
   235
#if defined(WIN32) || defined(__OS2__) || defined(WIN64)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   236
# define TTD_LITTLE_ENDIAN
7434
062b9e494412 (svn r10191) -Backport (r9148 from NoAI): detecting of CPU type (32 vs 64 bits).
rubidium
parents: 7425
diff changeset
   237
#elif defined(TESTING)
157
dd017fa3bad8 (svn r158) -Fix: make endianess check 100% accurate (hopefully ;))
truelight
parents: 0
diff changeset
   238
#else
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   239
/* Else include endian[target/host].h, which has the endian-type, autodetected by the Makefile */
4563
f25cb91c5f14 (svn r6411) -Fix(r6410): forgot to update openttd*.sln (thx Darkvater and michi_cc :) )
glx
parents: 4379
diff changeset
   240
# if defined(STRGEN)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   241
#  include "endian_host.h"
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   242
# else
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   243
#  include "endian_target.h"
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   244
# endif
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   245
#endif /* WIN32 || __OS2__ || WIN64 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   246
5842
180c71b8fc14 (svn r8042) - Fix: OS/2 compilation with GCC (thanks to Paul Smedley and TrueBrain for their help)
orudge
parents: 5838
diff changeset
   247
#if defined(WIN32) || defined(WIN64) || defined(__OS2__) && !defined(__INNOTEK_LIBC__)
4379
2866185c1377 (svn r6117) -Fix r6097: on mingw it is normal that both / as \ are accepted as input
truelight
parents: 4316
diff changeset
   248
# define PATHSEP "\\"
2866185c1377 (svn r6117) -Fix r6097: on mingw it is normal that both / as \ are accepted as input
truelight
parents: 4316
diff changeset
   249
# define PATHSEPCHAR '\\'
2866185c1377 (svn r6117) -Fix r6097: on mingw it is normal that both / as \ are accepted as input
truelight
parents: 4316
diff changeset
   250
#else
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   251
# define PATHSEP "/"
4221
bb06fe8dcce2 (svn r5765) - Codechange: Fully unify the OS-specific FiosGet...List functions into fios.c, as well as FiosGetSavegameList and FiosGetScenarioList functions with the help of some callbacks.
Darkvater
parents: 4216
diff changeset
   252
# define PATHSEPCHAR '/'
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   253
#endif
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   254
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   255
typedef unsigned char byte;
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   256
#ifndef __BEOS__ /* already defined */
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   257
  typedef unsigned char uint8;
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   258
  typedef unsigned short uint16;
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   259
  typedef unsigned int uint32;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   260
#endif
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   261
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   262
/* This is already defined in unix */
5551
5cc56d0e6f5f (svn r7548) -Codechange: Some MorphOS changes to get OpenTTD compiled, packaged (tokai)
Darkvater
parents: 5167
diff changeset
   263
#if !defined(UNIX) && !defined(__CYGWIN__) && !defined(__BEOS__) && !defined(__MORPHOS__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   264
  typedef unsigned int uint;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   265
#endif
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   266
/* Not defined in QNX Neutrino (6.x) */
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 536
diff changeset
   267
#if defined(__QNXNTO__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   268
  typedef unsigned int uint;
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 536
diff changeset
   269
#endif
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   270
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   271
#ifndef __BEOS__
3900
4984308f9125 (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3624
diff changeset
   272
	typedef signed char int8;
4984308f9125 (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3624
diff changeset
   273
	typedef signed short int16;
4984308f9125 (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3624
diff changeset
   274
	typedef signed int int32;
4984308f9125 (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3624
diff changeset
   275
	typedef signed __int64 int64;
4984308f9125 (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3624
diff changeset
   276
	typedef unsigned __int64 uint64;
6409
55217fea8342 (svn r8818) -Codechange: remove the #ifdef _cplusplus remnants.
rubidium
parents: 6227
diff changeset
   277
#endif /* !__BEOS__ */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   278
2978
1a04b74b61ae (svn r3553) - Revert r3549 "Change the behaviour of OTTD_ALIGNMENT". Some tests showed that forcing aligned reads slowed down the code (drawing smallmap) by 14%. Change back to the old behaviour.
Darkvater
parents: 2976
diff changeset
   279
#if defined(ARM) || defined(__arm__) || defined(__alpha__)
1a04b74b61ae (svn r3553) - Revert r3549 "Change the behaviour of OTTD_ALIGNMENT". Some tests showed that forcing aligned reads slowed down the code (drawing smallmap) by 14%. Change back to the old behaviour.
Darkvater
parents: 2976
diff changeset
   280
# define OTTD_ALIGNMENT
1a04b74b61ae (svn r3553) - Revert r3549 "Change the behaviour of OTTD_ALIGNMENT". Some tests showed that forcing aligned reads slowed down the code (drawing smallmap) by 14%. Change back to the old behaviour.
Darkvater
parents: 2976
diff changeset
   281
#endif
1a04b74b61ae (svn r3553) - Revert r3549 "Change the behaviour of OTTD_ALIGNMENT". Some tests showed that forcing aligned reads slowed down the code (drawing smallmap) by 14%. Change back to the old behaviour.
Darkvater
parents: 2976
diff changeset
   282
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   283
/* Setup alignment and conversion macros */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   284
#if defined(TTD_BIG_ENDIAN)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   285
  static inline uint32 TO_LE32(uint32 x) { return BSWAP32(x); }
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   286
  static inline uint16 TO_LE16(uint16 x) { return BSWAP16(x); }
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   287
  static inline uint32 FROM_LE32(uint32 x) { return BSWAP32(x); }
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   288
  static inline uint16 FROM_LE16(uint16 x) { return BSWAP16(x); }
2984
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   289
# define TO_BE32(x)   (x)
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   290
# define TO_BE16(x)   (x)
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2485
diff changeset
   291
# define FROM_BE32(x) (x)
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2485
diff changeset
   292
# define FROM_BE16(x) (x)
2984
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   293
# define TO_LE32X(x)  BSWAP32(x)
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   294
# define TO_BE32X(x)  (x)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   295
#else
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   296
  static inline uint32 TO_BE32(uint32 x) { return BSWAP32(x); }
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   297
  static inline uint16 TO_BE16(uint16 x) { return BSWAP16(x); }
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   298
  static inline uint32 FROM_BE32(uint32 x) { return BSWAP32(x); }
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   299
  static inline uint16 FROM_BE16(uint16 x) { return BSWAP16(x); }
2984
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   300
# define TO_LE32(x)   (x)
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   301
# define TO_LE16(x)   (x)
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2485
diff changeset
   302
# define FROM_LE32(x) (x)
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2485
diff changeset
   303
# define FROM_LE16(x) (x)
2984
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   304
# define TO_LE32X(x)  (x)
225bffc79071 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2980
diff changeset
   305
# define TO_BE32X(x)  BSWAP32(x)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   306
#endif /* TTD_BIG_ENDIAN */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   307
7425
350b9265b7a2 (svn r10182) -Codechange: rewrite most part of the file loading/searching to be more flexible.
rubidium
parents: 7330
diff changeset
   308
#if !defined(WITH_PERSONAL_DIR)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   309
# define PERSONAL_DIR ""
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   310
#endif
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   311
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   312
/* Compile time assertions */
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
   313
#ifdef __OS2__
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   314
# define assert_compile(expr)
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 770
diff changeset
   315
#else
6409
55217fea8342 (svn r8818) -Codechange: remove the #ifdef _cplusplus remnants.
rubidium
parents: 6227
diff changeset
   316
# define assert_compile(expr) extern "C" void __ct_assert__(int a[1 - 2 * !(expr)])
3900
4984308f9125 (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3624
diff changeset
   317
#endif /* __OS2__ */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   318
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   319
assert_compile(sizeof(uint32) == 4);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   320
assert_compile(sizeof(uint16) == 2);
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2485
diff changeset
   321
assert_compile(sizeof(uint8)  == 1);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   322
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   323
#define lengthof(x) (sizeof(x)/sizeof(x[0]))
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   324
#define endof(x) (&x[lengthof(x)])
1317
f382f1b439c7 (svn r1821) Move generic string handling functions to string.[ch] and introduce stre{cpy,cat}, see string.h for their semantics
tron
parents: 1022
diff changeset
   325
#define lastof(x) (&x[lengthof(x) - 1])
5922
510e1bbc5992 (svn r8131) -Fix (r8125): g++ warning: 'invalid access to non-static data member ?<class>::<member>? of NULL object'. It is weird, but renaming the 'offsetof' macro helped.
KUDr
parents: 5842
diff changeset
   326
6409
55217fea8342 (svn r8818) -Codechange: remove the #ifdef _cplusplus remnants.
rubidium
parents: 6227
diff changeset
   327
#define cpp_offsetof(s,m)   (((size_t)&reinterpret_cast<const volatile char&>((((s*)(char*)8)->m))) - 8)
55217fea8342 (svn r8818) -Codechange: remove the #ifdef _cplusplus remnants.
rubidium
parents: 6227
diff changeset
   328
#ifndef offsetof
6198
d1f995c47d7c (svn r8613) -Fix [MorphOS]: offsetof() macro undefined for MorphOS build
KUDr
parents: 6186
diff changeset
   329
# define offsetof(s,m)       cpp_offsetof(s, m)
6409
55217fea8342 (svn r8818) -Codechange: remove the #ifdef _cplusplus remnants.
rubidium
parents: 6227
diff changeset
   330
#endif /* offsetof */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   331
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   332
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   333
/* take care of some name clashes on MacOS */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   334
#if defined(__APPLE__)
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   335
# define GetString OTTD_GetString
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   336
# define DrawString OTTD_DrawString
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   337
# define Random OTTD_Random
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   338
# define CloseConnection OTTD_CloseConnection
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   339
#endif /* __APPLE */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   340
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 569
diff changeset
   341
#ifdef __AMIGA__
6185
be6627364fa3 (svn r8573) -Cleanup: obey the comment style in stdafx.h.
rubidium
parents: 6184
diff changeset
   342
/* it seems AmigaOS already have a Point declared */
2485
fd92a70a064a (svn r3011) Refix last revision's fix of VS6 which broke compilation on MinGW. Also beautify stdafx.h with nice indentation and comments after big #ifdef blocks. Hope it didn't break compilation on any OS's.
Darkvater
parents: 2483
diff changeset
   343
# define Point OTTD_AMIGA_POINT
569
2e86ae517874 (svn r980) Fixed issues where MorphOS would get problems if AmigaOS would get a port, since MorphOS also have the flag __AMIGA__ defined (Tokai)
bjarni
parents: 543
diff changeset
   344
#endif
2e86ae517874 (svn r980) Fixed issues where MorphOS would get problems if AmigaOS would get a port, since MorphOS also have the flag __AMIGA__ defined (Tokai)
bjarni
parents: 543
diff changeset
   345
7130
8299dcc2dd24 (svn r9865) -Fix (r9862): NOT_REACHED() and error() declarations are needed for strgen
glx
parents: 7129
diff changeset
   346
void
7129
60973c5cb78d (svn r9862) -Fix (9842): strgen's error() does return in contrast to OTTD's error().
rubidium
parents: 7118
diff changeset
   347
#ifndef STRGEN
7130
8299dcc2dd24 (svn r9865) -Fix (r9862): NOT_REACHED() and error() declarations are needed for strgen
glx
parents: 7129
diff changeset
   348
/* In strgen error is not fatal and returns */
8299dcc2dd24 (svn r9865) -Fix (r9862): NOT_REACHED() and error() declarations are needed for strgen
glx
parents: 7129
diff changeset
   349
NORETURN
8299dcc2dd24 (svn r9865) -Fix (r9862): NOT_REACHED() and error() declarations are needed for strgen
glx
parents: 7129
diff changeset
   350
#endif /* STRGEN */
8299dcc2dd24 (svn r9865) -Fix (r9862): NOT_REACHED() and error() declarations are needed for strgen
glx
parents: 7129
diff changeset
   351
CDECL error(const char *str, ...);
7118
2cc02ab0557d (svn r9842) -Codechange: now NOT_REACHED is also triggered when debugging is disabled.
rubidium
parents: 7020
diff changeset
   352
#define NOT_REACHED() error("NOT_REACHED triggered at line %i of %s", __LINE__, __FILE__)
2cc02ab0557d (svn r9842) -Codechange: now NOT_REACHED is also triggered when debugging is disabled.
rubidium
parents: 7020
diff changeset
   353
7771
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   354
#if defined(MORPHOS)
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   355
/* MorphOS doesn't have C++ conformant _stricmp... */
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   356
#define _stricmp stricmp
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   357
#elif defined(OPENBSD)
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   358
/* OpenBSD uses strcasecmp(3) */
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   359
#define _stricmp strcasecmp
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   360
#endif
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   361
7773
8a128f839a86 (svn r10607) -Fix r10605: use '&&' in preprocessor directives (MSVC doesn't like 'and')
glx
parents: 7771
diff changeset
   362
#if !defined(MORPHOS) && !defined(OPENBSD)
7771
e6f9227cf0fc (svn r10605) -Fix [FS#1046]: also OpenBSD does not know wchar. Patch by Matthias.
rubidium
parents: 7762
diff changeset
   363
/* MorphOS & OpenBSD don't know wchars, the rest does :( */
7751
99bcdf28a226 (svn r10562) -Fix: most of the MorphOS issues; MorphOS doesn't know about wchars, so disable all code that has to use wchars for MorphOS.
rubidium
parents: 7650
diff changeset
   364
#define HAS_WCHAR
7773
8a128f839a86 (svn r10607) -Fix r10605: use '&&' in preprocessor directives (MSVC doesn't like 'and')
glx
parents: 7771
diff changeset
   365
#endif /* !defined(MORPHOS) && !defined(OPENBSD) */
7751
99bcdf28a226 (svn r10562) -Fix: most of the MorphOS issues; MorphOS doesn't know about wchars, so disable all code that has to use wchars for MorphOS.
rubidium
parents: 7650
diff changeset
   366
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7751
diff changeset
   367
#if !defined(MAX_PATH)
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7751
diff changeset
   368
# define MAX_PATH 260
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7751
diff changeset
   369
#endif
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7751
diff changeset
   370
2436
177cb6a8339f (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2225
diff changeset
   371
#endif /* STDAFX_H */