/*========================================================================= Program: Visualization Toolkit Module: vtkSMPToolsImpl.txx 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 SequentialvtkSMPToolsImpl_txx #define SequentialvtkSMPToolsImpl_txx #include // For std::sort, std::transform, std::fill #include "SMP/Common/vtkSMPToolsImpl.h" #include "SMP/Common/vtkSMPToolsInternal.h" // For common vtk smp class namespace vtk { namespace detail { namespace smp { //-------------------------------------------------------------------------------- template <> template void vtkSMPToolsImpl::For( vtkIdType first, vtkIdType last, vtkIdType grain, FunctorInternal& fi) { vtkIdType n = last - first; if (!n) { return; } if (grain == 0 || grain >= n) { fi.Execute(first, last); } else { vtkIdType b = first; while (b < last) { vtkIdType e = b + grain; if (e > last) { e = last; } fi.Execute(b, e); b = e; } } } //-------------------------------------------------------------------------------- template <> template void vtkSMPToolsImpl::Transform( InputIt inBegin, InputIt inEnd, OutputIt outBegin, Functor transform) { std::transform(inBegin, inEnd, outBegin, transform); } //-------------------------------------------------------------------------------- template <> template void vtkSMPToolsImpl::Transform( InputIt1 inBegin1, InputIt1 inEnd, InputIt2 inBegin2, OutputIt outBegin, Functor transform) { std::transform(inBegin1, inEnd, inBegin2, outBegin, transform); } //-------------------------------------------------------------------------------- template <> template void vtkSMPToolsImpl::Fill(Iterator begin, Iterator end, const T& value) { std::fill(begin, end, value); } //-------------------------------------------------------------------------------- template <> template void vtkSMPToolsImpl::Sort( RandomAccessIterator begin, RandomAccessIterator end) { std::sort(begin, end); } //-------------------------------------------------------------------------------- template <> template void vtkSMPToolsImpl::Sort( RandomAccessIterator begin, RandomAccessIterator end, Compare comp) { std::sort(begin, end, comp); } //-------------------------------------------------------------------------------- template <> void vtkSMPToolsImpl::Initialize(int); //-------------------------------------------------------------------------------- template <> int vtkSMPToolsImpl::GetEstimatedNumberOfThreads(); } // namespace smp } // namespace detail } // namespace vtk #endif