VTK
vtkWin32Header.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkWin32Header.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
22 #ifndef vtkWIN32Header_h
23 #define vtkWIN32Header_h
24 
25 #ifndef __VTK_SYSTEM_INCLUDES__INSIDE
27 #endif
28 
29 #include "vtkConfigure.h"
30 #include "vtkABI.h"
31 
32 /*
33  * This is a support for files on the disk that are larger than 2GB.
34  * Since this is the first place that any include should happen, do this here.
35  */
36 #ifdef VTK_REQUIRE_LARGE_FILE_SUPPORT
37 # ifndef _LARGEFILE_SOURCE
38 # define _LARGEFILE_SOURCE
39 # endif
40 # ifndef _LARGE_FILES
41 # define _LARGE_FILES
42 # endif
43 # ifndef _FILE_OFFSET_BITS
44 # define _FILE_OFFSET_BITS 64
45 # endif
46 #endif
47 
48 //
49 // Windows specific stuff------------------------------------------
50 #if defined(_WIN32) || defined(WIN32)
51 
52 // define strict header for windows
53 #ifndef STRICT
54 #define STRICT
55 #endif
56 
57 #ifndef NOMINMAX
58 #define NOMINMAX
59 #endif
60 
61 #endif
62 
63 // Never include the windows header here when building VTK itself.
64 #if defined(VTK_IN_VTK)
65 # undef VTK_INCLUDE_WINDOWS_H
66 #endif
67 
68 #if defined(_WIN32)
69  // Include the windows header here only if requested by user code.
70 # if defined(VTK_INCLUDE_WINDOWS_H)
71 # include <windows.h>
72  // Define types from the windows header file.
73  typedef DWORD vtkWindowsDWORD;
74  typedef PVOID vtkWindowsPVOID;
75  typedef LPVOID vtkWindowsLPVOID;
76  typedef HANDLE vtkWindowsHANDLE;
77  typedef LPTHREAD_START_ROUTINE vtkWindowsLPTHREAD_START_ROUTINE;
78 # else
79  // Define types from the windows header file.
80  typedef unsigned long vtkWindowsDWORD;
81  typedef void* vtkWindowsPVOID;
82  typedef vtkWindowsPVOID vtkWindowsLPVOID;
83  typedef vtkWindowsPVOID vtkWindowsHANDLE;
84  typedef vtkWindowsDWORD (__stdcall *vtkWindowsLPTHREAD_START_ROUTINE)(vtkWindowsLPVOID);
85 # endif
86  // Enable workaround for windows header name mangling.
87  // See VTK/Utilities/Upgrading/README.WindowsMangling.txt for details.
88 #if !defined(__WRAP__)
89 # define VTK_WORKAROUND_WINDOWS_MANGLE
90 #endif
91 
92 #if defined(_MSC_VER) // Visual studio
93 #pragma warning ( disable : 4311 )
94 #pragma warning ( disable : 4312 )
95 #endif //
96 #define vtkGetWindowLong GetWindowLongPtr
97 #define vtkSetWindowLong SetWindowLongPtr
98 #define vtkLONG LONG_PTR
99 #define vtkGWL_WNDPROC GWLP_WNDPROC
100 #define vtkGWL_HINSTANCE GWLP_HINSTANCE
101 #define vtkGWL_USERDATA GWLP_USERDATA
102 
103 #endif
104 
105 #if defined(_MSC_VER)
106  // Enable MSVC compiler warning messages that are useful but off by default.
107 # pragma warning ( default : 4263 ) /* no override, call convention differs */
108  // Disable MSVC compiler warning messages that often occur in valid code.
109 # if !defined(VTK_DISPLAY_WIN32_WARNINGS)
110 # pragma warning ( disable : 4003 ) /* not enough actual parameters for macro */
111 # pragma warning ( disable : 4097 ) /* typedef is synonym for class */
112 # pragma warning ( disable : 4127 ) /* conditional expression is constant */
113 # pragma warning ( disable : 4244 ) /* possible loss in conversion */
114 # pragma warning ( disable : 4251 ) /* missing DLL-interface */
115 # pragma warning ( disable : 4305 ) /* truncation from type1 to type2 */
116 # pragma warning ( disable : 4309 ) /* truncation of constant value */
117 # pragma warning ( disable : 4514 ) /* unreferenced inline function */
118 # pragma warning ( disable : 4706 ) /* assignment in conditional expression */
119 # pragma warning ( disable : 4710 ) /* function not inlined */
120 # pragma warning ( disable : 4786 ) /* identifier truncated in debug info */
121 # endif
122 #endif
123 
124 #if defined(__BORLANDC__)
125  // Disable Borland compiler warning messages that often occur in valid code.
126 # if !defined(VTK_DISPLAY_WIN32_WARNINGS)
127 # pragma warn -8004 /* assigned a value that is never used */
128 # pragma warn -8008 /* condition is always false */
129 # pragma warn -8026 /* funcs w/class-by-value args not expanded inline */
130 # pragma warn -8027 /* functions w/ do/for/while not expanded inline */
131 # pragma warn -8060 /* possibly incorrect assignment */
132 # pragma warn -8066 /* unreachable code */
133 # pragma warn -8072 /* suspicious pointer arithmetic */
134 # endif
135 #endif
136 
137 // Now set up the generic VTK export macro.
138 #if defined(VTK_BUILD_SHARED_LIBS)
139 # define VTK_EXPORT VTK_ABI_EXPORT
140 #else
141 # define VTK_EXPORT
142 #endif
143 
144 // this is exclusively for the tcl Init functions
145 #define VTK_TK_EXPORT VTK_ABI_EXPORT
146 
147 #endif
148 // VTK-HeaderTest-Exclude: vtkWin32Header.h
Do_not_include_vtkWin32Header_directly__vtkSystemIncludes_includes_it