00001 // Wild Magic Source Code 00002 // David Eberly 00003 // http://www.geometrictools.com 00004 // Copyright (c) 1998-2008 00005 // 00006 // This library is free software; you can redistribute it and/or modify it 00007 // under the terms of the GNU Lesser General Public License as published by 00008 // the Free Software Foundation; either version 2.1 of the License, or (at 00009 // your option) any later version. The license is available for reading at 00010 // either of the locations: 00011 // http://www.gnu.org/copyleft/lgpl.html 00012 // http://www.geometrictools.com/License/WildMagicLicense.pdf 00013 // 00014 // Version: 4.0.1 (2006/11/14) 00015 00016 #ifndef WM4PLATFORMS_H 00017 #define WM4PLATFORMS_H 00018 00019 // Platform-specific information goes in this header file. The defines to 00020 // control which platform is included are: 00021 // 00022 // _WIN32 : Microsoft Windows XP 00023 // WIN32 : Microsoft Windows XP 00024 // __MINGW32__ : Minimalist GNU for Windows 00025 // __CYGWIN__ : Cygwin 00026 // __APPLE__ : Macintosh OS X (10.2.3 or higher required) 00027 // __sgi : Silicon Graphics Irix 00028 // __sun : Sun Solaris 00029 // <none> : Linux 00030 // 00031 // Add others as needed. 00032 00033 //---------------------------------------------------------------------------- 00034 // Minimalist GNU for Windows 00035 //---------------------------------------------------------------------------- 00036 #if defined(__MINGW32__) 00037 00038 typedef long long Integer64; 00039 00040 #elif defined(__CYGWIN__) 00041 //---------------------------------------------------------------------------- 00042 // Cygwin 00043 //---------------------------------------------------------------------------- 00044 00045 #ifndef _WIN32 00046 #define _WIN32 00047 #endif 00048 00049 #ifndef WIN32 00050 #define WIN32 00051 #endif 00052 00053 typedef long long Integer64; 00054 00055 //---------------------------------------------------------------------------- 00056 // Microsoft Windows 2000/XP platform 00057 //---------------------------------------------------------------------------- 00058 #elif defined(_WIN32) || defined(WIN32) 00059 00060 #if defined(_MSC_VER) 00061 00062 // Microsoft Visual C++ specific pragmas. MSVC6 is version 12.00, MSVC7.0 is 00063 // version 13.00, and MSVC7.1 is version 13.10. MSVC8.0 is version 14.00. 00064 #if _MSC_VER < 1300 00065 #define WM4_USING_VC6 00066 #elif _MSC_VER < 1310 00067 #define WM4_USING_VC70 00068 #elif _MSC_VER < 1400 00069 #define WM4_USING_VC71 00070 #else 00071 #define WM4_USING_VC80 00072 #endif 00073 00074 #if defined(WM4_USING_VC6) 00075 00076 // Disable the warning "non dll-interface class FOO used as base for 00077 // dll-interface class BAR." These occur in the derivations 00078 // class Binary2D : public ImageInt2D; class Binary3D : public ImageInt3D; 00079 //#pragma warning( disable : 4275 ) 00080 00081 // Disable the warning about truncating the debug names to 255 characters. 00082 // This warning shows up often with STL code in MSVC6, but not MSVC7. 00083 #pragma warning( disable : 4786 ) 00084 00085 // This warning is disabled because MSVC6 warns about not finding 00086 // implementations for the pure virtual functions that occur in the template 00087 // classes 'template <class Real>' when explicitly instantiating the classes. 00088 // NOTE: If you create your own template classes that will be explicitly 00089 // instantiated, you should re-enable the warning to make sure that in fact 00090 // all your member data and functions have been defined and implemented. 00091 #pragma warning( disable : 4661 ) 00092 00093 #endif 00094 00095 // The use of WM4_FOUNDATION_ITEM to export an entire class generates warnings 00096 // when member data and functions involving templates or inlines occur. To 00097 // avoid the warning, WM4_FOUNDATION_ITEM can be applied only to those items 00098 // that really need to be exported. 00099 #pragma warning( disable : 4251 ) 00100 00101 typedef __int64 Integer64; 00102 00103 #endif 00104 //---------------------------------------------------------------------------- 00105 00106 //---------------------------------------------------------------------------- 00107 // Macintosh OS X platform 00108 //---------------------------------------------------------------------------- 00109 #elif defined(__APPLE__) 00110 00111 #if defined(__BIG_ENDIAN__) 00112 #define WM4_BIG_ENDIAN 00113 #else 00114 #define WM4_LITTLE_ENDIAN 00115 #endif 00116 00117 #include <stdint.h> 00118 typedef int64_t Integer64; 00119 //---------------------------------------------------------------------------- 00120 00121 //---------------------------------------------------------------------------- 00122 // Linux platform 00123 //---------------------------------------------------------------------------- 00124 #else 00125 00126 #include <stdint.h> 00127 typedef int64_t Integer64; 00128 00129 #endif 00130 //---------------------------------------------------------------------------- 00131 00132 #endif