Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 1, 2008, 1:10:46 AM (17 years ago)
Author:
rgrieder
Message:

SVN doesn't seem to like me. Reverted some really badly converted line endings.

File:
1 edited

Legend:

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

    r1494 r1495  
    11/*
    22 *   ORXONOX - the hottest 3D action shooter ever to exist
    3  *                    > www.orxonox.net < *
     3 *                    > www.orxonox.net <
     4 *
    45 *
    56 *   License notice:
     
    2526 *
    2627 */
     28
    2729/**
    2830 @file
     
    3032        copy of the file found in the Ogre source code (OgrePlatform.h).
    3133 */
    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//-----------------------------------------------------------------------
     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//-----------------------------------------------------------------------
    33193// fixed width integers
    34194//-----------------------------------------------------------------------
    35 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVCtypedef __int8            int8_t;
     195#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
     196typedef __int8            int8_t;
    36197typedef __int16           int16_t;
    37198typedef __int32           int32_t;
     
    41202typedef unsigned __int32  uint32_t;
    42203typedef unsigned __int64  uint64_t;
    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__ */
     204#else
     205# include "inttypes.h"
     206#endif
     207
     208namespace orxonox {
     209#ifdef ORXONOX_DOUBLE_PRECISION
     210typedef double Real;
     211#else
     212typedef 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__ */
Note: See TracChangeset for help on using the changeset viewer.