15 #ifndef BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H 
   16 #define BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H 
   34     const INode* getCurrent()
 const { 
return m_samples[m_position]; }
 
   35     bool isEnd()
 const { 
return m_position >= m_samples.size(); }
 
   36     void next() { ++m_position; }
 
   38     friend std::ostream& operator<<(std::ostream& output_stream,
 
   41         return output_stream << 
"memento state " << iterator_state.m_position << 
" " 
   42                              << iterator_state.m_samples.size();
 
   46     std::vector<const INode*> m_samples;
 
   61     void push_state(
const IteratorState& state) { m_state_stack.push(state); }
 
   62     void pop_state() { m_state_stack.pop(); }
 
   64     bool empty()
 const { 
return m_state_stack.empty(); }
 
   67         while (!m_state_stack.empty())
 
   70     const INode* getCurrent() { 
return m_state_stack.top().getCurrent(); }
 
   71     void next() { m_state_stack.top().next(); }
 
   72     size_t size()
 const { 
return m_state_stack.size(); }
 
   75     std::stack<IteratorState> m_state_stack;
 
   97     const INode* getCurrent();
 
  104     const INode* mp_root;
 
  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.
 
Holds state of iterator at single level for SampleTreeIterator.
 
Iterator through INode tree of objects.