15 #ifndef BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H
16 #define BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H
38 friend std::ostream&
operator<<(std::ostream& output_stream,
41 return output_stream <<
"memento state " << iterator_state.
m_position <<
" "
107 template <
class Strategy>
114 m_memento_itor = m_strategy.first(mp_root);
119 m_strategy.next(m_memento_itor);
124 return m_memento_itor.getCurrent();
129 return m_memento_itor.size() == 0;
134 return static_cast<int>(m_memento_itor.size());
Base class for tree-like structures containing parameterized objects.
Holds all iterator states encountered for SampleTreeIterator.
virtual ~IteratorMemento()
IteratorState & get_state()
const INode * getCurrent()
void push_state(const IteratorState &state)
std::stack< IteratorState > m_state_stack
Holds state of iterator at single level for SampleTreeIterator.
std::vector< const INode * > m_samples
friend std::ostream & operator<<(std::ostream &output_stream, IteratorState const &iterator_state)
const INode * getCurrent() const
Iterator through INode tree of objects.
const INode * getCurrent()
NodeIterator(const INode *root)
IteratorMemento m_memento_itor