#pragma once
#ifndef ABinaryTreeIterator_h
#define ABinaryTreeIterator_h
#include "CSortedBinaryTree.h"
#include "CStack.h"
namespace CoreFW
{
template< typename ClassType >
class DLL_TEMPLATE_DECLARATION_SPECIFIER ABinaryTreeIterator
{
public:
ABinaryTreeIterator() ;
ABinaryTreeIterator( CSortedBinaryTree<ClassType> &SortedBinaryTree ) ;
virtual ~ABinaryTreeIterator() ;
virtual bool Begin() = 0 ;
virtual ABinaryTreeIterator<ClassType>& operator++() = 0 ; // Pre Increment Operator
virtual ClassType* operator*() = 0 ;
virtual bool IsEnd() = 0 ;
protected:
CSortedBinaryTree<ClassType> *m_pSortedBinaryTree ;
CStack<CBinaryTreeNode<ClassType>*> m_BinaryTreeNodeStack ;
} ;
} // End Namespace
#if defined( DLL_TEMPLATE_DECLARATION_SPECIFIER_EXPORT )
#include "ABinaryTreeIterator.cpp"
#endif
#endif