18#ifndef itkSparseFieldLayer_h
19#define itkSparseFieldLayer_h
36template <
typename TNodeType>
74 m_Pointer = m_Pointer->Next;
81 m_Pointer = m_Pointer->Previous;
99template <
typename TNodeType>
116 return *this->m_Pointer;
122 return this->m_Pointer;
128 return this->m_Pointer;
134 this->m_Pointer = this->m_Pointer->Next;
141 this->m_Pointer = this->m_Pointer->Previous;
148 this->m_Pointer =
const_cast<TNodeType *
>(sc.
GetPointer());
175template <
typename TNodeType>
220 return m_HeadNode->Next;
227 return m_HeadNode->Next;
234 m_HeadNode->Next = m_HeadNode->Next->Next;
235 m_HeadNode->Next->Previous = m_HeadNode.get();
244 n->Next = m_HeadNode->Next;
245 n->Previous = m_HeadNode.get();
246 m_HeadNode->Next->Previous = n;
247 m_HeadNode->Next = n;
256 n->Previous->Next = n->Next;
257 n->Next->Previous = n->Previous;
295 if (m_HeadNode->Next == m_HeadNode.get())
322 const std::unique_ptr<NodeType> m_HeadNode{ std::make_unique<NodeType>() };
323 unsigned int m_Size{};
327#ifndef ITK_MANUAL_INSTANTIATION
328# include "itkSparseFieldLayer.hxx"
Used to iterate through an itkSparseFieldLayer.
~ConstSparseFieldLayerIterator()=default
ITK_UNEQUAL_OPERATOR_MEMBER_FUNCTION(ConstSparseFieldLayerIterator)
ConstSparseFieldLayerIterator(TNodeType *p)
ConstSparseFieldLayerIterator & operator++()
const TNodeType * operator->() const
const TNodeType & operator*() const
const TNodeType * GetPointer() const
ConstSparseFieldLayerIterator()
bool operator==(const ConstSparseFieldLayerIterator o) const
ConstSparseFieldLayerIterator & operator--()
Control indentation during Print() invocation.
Light weight base class for most itk classes.
Base class for most ITK classes.
The non-const version of the ConstSparseFieldLayerIterator.
SparseFieldLayerIterator & operator--()
SparseFieldLayerIterator(TNodeType *p)
SparseFieldLayerIterator()
SparseFieldLayerIterator & operator=(Superclass &sc)
SparseFieldLayerIterator & operator++()
A very simple linked list that is used to manage nodes in a layer of a sparse field level-set solver.
~SparseFieldLayer() override=default
void PushFront(NodeType *n)
const NodeType * Front() const
RegionListType SplitRegions(int num) const
ConstIterator End() const
void PrintSelf(std::ostream &os, Indent indent) const override
ConstIterator Begin() const
std::vector< RegionType > RegionListType
unsigned int Size() const
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....