MADARA  3.4.1
madara::expression::LevelOrderExpressionTreeIteratorImpl Class Reference

Iterates through an ExpressionTree in level-order. More...

#include <IteratorImpl.h>

Inheritance diagram for madara::expression::LevelOrderExpressionTreeIteratorImpl:
madara::expression::ExpressionTreeIteratorImpl

Public Types

typedef int difference_type
 
typedef ::std::forward_iterator_tag iterator_category
 
typedef int * pointer
 
typedef int & reference
 
typedef madara::knowledge::KnowledgeRecord value_type
 

Public Member Functions

 LevelOrderExpressionTreeIteratorImpl (const ExpressionTree &tree, bool end_iter=false)
 Construct an LevelOrderExpressionTreeIterator. More...
 
virtual ~LevelOrderExpressionTreeIteratorImpl ()
 Dtor. More...
 
virtual ExpressionTreeIteratorImplclone (void)
 Method for cloning an impl. Necessary for post increments. More...
 
virtual bool operator!= (const ExpressionTreeIteratorImpl &lhs) const
 Nonequality operator. More...
 
virtual ExpressionTree operator* (void)
 Dereference operator returns a reference to the item contained at the current position. More...
 
virtual const ExpressionTree operator* (void) const
 Returns a const reference to the item contained at the current position. More...
 
virtual void operator++ (void)
 Increment operator (used for both pre- and post-increment). More...
 
virtual bool operator== (const ExpressionTreeIteratorImpl &rhs) const
 Equality operator. More...
 

Protected Attributes

const ExpressionTreetree_
 The tree we are iterating over. More...
 

Private Attributes

madara::utility::LQueue< ExpressionTreequeue_
 Our current position in the iteration. More...
 

Friends

class ExpressionTreeIterator
 
class utility::Refcounter< ExpressionTreeIteratorImpl >
 

Detailed Description

Iterates through an ExpressionTree in level-order.

   Plays the role of the "implementor" class in the Bridge
   pattern that defines the post-order iteration algorithm.

Definition at line 250 of file IteratorImpl.h.

Member Typedef Documentation

◆ difference_type

◆ iterator_category

Definition at line 286 of file IteratorImpl.h.

◆ pointer

◆ reference

◆ value_type

Constructor & Destructor Documentation

◆ LevelOrderExpressionTreeIteratorImpl()

madara::expression::LevelOrderExpressionTreeIteratorImpl::LevelOrderExpressionTreeIteratorImpl ( const ExpressionTree tree,
bool  end_iter = false 
)

Construct an LevelOrderExpressionTreeIterator.

If end_iter is set to true, the iterator points to the end of the tree. Otherwise, the iterator starts with a free tree.

If end_iter is set to true, the iterator points to the end of the tree

Definition at line 446 of file IteratorImpl.cpp.

◆ ~LevelOrderExpressionTreeIteratorImpl()

madara::expression::LevelOrderExpressionTreeIteratorImpl::~LevelOrderExpressionTreeIteratorImpl ( void  )
virtual

Dtor.

destructor - nothing to do

Definition at line 459 of file IteratorImpl.cpp.

Member Function Documentation

◆ clone()

madara::expression::ExpressionTreeIteratorImpl * madara::expression::LevelOrderExpressionTreeIteratorImpl::clone ( void  )
virtual

Method for cloning an impl. Necessary for post increments.

Method for cloning an impl.

Necessary for post increments (bridge)

See also
ExpressionTreeIterator

Implements madara::expression::ExpressionTreeIteratorImpl.

Definition at line 560 of file IteratorImpl.cpp.

◆ operator!=()

bool madara::expression::LevelOrderExpressionTreeIteratorImpl::operator!= ( const ExpressionTreeIteratorImpl lhs) const
virtual

Nonequality operator.

checks two iterators for inequality

Implements madara::expression::ExpressionTreeIteratorImpl.

Definition at line 550 of file IteratorImpl.cpp.

◆ operator*() [1/2]

madara::expression::ExpressionTree madara::expression::LevelOrderExpressionTreeIteratorImpl::operator* ( void  )
virtual

Dereference operator returns a reference to the item contained at the current position.

Returns the Node that the iterator is pointing to (non-const version)

Implements madara::expression::ExpressionTreeIteratorImpl.

Definition at line 467 of file IteratorImpl.cpp.

◆ operator*() [2/2]

const madara::expression::ExpressionTree madara::expression::LevelOrderExpressionTreeIteratorImpl::operator* ( void  ) const
virtual

Returns a const reference to the item contained at the current position.

Returns the Node that the iterator is pointing to (const version)

Implements madara::expression::ExpressionTreeIteratorImpl.

Definition at line 475 of file IteratorImpl.cpp.

◆ operator++()

void madara::expression::LevelOrderExpressionTreeIteratorImpl::operator++ ( void  )
virtual

Increment operator (used for both pre- and post-increment).

moves the iterator to the next node (pre-increment)

Implements madara::expression::ExpressionTreeIteratorImpl.

Definition at line 483 of file IteratorImpl.cpp.

◆ operator==()

bool madara::expression::LevelOrderExpressionTreeIteratorImpl::operator== ( const ExpressionTreeIteratorImpl rhs) const
virtual

Equality operator.

checks two iterators for equality

Implements madara::expression::ExpressionTreeIteratorImpl.

Definition at line 503 of file IteratorImpl.cpp.

Friends And Related Function Documentation

◆ ExpressionTreeIterator

friend class ExpressionTreeIterator
friend

Definition at line 252 of file IteratorImpl.h.

◆ utility::Refcounter< ExpressionTreeIteratorImpl >

Definition at line 252 of file IteratorImpl.h.

Member Data Documentation

◆ queue_

madara::utility::LQueue<ExpressionTree> madara::expression::LevelOrderExpressionTreeIteratorImpl::queue_
private

Our current position in the iteration.

Definition at line 295 of file IteratorImpl.h.

◆ tree_

const ExpressionTree& madara::expression::ExpressionTreeIteratorImpl::tree_
protectedinherited

The tree we are iterating over.

Definition at line 81 of file IteratorImpl.h.


The documentation for this class was generated from the following files: