proj home

Files   Classes   Functions   Hierarchy  

varrecall Class Reference

#include <rpnfunc.h>

Inheritance diagram for varrecall:
Collaboration diagram for varrecall:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 634 of file rpnfunc.h.


Constructor & Destructor Documentation

varrecall::varrecall (  )  [inline]

Definition at line 638 of file rpnfunc.h.

Referenced by copy().

00638 {}

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

Definition at line 1689 of file rpnfunc.cpp.

References eval().

01690 {
01691   if (evaluate)
01692     eval(ds);
01693   else
01694     ds.push_front(this);
01695 }

varrecall::~varrecall (  )  [inline]

Definition at line 640 of file rpnfunc.h.

00640 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 1697 of file rpnfunc.cpp.

References varrecall().

01698 {
01699   return new varrecall();
01700 }

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

Reimplemented from rpnfunction.

Definition at line 1702 of file rpnfunc.cpp.

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

Referenced by varrecall().

01703 {
01704   if (!ds.empty())
01705     ds[0]->accept(ds,*this);
01706 
01707   dec();
01708 }

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

Reimplemented from rpnfunction.

Definition at line 647 of file rpnfunc.h.

00647 { return string("rcl"); }

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

Reimplemented from rpnfunction.

Definition at line 1720 of file rpnfunc.cpp.

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

01721 {
01722   rpnbase* x0 = ds.front();
01723   ds.pop_front();
01724 
01725   if (n.num>=0)
01726   {
01727     unsigned int const n2 = (unsigned int)(n.num); 
01728     if (n2<ds.size())
01729       ds.push_front( ds[n.num]->copy() );
01730   }
01731 
01732   x0->dec();
01733 }

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

Reimplemented from rpnfunction.

Definition at line 1710 of file rpnfunc.cpp.

References rpnbase::dec(), and rpnstring::str.

01711 {
01712   rpnbase* x0 = ds.front();
01713   ds.pop_front();
01714   
01715   rpnprogramstackstate().recall(ds,s.str);
01716 
01717   x0->dec();
01718 }


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

Generated on Fri Mar 4 00:50:23 2011 for Chelton Evans Source by  doxygen 1.5.8