00001 #ifndef __StdHeaders_H__ 00002 #define __StdHeaders_H__ 00003 00004 #ifdef __BORLANDC__ 00005 #define __STD_ALGORITHM 00006 #endif 00007 00008 #if defined ( OGRE_GCC_VISIBILITY ) && (OGRE_PLATFORM != OGRE_PLATFORM_APPLE && OGRE_PLATFORM != OGRE_PLATFORM_IPHONE) 00009 /* Until libstdc++ for gcc 4.2 is released, we have to declare all 00010 * symbols in libstdc++.so externally visible, otherwise we end up 00011 * with them marked as hidden by -fvisible=hidden. 00012 * 00013 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20218 00014 * 00015 * Due to a more strict linker included with Xcode 4, this is disabled on Mac OS X and iOS. 00016 * The reason? It changes the visibility of Boost functions. The mismatch between visibility Boost when used in Ogre (default) 00017 * and Boost when compiled (hidden) results in mysterious link errors such as "Bad codegen, pointer diff". 00018 */ 00019 # pragma GCC visibility push(default) 00020 #endif 00021 00022 #include <cassert> 00023 #include <cstdio> 00024 #include <cstdlib> 00025 #include <ctime> 00026 #include <cstring> 00027 #include <cstdarg> 00028 #include <cmath> 00029 00030 // STL containers 00031 #include <vector> 00032 #include <map> 00033 #include <string> 00034 #include <set> 00035 #include <list> 00036 #include <deque> 00037 #include <queue> 00038 #include <bitset> 00039 00040 // Note - not in the original STL, but exists in SGI STL and STLport 00041 // For gcc 4.3 see http://gcc.gnu.org/gcc-4.3/changes.html 00042 #if (OGRE_COMPILER == OGRE_COMPILER_GNUC) && !defined(STLPORT) 00043 # if OGRE_COMP_VER >= 430 00044 # include <tr1/unordered_map> 00045 # include <tr1/unordered_set> 00046 # else 00047 # include <ext/hash_map> 00048 # include <ext/hash_set> 00049 # endif 00050 #else 00051 # if (OGRE_COMPILER == OGRE_COMPILER_MSVC) && !defined(STLPORT) && OGRE_COMP_VER >= 1600 // VC++ 10.0 00052 # include <unordered_map> 00053 # include <unordered_set> 00054 # else 00055 # include <hash_set> 00056 # include <hash_map> 00057 # endif 00058 #endif 00059 00060 // STL algorithms & functions 00061 #include <algorithm> 00062 #include <functional> 00063 #include <limits> 00064 00065 // C++ Stream stuff 00066 #include <fstream> 00067 #include <iostream> 00068 #include <iomanip> 00069 #include <sstream> 00070 00071 #ifdef __BORLANDC__ 00072 namespace Ogre 00073 { 00074 using namespace std; 00075 } 00076 #endif 00077 00078 extern "C" { 00079 00080 # include <sys/types.h> 00081 # include <sys/stat.h> 00082 00083 } 00084 00085 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 00086 # undef min 00087 # undef max 00088 # if defined( __MINGW32__ ) 00089 # include <unistd.h> 00090 # endif 00091 #endif 00092 00093 #if OGRE_PLATFORM == OGRE_PLATFORM_LINUX 00094 extern "C" { 00095 00096 # include <unistd.h> 00097 # include <dlfcn.h> 00098 00099 } 00100 #endif 00101 00102 #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE || OGRE_PLATFORM == OGRE_PLATFORM_IPHONE 00103 extern "C" { 00104 # include <unistd.h> 00105 # include <sys/param.h> 00106 # include <CoreFoundation/CoreFoundation.h> 00107 } 00108 #endif 00109 00110 #if OGRE_THREAD_SUPPORT 00111 # if !defined(NOMINMAX) && defined(_MSC_VER) 00112 # define NOMINMAX // required to stop windows.h messing up std::min 00113 # endif 00114 # include "Threading/OgreThreadHeaders.h" 00115 #endif 00116 00117 #if defined ( OGRE_GCC_VISIBILITY ) && (OGRE_PLATFORM != OGRE_PLATFORM_APPLE && OGRE_PLATFORM != OGRE_PLATFORM_IPHONE) 00118 # pragma GCC visibility pop 00119 #endif 00120 #endif
Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Sat Jan 14 2012 18:40:44