13 #ifndef COPASI_CNodeIterator
14 #define COPASI_CNodeIterator
152 mStack.push(CStackElement(pNode, pParentContext));
184 CStackElement & Current =
mStack.top();
186 if (Current.mNextChildIndex < Current.mChildCount)
188 mStack.push(CStackElement(static_cast< Node * >(Current.mpNode->getChild(Current.mNextChildIndex++)), &Current.mContext));
194 if (Current.mNextChildIndex == Current.mChildCount)
196 Current.mNextChildIndex++;
211 CStackElement & Parent =
mStack.top();
213 if (Parent.mNextChildIndex < Parent.mChildCount)
220 Parent.mNextChildIndex++;
257 CStackElement & Current =
mStack.top();
258 Current.mNextChildIndex = Current.mChildCount + 1;
369 #endif // COPASI_CNodeIterator
std::stack< CStackElement > mStack
CStackElement(Node *pNode, Context *pParentContext=NULL)
CNodeIteratorMode::Flag getProcessingModes() const
const CNodeIteratorMode::State & next()
CNodeIteratorMode::Flag mProcessingModes
CNodeIterator(Node *pNode)
CStackElement(const CStackElement &src)
CNodeContextIterator(const CNodeContextIterator &src)
const CNodeIteratorMode::State & skipChildren()
Context * parentContextPtr()
CNodeContextIterator(Node *pNode, Context *pParentContext=NULL)
void setProcessingModes(const CNodeIteratorMode::Flag &processingModes)
const CNodeIteratorMode::State & processingMode() const
CNodeIterator(const CNodeIterator &src)
CNodeIteratorMode::State end() const
CNodeIteratorMode::State mCurrentMode
Context * mpParentContext