4 #ifndef vtkSMPToolsImpl_h
5 #define vtkSMPToolsImpl_h
7 #include "vtkCommonCoreModule.h"
13 #define VTK_SMP_MAX_BACKENDS_NB 4
15 #define VTK_SMP_BACKEND_SEQUENTIAL 0
16 #define VTK_SMP_BACKEND_STDTHREAD 1
17 #define VTK_SMP_BACKEND_TBB 2
18 #define VTK_SMP_BACKEND_OPENMP 3
26 VTK_ABI_NAMESPACE_BEGIN
35 #if VTK_SMP_DEFAULT_IMPLEMENTATION_SEQUENTIAL
37 #elif VTK_SMP_DEFAULT_IMPLEMENTATION_STDTHREAD
39 #elif VTK_SMP_DEFAULT_IMPLEMENTATION_TBB
41 #elif VTK_SMP_DEFAULT_IMPLEMENTATION_OPENMP
45 template <BackendType Backend>
71 template <
typename FunctorInternal>
75 template <
typename InputIt,
typename OutputIt,
typename Functor>
76 void Transform(InputIt inBegin, InputIt inEnd, OutputIt outBegin, Functor transform);
79 template <
typename InputIt1,
typename InputIt2,
typename OutputIt,
typename Functor>
81 InputIt1 inBegin1, InputIt1 inEnd, InputIt2 inBegin2, OutputIt outBegin, Functor transform);
84 template <
typename Iterator,
typename T>
85 void Fill(Iterator begin, Iterator end,
const T&
value);
88 template <
typename RandomAccessIterator>
89 void Sort(RandomAccessIterator begin, RandomAccessIterator end);
92 template <
typename RandomAccessIterator,
typename Compare>
93 void Sort(RandomAccessIterator begin, RandomAccessIterator end, Compare comp);
105 bool NestedActivated =
false;
106 std::atomic<bool> IsParallel{
false };
109 template <BackendType Backend>
112 this->NestedActivated = isNested;
115 template <BackendType Backend>
118 return this->NestedActivated;
121 template <BackendType Backend>
124 return this->IsParallel;
127 template <BackendType Backend>
129 : NestedActivated(true)
134 template <BackendType Backend>
136 : NestedActivated(other.NestedActivated)
137 , IsParallel(other.IsParallel.
load())
141 template <BackendType Backend>
144 this->NestedActivated = other.NestedActivated;
145 this->IsParallel = other.IsParallel.load();
150 VTK_ABI_NAMESPACE_END
void(*)(void *, vtkIdType, vtkIdType, vtkIdType) ExecuteFunctorPtrType
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.