proj home

Files   Classes   Functions   Hierarchy  

dropn Class Reference

#include <rpnfunc.h>

Inheritance diagram for dropn:
Collaboration diagram for dropn:

List of all members.

Public Member Functions

 dropn ()
 dropn (deque< rpnbase * > &ds, bool const evaluate=true)
 ~dropn ()
rpnbasecopy () const
void visit (deque< rpnbase * > &ds, rpninteger &n)
string const name () const
void eval (deque< rpnbase * > &ds)


Detailed Description

Definition at line 322 of file rpnfunc.h.


Constructor & Destructor Documentation

dropn::dropn (  )  [inline]

Definition at line 326 of file rpnfunc.h.

Referenced by copy().

00326 {}

dropn::dropn ( deque< rpnbase * > &  ds,
bool const   evaluate = true 
)

Definition at line 684 of file rpnfunc.cpp.

References eval().

00685 {
00686   if (evaluate)
00687     eval(ds);
00688   else
00689     ds.push_front(this);
00690 }

dropn::~dropn (  )  [inline]

Definition at line 328 of file rpnfunc.h.

00328 {}


Member Function Documentation

rpnbase * dropn::copy (  )  const [virtual]

Reimplemented from rpnfunction.

Definition at line 692 of file rpnfunc.cpp.

References dropn().

00693 {
00694   return new dropn();
00695 }

void dropn::eval ( deque< rpnbase * > &  ds  )  [virtual]

Reimplemented from rpnfunction.

Definition at line 697 of file rpnfunc.cpp.

References rpnbase::accept(), and rpnbase::dec().

Referenced by dropn().

00698 {
00699   if(!ds.empty())
00700     ds[0]->accept(ds,*this);
00701 
00702   dec();
00703 }

string const dropn::name (  )  const [inline, virtual]

Reimplemented from rpnfunction.

Definition at line 333 of file rpnfunc.h.

00333 { return string("dropn"); }

void dropn::visit ( deque< rpnbase * > &  ds,
rpninteger n 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 705 of file rpnfunc.cpp.

References rpnbase::dec(), and rpninteger::num.

00706 {
00707   if (n.num<0)
00708     return;
00709 
00710   unsigned int val = n.num;
00711   if (ds.size()>val)
00712   {
00713     rpnbase* x0 = ds.front();
00714     ds.pop_front();
00715 
00716     ds.erase(ds.begin(),ds.begin()+val);
00717     x0->dec();
00718   } 
00719 }


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

Generated on Fri Mar 4 00:49:55 2011 for Chelton Evans Source by  doxygen 1.5.8