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