Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 31, 2008, 11:24:44 PM (16 years ago)
Author:
rgrieder
Message:
  • set the svn:eol-style property to all files so, that where ever you check out, you'll get the right line endings (had to change every file with mixed endings to windows in order to set the property)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/network/src/util/OrxonoxPlatform.h

    • Property svn:eol-style set to native
    r1414 r1494  
    11/*
    22 *   ORXONOX - the hottest 3D action shooter ever to exist
    3  *                    > www.orxonox.net <
    4  *
     3 *                    > www.orxonox.net < *
    54 *
    65 *   License notice:
     
    2625 *
    2726 */
    28 
    2927/**
    3028 @file
     
    3230        copy of the file found in the Ogre source code (OgrePlatform.h).
    3331 */
    34 
    35 #ifndef _OrxonoxPlatform_H__
    36 #define _OrxonoxPlatform_H__
    37 
    38 /* Initial platform/compiler-related stuff to set.
    39 */
    40 #define ORXONOX_PLATFORM_WIN32 1
    41 #define ORXONOX_PLATFORM_LINUX 2
    42 #define ORXONOX_PLATFORM_APPLE 3
    43 
    44 #define ORXONOX_COMPILER_MSVC 1
    45 #define ORXONOX_COMPILER_GNUC 2
    46 #define ORXONOX_COMPILER_BORL 3
    47 
    48 #define ORXONOX_ENDIAN_LITTLE 1
    49 #define ORXONOX_ENDIAN_BIG 2
    50 
    51 #define ORXONOX_ARCHITECTURE_32 1
    52 #define ORXONOX_ARCHITECTURE_64 2
    53 
    54 /* Finds the compiler type and version.
    55 */
    56 #if defined( _MSC_VER )
    57 #  define ORXONOX_COMPILER ORXONOX_COMPILER_MSVC
    58 #  define ORXONOX_COMP_VER _MSC_VER
    59 
    60 #elif defined( __GNUC__ )
    61 #  define ORXONOX_COMPILER ORXONOX_COMPILER_GNUC
    62 #  define ORXONOX_COMP_VER (((__GNUC__)*100) + \
    63         (__GNUC_MINOR__*10) + \
    64         __GNUC_PATCHLEVEL__)
    65 
    66 #elif defined( __BORLANDC__ )
    67 #  define ORXONOX_COMPILER ORXONOX_COMPILER_BORL
    68 #  define ORXONOX_COMP_VER __BCPLUSPLUS__
    69 
    70 #else
    71 #  pragma error "No known compiler. Abort! Abort!"
    72 
    73 #endif
    74 
    75 /* See if we can use __forceinline or if we need to use __inline instead */
    76 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
    77 #  if ORXONOX_COMP_VER >= 1200
    78 #    define FORCEINLINE __forceinline
    79 #  endif
    80 #elif defined(__MINGW32__)
    81 #  if !defined(FORCEINLINE)
    82 #    define FORCEINLINE __inline
    83 #  endif
    84 #else
    85 #  define FORCEINLINE __inline
    86 #endif
    87 
    88 /* Finds the current platform */
    89 
    90 #if defined( __WIN32__ ) || defined( _WIN32 )
    91 #  define ORXONOX_PLATFORM ORXONOX_PLATFORM_WIN32
    92 
    93 #elif defined( __APPLE_CC__)
    94 #  define ORXONOX_PLATFORM ORXONOX_PLATFORM_APPLE
    95 
    96 #else
    97 #  define ORXONOX_PLATFORM ORXONOX_PLATFORM_LINUX
    98 #endif
    99 
    100     /* Find the arch type */
    101 #if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) || defined(__ia64__) || defined(__s390__) || defined(__s390x__)
    102 #  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_64
    103 #else
    104 #  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_32
    105 #endif
    106 
    107 // For generating compiler warnings - should work on any compiler
    108 // As a side note, if you start your message with 'Warning: ', the MSVC
    109 // IDE actually does catch a warning :)
    110 // FIXME: Try this on linux box. Doesn't work with msvc
    111 //#define ORXONOX_QUOTE_INPLACE(x) # x
    112 //#define ORXONOX_QUOTE(x) ORXONOX_QUOTE_INPLACE(x)
    113 //#define ORXONOX_WARN( x )  message( __FILE__ "(" QUOTE( __LINE__ ) ") : " x "\n" )
    114 
    115 //----------------------------------------------------------------------------
    116 // Windows Settings
    117 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
    118 
    119 // Win32 compilers use _DEBUG for specifying debug builds.
    120 #  ifdef _DEBUG
    121 #    define ORXONOX_DEBUG_MODE 1
    122 #  else
    123 #    define ORXONOX_DEBUG_MODE 0
    124 #  endif
    125 
    126 // Disable unicode support on MingW at the moment, poorly supported in stdlibc++
    127 // STLPORT fixes this though so allow if found
    128 // MinGW C++ Toolkit supports unicode and sets the define __MINGW32_TOOLKIT_UNICODE__ in _mingw.h
    129 #  if defined( __MINGW32__ ) && !defined(_STLPORT_VERSION)
    130 #    include<_mingw.h>
    131 #    if defined(__MINGW32_TOOLBOX_UNICODE__)
    132 #      define ORXONOX_UNICODE_SUPPORT 1
    133 #    else
    134 #      define ORXONOX_UNICODE_SUPPORT 0
    135 #    endif
    136 #  else
    137 #    define ORXONOX_UNICODE_SUPPORT 1
    138 #  endif
    139 
    140 #endif /* Platform Win32 */
    141 //----------------------------------------------------------------------------
    142 
    143 //----------------------------------------------------------------------------
    144 // Linux/Apple Settings
    145 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_LINUX || ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
    146 
    147 
    148 // A quick define to overcome different names for the same function
    149 #  define stricmp strcasecmp
    150 
    151 // Unlike the Win32 compilers, Linux compilers seem to use DEBUG for when
    152 // specifying a debug build.
    153 // (??? this is wrong, on Linux debug builds aren't marked in any way unless
    154 // you mark it yourself any way you like it -- zap ???)
    155 #  ifdef DEBUG
    156 #    define ORXONOX_DEBUG_MODE 1
    157 #  else
    158 #    define ORXONOX_DEBUG_MODE 0
    159 #  endif
    160 
    161 /* FIXME: Check what this actually is and whether we need it or not
    162 #  if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
    163 #    define ORXONOX_PLATFORM_LIB "OrxonoxPlatform.bundle"
    164 #  else
    165 // ORXONOX_PLATFORM_LINUX
    166 #    define ORXONOX_PLATFORM_LIB "libOrxonoxPlatform.so"
    167 #  endif
    168 */
    169 
    170 // Always enable unicode support for the moment
    171 // Perhaps disable in old versions of gcc if necessary
    172 #  define ORXONOX_UNICODE_SUPPORT 1
    173 
    174 #endif /* Patform Linux/Apple */
    175 
    176 //For apple, we always have a custom config.h file
    177 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
    178 #  include "config.h"
    179 #endif
    180 
    181 //----------------------------------------------------------------------------
    182 
    183 //----------------------------------------------------------------------------
    184 // Endian Settings
    185 // check for BIG_ENDIAN config flag, set ORXONOX_ENDIAN correctly
    186 #ifdef ORXONOX_CONFIG_BIG_ENDIAN
    187 #  define ORXONOX_ENDIAN ORXONOX_ENDIAN_BIG
    188 #else
    189 #  define ORXONOX_ENDIAN ORXONOX_ENDIAN_LITTLE
    190 #endif
    191 
    192 //-----------------------------------------------------------------------
     32#ifndef _OrxonoxPlatform_H__#define _OrxonoxPlatform_H__/* Initial platform/compiler-related stuff to set.*/#define ORXONOX_PLATFORM_WIN32 1#define ORXONOX_PLATFORM_LINUX 2#define ORXONOX_PLATFORM_APPLE 3#define ORXONOX_COMPILER_MSVC 1#define ORXONOX_COMPILER_GNUC 2#define ORXONOX_COMPILER_BORL 3#define ORXONOX_ENDIAN_LITTLE 1#define ORXONOX_ENDIAN_BIG 2#define ORXONOX_ARCHITECTURE_32 1#define ORXONOX_ARCHITECTURE_64 2/* Finds the compiler type and version.*/#if defined( _MSC_VER )#  define ORXONOX_COMPILER ORXONOX_COMPILER_MSVC#  define ORXONOX_COMP_VER _MSC_VER#elif defined( __GNUC__ )#  define ORXONOX_COMPILER ORXONOX_COMPILER_GNUC#  define ORXONOX_COMP_VER (((__GNUC__)*100) + \        (__GNUC_MINOR__*10) + \        __GNUC_PATCHLEVEL__)#elif defined( __BORLANDC__ )#  define ORXONOX_COMPILER ORXONOX_COMPILER_BORL#  define ORXONOX_COMP_VER __BCPLUSPLUS__#else#  pragma error "No known compiler. Abort! Abort!"#endif/* See if we can use __forceinline or if we need to use __inline instead */#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC#  if ORXONOX_COMP_VER >= 1200#    define FORCEINLINE __forceinline#  endif#elif defined(__MINGW32__)#  if !defined(FORCEINLINE)#    define FORCEINLINE __inline#  endif#else#  define FORCEINLINE __inline#endif/* Finds the current platform */#if defined( __WIN32__ ) || defined( _WIN32 )#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_WIN32#elif defined( __APPLE_CC__)#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_APPLE#else#  define ORXONOX_PLATFORM ORXONOX_PLATFORM_LINUX#endif    /* Find the arch type */#if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) || defined(__ia64__) || defined(__s390__) || defined(__s390x__)#  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_64#else#  define ORXONOX_ARCH_TYPE ORXONOX_ARCHITECTURE_32#endif// For generating compiler warnings - should work on any compiler// As a side note, if you start your message with 'Warning: ', the MSVC// IDE actually does catch a warning :)// FIXME: Try this on linux box. Doesn't work with msvc//#define ORXONOX_QUOTE_INPLACE(x) # x//#define ORXONOX_QUOTE(x) ORXONOX_QUOTE_INPLACE(x)//#define ORXONOX_WARN( x )  message( __FILE__ "(" QUOTE( __LINE__ ) ") : " x "\n" )//----------------------------------------------------------------------------// Windows Settings#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32// Win32 compilers use _DEBUG for specifying debug builds.#  ifdef _DEBUG#    define ORXONOX_DEBUG_MODE 1#  else#    define ORXONOX_DEBUG_MODE 0#  endif// Disable unicode support on MingW at the moment, poorly supported in stdlibc++// STLPORT fixes this though so allow if found// MinGW C++ Toolkit supports unicode and sets the define __MINGW32_TOOLKIT_UNICODE__ in _mingw.h#  if defined( __MINGW32__ ) && !defined(_STLPORT_VERSION)#    include<_mingw.h>#    if defined(__MINGW32_TOOLBOX_UNICODE__)#      define ORXONOX_UNICODE_SUPPORT 1#    else#      define ORXONOX_UNICODE_SUPPORT 0#    endif#  else#    define ORXONOX_UNICODE_SUPPORT 1#  endif#endif /* Platform Win32 *///----------------------------------------------------------------------------//----------------------------------------------------------------------------// Linux/Apple Settings#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_LINUX || ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE// A quick define to overcome different names for the same function#  define stricmp strcasecmp// Unlike the Win32 compilers, Linux compilers seem to use DEBUG for when// specifying a debug build.// (??? this is wrong, on Linux debug builds aren't marked in any way unless// you mark it yourself any way you like it -- zap ???)#  ifdef DEBUG#    define ORXONOX_DEBUG_MODE 1#  else#    define ORXONOX_DEBUG_MODE 0#  endif/* FIXME: Check what this actually is and whether we need it or not#  if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE#    define ORXONOX_PLATFORM_LIB "OrxonoxPlatform.bundle"#  else// ORXONOX_PLATFORM_LINUX#    define ORXONOX_PLATFORM_LIB "libOrxonoxPlatform.so"#  endif*/// Always enable unicode support for the moment// Perhaps disable in old versions of gcc if necessary#  define ORXONOX_UNICODE_SUPPORT 1#endif /* Patform Linux/Apple *///For apple, we always have a custom config.h file#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE#  include "config.h"#endif//----------------------------------------------------------------------------//----------------------------------------------------------------------------// Endian Settings// check for BIG_ENDIAN config flag, set ORXONOX_ENDIAN correctly#ifdef ORXONOX_CONFIG_BIG_ENDIAN#  define ORXONOX_ENDIAN ORXONOX_ENDIAN_BIG#else#  define ORXONOX_ENDIAN ORXONOX_ENDIAN_LITTLE#endif//-----------------------------------------------------------------------
    19333// fixed width integers
    19434//-----------------------------------------------------------------------
    195 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
    196 typedef __int8            int8_t;
     35#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVCtypedef __int8            int8_t;
    19736typedef __int16           int16_t;
    19837typedef __int32           int32_t;
     
    20241typedef unsigned __int32  uint32_t;
    20342typedef unsigned __int64  uint64_t;
    204 #else
    205 # include "inttypes.h"
    206 #endif
    207 
    208 namespace orxonox {
    209 #ifdef ORXONOX_DOUBLE_PRECISION
    210 typedef double Real;
    211 #else
    212 typedef float Real;
    213 #endif
    214 }
    215 
    216 
    217 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
    218 // Turn off warnings generated by long std templates
    219 // This warns about truncation to 255 characters in debug/browse info
    220 //#   pragma warning (disable : 4786)
    221 
    222 // Turn off warnings generated by long std templates
    223 // This warns about truncation to 255 characters in debug/browse info
    224 //#   pragma warning (disable : 4503)
    225 
    226 // disable: conversion from 'double' to 'float', possible loss of data
    227 // disable: conversion from 'ogg_int64_t' to 'long', possible loss of data
    228 // This has been dealt with in base_properties of the solution since the
    229 // warning primarily occurs in library header files (which are mostly
    230 // included before OrxonoxPlatform.h is)
    231 //#   pragma warning (disable : 4244)
    232 
    233 // disable: "conversion from 'size_t' to 'unsigned int', possible loss of data
    234 //#   pragma warning (disable : 4267)
    235 
    236 // disable: "truncation from 'double' to 'float'
    237 //#   pragma warning (disable : 4305)
    238 
    239 // set to level 4: "<type> needs to have dll-interface to be used by clients'
    240 // Happens on STL member variables which are not public therefore is ok
    241 #   pragma warning (disable : 4251)
    242 
    243 // disable: 'MultiTypeString' : multiple assignment operators specified
    244 // Used in MultiType and works fine so far
    245 //#   pragma warning (disable : 4522)
    246 
    247 // disable: "non dll-interface class used as base for dll-interface class"
    248 // Happens when deriving from Singleton because bug in compiler ignores
    249 // template export
    250 //#   pragma warning (disable : 4275)
    251 
    252 // disable: "C++ Exception Specification ignored"
    253 // This is because MSVC 6 did not implement all the C++ exception
    254 // specifications in the ANSI C++ draft.
    255 //#   pragma warning( disable : 4290 )
    256 
    257 // disable: "no suitable definition provided for explicit template
    258 // instantiation request" Occurs in VC7 for no justifiable reason on all
    259 // #includes of Singleton
    260 //#   pragma warning( disable: 4661)
    261 
    262 // disable: deprecation warnings when using CRT calls in VC8
    263 // These show up on all C runtime lib code in VC8, disable since they clutter
    264 // the warnings with things we may not be able to do anything about (e.g.
    265 // generated code from nvparse etc). I doubt very much that these calls
    266 // will ever be actually removed from VC anyway, it would break too much code.
    267 //#     pragma warning( disable: 4996)
    268 
    269 // disable: "conditional expression constant", always occurs on
    270 // ORXONOX_MUTEX_CONDITIONAL when no threading enabled
    271 //#   pragma warning (disable : 201)
    272 
    273 
    274 // Define the english written operators like and, or, xor
    275 #include <iso646.h>
    276 
    277 #endif /* ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC */
    278 
    279 // include visual leak detector to search for memory leaks
    280 //#include <vld.h>
    281 
    282 #endif /* _OrxonoxPlatform_H__ */
     43#else# include "inttypes.h"#endifnamespace orxonox {#ifdef ORXONOX_DOUBLE_PRECISIONtypedef double Real;#elsetypedef float Real;#endif}#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC// Turn off warnings generated by long std templates// This warns about truncation to 255 characters in debug/browse info//#   pragma warning (disable : 4786)// Turn off warnings generated by long std templates// This warns about truncation to 255 characters in debug/browse info//#   pragma warning (disable : 4503)// disable: conversion from 'double' to 'float', possible loss of data// disable: conversion from 'ogg_int64_t' to 'long', possible loss of data// This has been dealt with in base_properties of the solution since the// warning primarily occurs in library header files (which are mostly// included before OrxonoxPlatform.h is)//#   pragma warning (disable : 4244)// disable: "conversion from 'size_t' to 'unsigned int', possible loss of data//#   pragma warning (disable : 4267)// disable: "truncation from 'double' to 'float'//#   pragma warning (disable : 4305)// set to level 4: "<type> needs to have dll-interface to be used by clients'// Happens on STL member variables which are not public therefore is ok#   pragma warning (disable : 4251)// disable: 'MultiTypeString' : multiple assignment operators specified// Used in MultiType and works fine so far//#   pragma warning (disable : 4522)// disable: "non dll-interface class used as base for dll-interface class"// Happens when deriving from Singleton because bug in compiler ignores// template export//#   pragma warning (disable : 4275)// disable: "C++ Exception Specification ignored"// This is because MSVC 6 did not implement all the C++ exception// specifications in the ANSI C++ draft.//#   pragma warning( disable : 4290 )// disable: "no suitable definition provided for explicit template// instantiation request" Occurs in VC7 for no justifiable reason on all// #includes of Singleton//#   pragma warning( disable: 4661)// disable: deprecation warnings when using CRT calls in VC8// These show up on all C runtime lib code in VC8, disable since they clutter// the warnings with things we may not be able to do anything about (e.g.// generated code from nvparse etc). I doubt very much that these calls// will ever be actually removed from VC anyway, it would break too much code.//# pragma warning( disable: 4996)// disable: "conditional expression constant", always occurs on// ORXONOX_MUTEX_CONDITIONAL when no threading enabled//#   pragma warning (disable : 201)// Define the english written operators like and, or, xor#include <iso646.h>#endif /* ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC */// include visual leak detector to search for memory leaks//#include <vld.h>#endif /* _OrxonoxPlatform_H__ */
Note: See TracChangeset for help on using the changeset viewer.