VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkWin32Header.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00022 #ifndef __vtkWIN32Header_h 00023 #define __vtkWIN32Header_h 00024 00025 #ifndef __VTK_SYSTEM_INCLUDES__INSIDE 00026 Do_not_include_vtkWin32Header_directly__vtkSystemIncludes_includes_it; 00027 #endif 00028 00029 #include "vtkConfigure.h" 00030 #include "vtkABI.h" 00031 00032 /* 00033 * This is a support for files on the disk that are larger than 2GB. 00034 * Since this is the first place that any include should happen, do this here. 00035 */ 00036 #ifdef VTK_REQUIRE_LARGE_FILE_SUPPORT 00037 # ifndef _LARGEFILE_SOURCE 00038 # define _LARGEFILE_SOURCE 00039 # endif 00040 # ifndef _LARGE_FILES 00041 # define _LARGE_FILES 00042 # endif 00043 # ifndef _FILE_OFFSET_BITS 00044 # define _FILE_OFFSET_BITS 64 00045 # endif 00046 #endif 00047 00048 // 00049 // Windows specific stuff------------------------------------------ 00050 #if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) 00051 00052 // define strict header for windows 00053 #ifndef STRICT 00054 #define STRICT 00055 #endif 00056 00057 #ifdef VTK_USE_ANSI_STDLIB 00058 #ifndef NOMINMAX 00059 #define NOMINMAX 00060 #endif 00061 #endif 00062 00063 #endif 00064 00065 // Never include the windows header here when building VTK itself. 00066 #if defined(VTK_IN_VTK) 00067 # undef VTK_INCLUDE_WINDOWS_H 00068 #endif 00069 00070 #if defined(_WIN32) 00071 // Include the windows header here only if requested by user code. 00072 # if defined(VTK_INCLUDE_WINDOWS_H) 00073 # include <windows.h> 00074 // Define types from the windows header file. 00075 typedef DWORD vtkWindowsDWORD; 00076 typedef PVOID vtkWindowsPVOID; 00077 typedef LPVOID vtkWindowsLPVOID; 00078 typedef HANDLE vtkWindowsHANDLE; 00079 typedef LPTHREAD_START_ROUTINE vtkWindowsLPTHREAD_START_ROUTINE; 00080 # else 00081 // Define types from the windows header file. 00082 typedef unsigned long vtkWindowsDWORD; 00083 typedef void* vtkWindowsPVOID; 00084 typedef vtkWindowsPVOID vtkWindowsLPVOID; 00085 typedef vtkWindowsPVOID vtkWindowsHANDLE; 00086 typedef vtkWindowsDWORD (__stdcall *vtkWindowsLPTHREAD_START_ROUTINE)(vtkWindowsLPVOID); 00087 # endif 00088 // Enable workaround for windows header name mangling. 00089 // See VTK/Utilities/Upgrading/README.WindowsMangling.txt for details. 00090 # define VTK_WORKAROUND_WINDOWS_MANGLE 00091 00092 #if ( _MSC_VER >= 1300 ) // Visual studio .NET 00093 #pragma warning ( disable : 4311 ) 00094 #pragma warning ( disable : 4312 ) 00095 # define vtkGetWindowLong GetWindowLongPtr 00096 # define vtkSetWindowLong SetWindowLongPtr 00097 # define vtkLONG LONG_PTR 00098 # define vtkGWL_WNDPROC GWLP_WNDPROC 00099 # define vtkGWL_HINSTANCE GWLP_HINSTANCE 00100 # define vtkGWL_USERDATA GWLP_USERDATA 00101 #else // older or non-Visual studio 00102 # define vtkGetWindowLong GetWindowLong 00103 # define vtkSetWindowLong SetWindowLong 00104 # define vtkLONG LONG 00105 # define vtkGWL_WNDPROC GWL_WNDPROC 00106 # define vtkGWL_HINSTANCE GWL_HINSTANCE 00107 # define vtkGWL_USERDATA GWL_USERDATA 00108 #endif // 00109 00110 #endif 00111 00112 #if defined(_MSC_VER) 00113 // Enable MSVC compiler warning messages that are useful but off by default. 00114 # pragma warning ( default : 4263 ) /* no override, call convention differs */ 00115 // Disable MSVC compiler warning messages that often occur in valid code. 00116 # if !defined(VTK_DISPLAY_WIN32_WARNINGS) 00117 # pragma warning ( disable : 4003 ) /* not enough actual parameters for macro */ 00118 # pragma warning ( disable : 4097 ) /* typedef is synonym for class */ 00119 # pragma warning ( disable : 4127 ) /* conditional expression is constant */ 00120 # pragma warning ( disable : 4244 ) /* possible loss in conversion */ 00121 # pragma warning ( disable : 4251 ) /* missing DLL-interface */ 00122 # pragma warning ( disable : 4305 ) /* truncation from type1 to type2 */ 00123 # pragma warning ( disable : 4309 ) /* truncation of constant value */ 00124 # pragma warning ( disable : 4514 ) /* unreferenced inline function */ 00125 # pragma warning ( disable : 4706 ) /* assignment in conditional expression */ 00126 # pragma warning ( disable : 4710 ) /* function not inlined */ 00127 # pragma warning ( disable : 4786 ) /* identifier truncated in debug info */ 00128 # endif 00129 #endif 00130 00131 // MSVC 6.0 in release mode will warn about code it produces with its 00132 // optimizer. Disable the warnings specifically for this 00133 // configuration. Real warnings will be revealed by a debug build or 00134 // by other compilers. 00135 #if defined(_MSC_VER) && (_MSC_VER < 1300) && defined(NDEBUG) 00136 # pragma warning ( disable : 4701 ) /* Variable may be used uninitialized. */ 00137 # pragma warning ( disable : 4702 ) /* Unreachable code. */ 00138 #endif 00139 00140 #if defined(__BORLANDC__) 00141 // Disable Borland compiler warning messages that often occur in valid code. 00142 # if !defined(VTK_DISPLAY_WIN32_WARNINGS) 00143 # pragma warn -8004 /* assigned a value that is never used */ 00144 # pragma warn -8008 /* condition is always false */ 00145 # pragma warn -8026 /* funcs w/class-by-value args not expanded inline */ 00146 # pragma warn -8027 /* functions w/ do/for/while not expanded inline */ 00147 # pragma warn -8060 /* possibly incorrect assignment */ 00148 # pragma warn -8066 /* unreachable code */ 00149 # pragma warn -8072 /* suspicious pointer arithmetic */ 00150 # endif 00151 #endif 00152 00153 // Now set up all of the export macros for the VTK kits 00154 #if defined(VTK_BUILD_SHARED_LIBS) 00155 00156 #define VTK_EXPORT VTK_ABI_EXPORT 00157 00158 #if defined(vtkCommon_EXPORTS) 00159 #define VTK_COMMON_EXPORT VTK_ABI_EXPORT 00160 #else 00161 #define VTK_COMMON_EXPORT VTK_ABI_IMPORT 00162 #endif 00163 00164 #if defined(vtkFiltering_EXPORTS) 00165 #define VTK_FILTERING_EXPORT VTK_ABI_EXPORT 00166 #else 00167 #define VTK_FILTERING_EXPORT VTK_ABI_IMPORT 00168 #endif 00169 00170 #if defined(vtkImaging_EXPORTS) 00171 #define VTK_IMAGING_EXPORT VTK_ABI_EXPORT 00172 #else 00173 #define VTK_IMAGING_EXPORT VTK_ABI_IMPORT 00174 #endif 00175 00176 #if defined(vtkGenericFiltering_EXPORTS) 00177 #define VTK_GENERIC_FILTERING_EXPORT VTK_ABI_EXPORT 00178 #else 00179 #define VTK_GENERIC_FILTERING_EXPORT VTK_ABI_IMPORT 00180 #endif 00181 00182 #if defined(vtkGeovis_EXPORTS) 00183 #define VTK_GEOVIS_EXPORT VTK_ABI_EXPORT 00184 #else 00185 #define VTK_GEOVIS_EXPORT VTK_ABI_IMPORT 00186 #endif 00187 00188 #if defined(vtkGraphics_EXPORTS) 00189 #define VTK_GRAPHICS_EXPORT VTK_ABI_EXPORT 00190 #else 00191 #define VTK_GRAPHICS_EXPORT VTK_ABI_IMPORT 00192 #endif 00193 00194 #if defined(vtkGraphicsJava_EXPORTS) 00195 #define VTK_GRAPHICS_JAVA_EXPORT VTK_ABI_EXPORT 00196 #else 00197 #define VTK_GRAPHICS_JAVA_EXPORT VTK_ABI_IMPORT 00198 #endif 00199 00200 #if defined(vtkInfovis_EXPORTS) 00201 #define VTK_INFOVIS_EXPORT VTK_ABI_EXPORT 00202 #else 00203 #define VTK_INFOVIS_EXPORT VTK_ABI_IMPORT 00204 #endif 00205 00206 #if defined(vtkIO_EXPORTS) 00207 #define VTK_IO_EXPORT VTK_ABI_EXPORT 00208 #else 00209 #define VTK_IO_EXPORT VTK_ABI_IMPORT 00210 #endif 00211 00212 #if defined(vtkRendering_EXPORTS) 00213 #define VTK_RENDERING_EXPORT VTK_ABI_EXPORT 00214 #else 00215 #define VTK_RENDERING_EXPORT VTK_ABI_IMPORT 00216 #endif 00217 00218 #if defined(vtkTextAnalysis_EXPORTS) 00219 #define VTK_TEXT_ANALYSIS_EXPORT VTK_ABI_EXPORT 00220 #else 00221 #define VTK_TEXT_ANALYSIS_EXPORT VTK_ABI_IMPORT 00222 #endif 00223 00224 #if defined(vtkVolumeRendering_EXPORTS) 00225 #define VTK_VOLUMERENDERING_EXPORT VTK_ABI_EXPORT 00226 #else 00227 #define VTK_VOLUMERENDERING_EXPORT VTK_ABI_IMPORT 00228 #endif 00229 00230 #if defined(vtkHybrid_EXPORTS) 00231 #define VTK_HYBRID_EXPORT VTK_ABI_EXPORT 00232 #else 00233 #define VTK_HYBRID_EXPORT VTK_ABI_IMPORT 00234 #endif 00235 00236 #if defined(vtkWidgets_EXPORTS) 00237 #define VTK_WIDGETS_EXPORT VTK_ABI_EXPORT 00238 #else 00239 #define VTK_WIDGETS_EXPORT VTK_ABI_IMPORT 00240 #endif 00241 00242 #if defined(vtkParallel_EXPORTS) 00243 #define VTK_PARALLEL_EXPORT VTK_ABI_EXPORT 00244 #else 00245 #define VTK_PARALLEL_EXPORT VTK_ABI_IMPORT 00246 #endif 00247 00248 #if defined(vtkViews_EXPORTS) 00249 #define VTK_VIEWS_EXPORT VTK_ABI_EXPORT 00250 #else 00251 #define VTK_VIEWS_EXPORT VTK_ABI_IMPORT 00252 #endif 00253 00254 #if defined(vtkCharts_EXPORTS) 00255 #define VTK_CHARTS_EXPORT VTK_ABI_EXPORT 00256 #else 00257 #define VTK_CHARTS_EXPORT VTK_ABI_IMPORT 00258 #endif 00259 00260 #else 00261 #define VTK_COMMON_EXPORT 00262 #define VTK_FILTERING_EXPORT 00263 #define VTK_GENERIC_FILTERING_EXPORT 00264 #define VTK_GEOVIS_EXPORT 00265 #define VTK_GRAPHICS_EXPORT 00266 #define VTK_GRAPHICS_JAVA_EXPORT 00267 #define VTK_IMAGING_EXPORT 00268 #define VTK_INFOVIS_EXPORT 00269 #define VTK_IO_EXPORT 00270 #define VTK_RENDERING_EXPORT 00271 #define VTK_TEXT_ANALYSIS_EXPORT 00272 #define VTK_VOLUMERENDERING_EXPORT 00273 #define VTK_HYBRID_EXPORT 00274 #define VTK_WIDGETS_EXPORT 00275 #define VTK_PARALLEL_EXPORT 00276 #define VTK_VIEWS_EXPORT 00277 #define VTK_CHARTS_EXPORT 00278 #define VTK_EXPORT 00279 #endif 00280 00281 // this is exclusively for the tcl Init functions 00282 #define VTK_TK_EXPORT VTK_ABI_EXPORT 00283 00284 #endif