VTK-m  2.2
OptionParser.h
Go to the documentation of this file.
1 //============================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //============================================================================
10 #ifndef vtk_m_cont_internal_OptionParser_h
11 #define vtk_m_cont_internal_OptionParser_h
12 
13 // For warning suppression macros:
15 
17 
18 // Preemptively load any includes required by optionparser.h so they don't get embedded in
19 // our namespace.
20 #ifdef _MSC_VER
21 #include <intrin.h>
22 #pragma intrinsic(_BitScanReverse)
23 #endif
24 
25 // We are embedding the code in optionparser.h in a VTK-m namespace so that if other code
26 // is using a different version the two don't get mixed up.
27 
28 namespace vtkm
29 {
30 namespace cont
31 {
32 namespace internal
33 {
34 
35 
36 // Check to make sure that optionparser.h has not been included before. If it has, remove its
37 // header guard so we can include it again under our namespace.
38 #ifdef OPTIONPARSER_H_
39 #undef OPTIONPARSER_H_
40 #define VTK_M_REMOVED_OPTIONPARSER_HEADER_GUARD
41 #endif
42 
43 // Include from third party.
44 // @cond NONE
45 #include <vtkm/thirdparty/optionparser/vtkmoptionparser/optionparser.h>
46 // @endcond
47 
48 // Now restore the header guards as before so that other includes of (possibly different versions
49 // of) optionparser.h work as expected.
50 #ifdef VTK_M_REMOVED_OPTIONPARSER_HEADER_GUARD
51 // Keep header guard, but remove the macro we defined to detect that it was there.
52 #undef VTK_M_REMOVED_OPTIONPARSER_HEADER_GUARD
53 #else
54 // Remove the header guard for other inclusion.
55 #undef OPTIONPARSER_H_
56 #endif
57 
58 } // namespace vtkm::cont::internal
59 } // namespace vtkm::cont
60 } // namespace vtkm
61 
63 
64 #endif //vtk_m_cont_internal_OptionParser_h
VTKM_THIRDPARTY_POST_INCLUDE
#define VTKM_THIRDPARTY_POST_INCLUDE
Definition: Configure.h:192
vtkm
Groups connected points that have the same field value.
Definition: Atomic.h:19
ExportMacros.h
VTKM_THIRDPARTY_PRE_INCLUDE
#define VTKM_THIRDPARTY_PRE_INCLUDE
Definition: Configure.h:191