/*========================================================================= * * Copyright NumFOCUS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *=========================================================================*/ #ifndef itkSparseFieldLayer_hxx #define itkSparseFieldLayer_hxx #include namespace itk { template SparseFieldLayer::SparseFieldLayer() { m_HeadNode->Next = m_HeadNode.get(); m_HeadNode->Previous = m_HeadNode.get(); m_Size = 0; } template void SparseFieldLayer::PrintSelf(std::ostream & os, Indent indent) const { Superclass::PrintSelf(os, indent); os << indent << "HeadNode: " << m_HeadNode.get() << std::endl; os << indent << "Size: " << m_Size << std::endl; } template unsigned int SparseFieldLayer::Size() const { return m_Size; } template auto SparseFieldLayer::SplitRegions(int num) const -> RegionListType { std::vector regionlist; unsigned int size, regionsize; size = Size(); regionsize = static_cast(std::ceil(static_cast(size) / static_cast(num))); ConstIterator position = Begin(); ConstIterator last = End(); for (int i = 0; i < num; ++i) { unsigned int j = 0; RegionType region; region.first = position; while ((j < regionsize) && (position != last)) { ++j; ++position; } region.last = position; regionlist.push_back(region); } return regionlist; } } // end namespace itk #endif