Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

XFuNTreeRandomAccessIterator.h

Go to the documentation of this file.
00001 /*! \file 
00002  * X-Forge Util <br>
00003  * Copyright 2000-2003 Fathammer Ltd
00004  * 
00005  * \brief N-Tree iterator template
00006  *
00007  * $Id: XFuNTreeRandomAccessIterator.h,v 1.5 2003/03/20 13:19:59 jetro Exp $
00008  * $Date: 2003/03/20 13:19:59 $
00009  * $Revision: 1.5 $
00010  */
00011 
00012 #ifndef XFUNTREERANDOMACCESSITERATOR_H_INCLUDED
00013 #define XFUNTREERANDOMACCESSITERATOR_H_INCLUDED
00014 
00015 #include <xfutil/XFuNTreeAbstractIterator.h>
00016 
00017 template<class T> class XFuNTree;
00018 template<class T> class XFuNTreeNode;
00019 
00020 
00021 template<class T> class XFuNTreeRandomAccessIterator : 
00022 public XFuNTreeAbstractIterator<T>
00023 {
00024 public:
00025     //! Advances to the Nth child node.
00026     /*!
00027      * \return Reference to Nth child node.
00028      */
00029     XFuNTreeRandomAccessIterator<T> & advance(const UINT32 aChildIndex);
00030     //! Backs up to parent node.
00031     /*!
00032      * \return Reference to parent node.
00033      */
00034     XFuNTreeRandomAccessIterator<T> & backup();
00035 
00036     //! Returns an iterator pointing to the Nth child node.
00037     /*!
00038      * \return Iterator pointing to the Nth child node if possible, otherwise default iterator.
00039      */
00040     XFuNTreeRandomAccessIterator<T> getChild(const UINT32 aIndex) const;
00041 
00042     //! Creates an empty iterator.
00043     XFuNTreeRandomAccessIterator();
00044     //! Creates an iterator pointing to a node.
00045     XFuNTreeRandomAccessIterator(XFuNTreeNode<T> *aNode, 
00046                                  const UINT32 aChildNodes);
00047     //! Clones an iterator.
00048     XFuNTreeRandomAccessIterator(const XFuNTreeAbstractIterator<T> &aClone);
00049 };
00050 
00051 
00052 template<class T>
00053 XFuNTreeRandomAccessIterator<T> & 
00054 XFuNTreeRandomAccessIterator<T>::advance(const UINT32 aChildIndex)
00055 {
00056     if (mNode != NULL)
00057         mNode = mNode->getChild(aChildIndex);
00058 
00059     return *this;
00060 }
00061 
00062 
00063 template<class T> 
00064 XFuNTreeRandomAccessIterator<T> & XFuNTreeRandomAccessIterator<T>::backup()
00065 {
00066     if (mNode != NULL)
00067         mNode = mParent;
00068 
00069     return *this;
00070 }
00071 
00072 
00073 template<class T> XFuNTreeRandomAccessIterator<T> 
00074 XFuNTreeRandomAccessIterator<T>::getChild(const UINT32 aIndex) const
00075 {
00076     if (mNode != NULL)
00077         return XFuNTreeRandomAccessIterator<T>(mNode->getChild(aIndex), mChildNodes);
00078     else
00079         return XFuNTreeRandomAccessIterator<T>();
00080 }
00081 
00082 
00083 template<class T> 
00084 XFuNTreeRandomAccessIterator<T>::XFuNTreeRandomAccessIterator()
00085 {
00086     mNode = NULL;
00087 }
00088 
00089 
00090 template<class T> 
00091 XFuNTreeRandomAccessIterator<T>::XFuNTreeRandomAccessIterator(
00092     XFuNTreeNode<T> *aNode, 
00093     const UINT32 aChildNodes)
00094 {
00095     if (aNode != NULL)
00096     {
00097         mNode = aNode;
00098         mChildNodes = aChildNodes;
00099     }
00100 }
00101 
00102 
00103 template<class T> 
00104 XFuNTreeRandomAccessIterator<T>::XFuNTreeRandomAccessIterator(
00105     const XFuNTreeAbstractIterator<T> &aClone) : XFuNTreeAbstractIterator<T>(aClone)
00106 {
00107 }
00108 
00109 
00110 #endif // !XFUNTREERANDOMACCESSITERATOR_H_INCLUDED

   
X-Forge Documentation
Confidential
Copyright © 2002-2003 Fathammer
   
Documentation generated
with doxygen
by Dimitri van Heesch