parent
741cc86a95
commit
295ed1ec9f
@ -1,22 +0,0 @@
|
||||
/*=========================================================================
|
||||
|
||||
Program: Visualization Toolkit
|
||||
Module: vtkVTK_USE_IMPLICIT_ARRAYS.h
|
||||
|
||||
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||||
All rights reserved.
|
||||
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. See the above copyright notice for more information.
|
||||
|
||||
=========================================================================*/
|
||||
|
||||
#ifndef vtkVTK_USE_IMPLICIT_ARRAYS_h
|
||||
#define vtkVTK_USE_IMPLICIT_ARRAYS_h
|
||||
|
||||
// defined if VTK provides the vtkImplicitArray classes
|
||||
#cmakedefine VTK_BUILD_IMPLICIT_ARRAYS
|
||||
|
||||
#endif // vtkVTK_USE_IMPLICIT_ARRAYS_h
|
@ -0,0 +1,78 @@
|
||||
option(VTK_DISPATCH_AFFINE_ARRAYS "Include implicit vtkDataArray subclasses based on an affine function backend in dispatcher" OFF)
|
||||
option(VTK_DISPATCH_CONSTANT_ARRAYS "Include implicit vtkDataArray subclasses based on a constant backend in dispatcher" OFF)
|
||||
option(VTK_DISPATCH_STD_FUNCTION_ARRAYS "Include implicit vtkDataArray subclasses based on std::function in dispatcher" OFF)
|
||||
mark_as_advanced(
|
||||
VTK_DISPATCH_CONSTANT_ARRAYS
|
||||
VTK_DISPATCH_AFFINE_ARRAYS
|
||||
VTK_DISPATCH_STD_FUNCTION_ARRAYS
|
||||
)
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/vtkVTK_DISPATCH_IMPLICIT_ARRAYS.h.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/vtkVTK_DISPATCH_IMPLICIT_ARRAYS.h"
|
||||
@ONLY)
|
||||
|
||||
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/vtkCreateArrayDispatchImplicitList.cmake")
|
||||
vtkArrayDispatchImplicit_default_array_setup()
|
||||
vtkArrayDispatchImplicit_generate_array_header(VTK_ARRAYDISPATCH_IMPLICIT_ARRAY_LIST)
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/vtkArrayDispatchImplicitArrayList.h.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/vtkArrayDispatchImplicitArrayList.h"
|
||||
@ONLY)
|
||||
|
||||
set(instantiation_sources)
|
||||
foreach (INSTANTIATION_VALUE_TYPE IN LISTS vtkArrayDispatchImplicit_all_types)
|
||||
# only instantiate fundamental types, not typedefs
|
||||
if (INSTANTIATION_VALUE_TYPE STREQUAL "vtkIdType")
|
||||
continue()
|
||||
endif ()
|
||||
# create a file suffix from the type
|
||||
string(REPLACE " " "_" _suffix "${INSTANTIATION_VALUE_TYPE}")
|
||||
|
||||
list(APPEND _list "vtkAffineArrayInstantiate")
|
||||
list(APPEND _list "vtkConstantArrayInstantiate")
|
||||
list(APPEND _list "vtkStdFunctionArrayInstantiate")
|
||||
|
||||
# generate cxx file to instantiate template with this type
|
||||
foreach (_prefix IN LISTS _list)
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/${_prefix}.cxx.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${_prefix}_${_suffix}.cxx"
|
||||
@ONLY)
|
||||
list(APPEND instantiation_sources
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${_prefix}_${_suffix}.cxx")
|
||||
endforeach ()
|
||||
endforeach ()
|
||||
|
||||
set(headers
|
||||
vtkAffineArray.h
|
||||
vtkAffineImplicitBackend.h
|
||||
vtkConstantArray.h
|
||||
vtkConstantImplicitBackend.h
|
||||
vtkImplicitArrayTraits.h
|
||||
vtkStdFunctionArray.h
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/vtkVTK_DISPATCH_IMPLICIT_ARRAYS.h"
|
||||
)
|
||||
|
||||
set(template_classes
|
||||
vtkImplicitArray
|
||||
)
|
||||
|
||||
set(sources
|
||||
${instantiation_sources}
|
||||
)
|
||||
|
||||
vtk_module_add_module(VTK::CommonImplicitArrays
|
||||
HEADERS ${headers}
|
||||
TEMPLATE_CLASSES ${template_classes}
|
||||
SOURCES ${sources}
|
||||
)
|
||||
|
||||
vtk_add_test_mangling(VTK::CommonImplicitArrays
|
||||
EXEMPTIONS GetVTKVersion)
|
||||
|
||||
|
||||
vtk_module_compile_features(VTK::CommonImplicitArrays
|
||||
PUBLIC
|
||||
cxx_std_11)
|
@ -0,0 +1 @@
|
||||
add_subdirectory(Cxx)
|
@ -0,0 +1,10 @@
|
||||
vtk_add_test_cxx(vtkCommonImplicitArrayCxxTests tests
|
||||
NO_DATA NO_OUTPUT NO_VALID
|
||||
TestAffineArray.cxx
|
||||
TestConstantArray.cxx
|
||||
TestImplicitArraysBase.cxx
|
||||
TestImplicitArrayTraits.cxx
|
||||
TestStdFunctionArray.cxx
|
||||
)
|
||||
|
||||
vtk_test_cxx_executable(vtkCommonImplicitArrayCxxTests tests)
|
@ -0,0 +1,14 @@
|
||||
NAME
|
||||
VTK::CommonImplicitArrays
|
||||
LIBRARY_NAME
|
||||
vtkCommonImplicitArrays
|
||||
DESCRIPTION
|
||||
A VTK library for the for the vtkImplicitArray framework
|
||||
KIT
|
||||
VTK::Common
|
||||
GROUPS
|
||||
StandAlone
|
||||
DEPENDS
|
||||
VTK::CommonCore
|
||||
TEST_DEPENDS
|
||||
VTK::TestingCore
|
@ -0,0 +1 @@
|
||||
@VTK_ARRAYDISPATCH_IMPLICIT_ARRAY_LIST@
|
@ -0,0 +1,196 @@
|
||||
# This file contains macros that are used by VTK to generate the list of
|
||||
# implicit arrays used by the vtkArrayDispatch system.
|
||||
#
|
||||
# There are a number of CMake variables that control the final array list. At
|
||||
# the high level, the following options enable/disable predefined categories of
|
||||
# arrays:
|
||||
#
|
||||
# - VTK_DISPATCH_AFFINE_ARRAYS (default: OFF)
|
||||
# Include vtkAffineArray<ValueType> for the basic types supported
|
||||
# by VTK.
|
||||
# - VTK_DISPATCH_CONSTANT_ARRAYS (default: OFF)
|
||||
# Include vtkConstantArray<ValueType> for the basic types supported
|
||||
# by VTK.
|
||||
# - VTK_DISPATCH_STD_FUNCTION_ARRAYS (default: OFF)
|
||||
# Include vtkStdFunctionArray<ValueType> for the basic types supported
|
||||
# by VTK.
|
||||
#
|
||||
# At a lower level, specific arrays can be added to the list individually in
|
||||
# two ways:
|
||||
#
|
||||
# For templated classes, set the following variables:
|
||||
# - vtkArrayDispatchImplicit_containers:
|
||||
# List of template class names.
|
||||
# - vtkArrayDispatchImplicit_[template class name]_types:
|
||||
# For the specified template class, add an entry to the array list that
|
||||
# instantiates the container for each type listed here.
|
||||
# - vtkArrayDispatchImplicit_[template class name]_header
|
||||
# Specifies the header file to include for the specified template class.
|
||||
#
|
||||
# Both templated and non-templated arrays can be added using these variables:
|
||||
# - vtkArrayDispatchImplicit_extra_arrays:
|
||||
# List of arrays to add to the list.
|
||||
# - vtkArrayDispatchImplicit_extra_headers:
|
||||
# List of headers to include.
|
||||
#
|
||||
################################ Example #######################################
|
||||
#
|
||||
# The cmake call below instantiates the array list that follows:
|
||||
#
|
||||
# cmake [path to VTK source]
|
||||
# -DvtkArrayDispatchImplicit_containers="MyCustomArray1;MyCustomArray2"
|
||||
# -DvtkArrayDispatchImplicit_MyCustomArray1_header="MyCustomArray1.h"
|
||||
# -DvtkArrayDispatchImplicit_MyCustomArray1_types="float;double"
|
||||
# -DvtkArrayDispatchImplicit_MyCustomArray2_header="MyCustomArray2.h"
|
||||
# -DvtkArrayDispatchImplicit_MyCustomArray2_types="int;unsigned char"
|
||||
# -DvtkArrayDispatchImplicit_extra_headers="ExtraHeader1.h;ExtraHeader2.h"
|
||||
# -DvtkArrayDispatchImplicit_extra_arrays="ExtraArray1;ExtraArray2<float>;ExtraArray2<char>"
|
||||
#
|
||||
# Generated header:
|
||||
#
|
||||
# #ifndef vtkArrayDispatchImplicitArrayList_h
|
||||
# #define vtkArrayDispatchImplicitArrayList_h
|
||||
#
|
||||
# #include "vtkTypeList.h"
|
||||
# #include "MyCustomArray1.h"
|
||||
# #include "MyCustomArray2.h"
|
||||
# #include "ExtraHeader1.h"
|
||||
# #include "ExtraHeader2.h"
|
||||
# #include "vtkArrayDispatchArrayList.h"
|
||||
#
|
||||
# namespace vtkArrayDispatch {
|
||||
#
|
||||
# VTK_ABI_NAMESPACE_BEGIN
|
||||
#
|
||||
# typedef vtkTypeList::Unique<
|
||||
# vtkTypeListvtkTypeList::Create<
|
||||
# MyCustomArray1<float>,
|
||||
# MyCustomArray1<double>,
|
||||
# MyCustomArray2<int>,
|
||||
# MyCustomArray2<unsigned char>,
|
||||
# ExtraArray1,
|
||||
# ExtraArray2<float>,
|
||||
# ExtraArray2<char>
|
||||
# >
|
||||
# >::Result ReadOnlyArrays;
|
||||
#
|
||||
# typedef vtkTypeList::Unique< vtkTypeList::TypeList<Arrays, ReadOnlyArrays> >::Result AllArrays;
|
||||
#
|
||||
# VTK_ABI_NAMESPACE_END
|
||||
#
|
||||
# } // end namespace vtkArrayDispatch
|
||||
#
|
||||
# #endif // vtkArrayDispatchImplicitArrayList_h
|
||||
#
|
||||
|
||||
# Populate the environment so that vtk_array_dispatch_generate_array_header will
|
||||
# create the array TypeList with all known array types.
|
||||
macro(vtkArrayDispatchImplicit_default_array_setup)
|
||||
|
||||
# The default set of scalar types:
|
||||
set(vtkArrayDispatchImplicit_all_types
|
||||
"char"
|
||||
"double"
|
||||
"float"
|
||||
"int"
|
||||
"long"
|
||||
"long long"
|
||||
"short"
|
||||
"signed char"
|
||||
"unsigned char"
|
||||
"unsigned int"
|
||||
"unsigned long"
|
||||
"unsigned long long"
|
||||
"unsigned short"
|
||||
"vtkIdType"
|
||||
)
|
||||
|
||||
if (VTK_DISPATCH_STD_FUNCTION_ARRAYS)
|
||||
list(APPEND vtkArrayDispatchImplicit_containers vtkStdFunctionArray)
|
||||
set(vtkArrayDispatchImplicit_vtkStdFunctionArray_header vtkStdFunctionArray.h)
|
||||
set(vtkArrayDispatchImplicit_vtkStdFunctionArray_types
|
||||
${vtkArrayDispatchImplicit_all_types}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (VTK_DISPATCH_CONSTANT_ARRAYS)
|
||||
list(APPEND vtkArrayDispatchImplicit_containers vtkConstantArray)
|
||||
set(vtkArrayDispatchImplicit_vtkConstantArray_header vtkConstantArray.h)
|
||||
set(vtkArrayDispatchImplicit_vtkConstantArray_types
|
||||
${vtkArrayDispatchImplicit_all_types}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (VTK_DISPATCH_AFFINE_ARRAYS)
|
||||
list(APPEND vtkArrayDispatchImplicit_containers vtkAffineArray)
|
||||
set(vtkArrayDispatchImplicit_vtkAffineArray_header vtkAffineArray.h)
|
||||
set(vtkArrayDispatchImplicit_vtkAffineArray_types
|
||||
${vtkArrayDispatchImplicit_all_types}
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
endmacro()
|
||||
|
||||
# Create a header that declares the vtkArrayDispatch::Arrays TypeList.
|
||||
macro(vtkArrayDispatchImplicit_generate_array_header result)
|
||||
|
||||
set(vtkAD_headers vtkTypeList.h)
|
||||
list(APPEND vtkAD_headers vtkArrayDispatchArrayList.h)
|
||||
set(vtkAD_arrays)
|
||||
foreach(container ${vtkArrayDispatchImplicit_containers})
|
||||
list(APPEND vtkAD_headers ${vtkArrayDispatchImplicit_${container}_header})
|
||||
foreach(value_type ${vtkArrayDispatchImplicit_${container}_types})
|
||||
list(APPEND vtkAD_arrays "${container}<${value_type}>")
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
# Include externally specified headers/arrays:
|
||||
list(APPEND vtkAD_headers ${vtkArrayDispatchImplicit_extra_headers})
|
||||
list(APPEND vtkAD_arrays ${vtkArrayDispatchImplicit_extra_arrays})
|
||||
|
||||
set(temp
|
||||
"// This file is autogenerated by vtkCreateArrayDispatchImplicitArrayList.cmake.\n"
|
||||
"// Do not edit this file. Your changes will not be saved.\n"
|
||||
"\n"
|
||||
"#ifndef vtkArrayDispatchImplicitArrayList_h\n"
|
||||
"#define vtkArrayDispatchImplicitArrayList_h\n"
|
||||
"\n"
|
||||
)
|
||||
|
||||
foreach(header ${vtkAD_headers})
|
||||
list(APPEND temp "#include \"${header}\"\n")
|
||||
endforeach()
|
||||
|
||||
list(APPEND temp
|
||||
"\n"
|
||||
"namespace vtkArrayDispatch {\n"
|
||||
"VTK_ABI_NAMESPACE_BEGIN\n"
|
||||
"\n"
|
||||
"typedef vtkTypeList::Unique<\n"
|
||||
" vtkTypeList::Create<\n"
|
||||
)
|
||||
|
||||
foreach(array ${vtkAD_arrays})
|
||||
list(APPEND temp " ${array},\n")
|
||||
endforeach()
|
||||
|
||||
# Remove the final comma from the array list:
|
||||
string(CONCAT temp ${temp})
|
||||
string(REGEX REPLACE ",\n$" "\n" temp "${temp}")
|
||||
|
||||
list(APPEND temp
|
||||
" >\n"
|
||||
">::Result ReadOnlyArrays\;\n"
|
||||
"\n"
|
||||
"typedef vtkTypeList::Unique< vtkTypeList::TypeList<Arrays, ReadOnlyArrays>>::Result AllArrays\;\n"
|
||||
"\n"
|
||||
"VTK_ABI_NAMESPACE_END\n"
|
||||
"\n"
|
||||
"} // end namespace vtkArrayDispatch\n"
|
||||
"#endif // vtkArrayDispatchImplicitArrayList_h\n"
|
||||
)
|
||||
|
||||
string(CONCAT ${result} ${temp})
|
||||
|
||||
endmacro()
|
@ -1,9 +0,0 @@
|
||||
set(headers
|
||||
vtkAffineImplicitBackend.h
|
||||
vtkConstantImplicitBackend.h
|
||||
)
|
||||
|
||||
vtk_module_add_module(VTK::CommonImplicitBackends
|
||||
HEADER_ONLY
|
||||
HEADERS ${headers}
|
||||
)
|
@ -1,10 +0,0 @@
|
||||
NAME
|
||||
VTK::CommonImplicitBackends
|
||||
LIBRARY_NAME
|
||||
vtkCommonImplicitBackends
|
||||
DESCRIPTION
|
||||
A VTK library for the backends intended for vtkImplicitArray
|
||||
KIT
|
||||
VTK::Common
|
||||
GROUPS
|
||||
StandAlone
|
Loading…
Reference in new issue