proj home

Files   Classes   Functions   Hierarchy  

vareval Class Reference

#include <rpnfunc.h>

Inheritance diagram for vareval:
Collaboration diagram for vareval:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 438 of file rpnfunc.h.


Constructor & Destructor Documentation

vareval::vareval (  )  [inline]

Definition at line 442 of file rpnfunc.h.

Referenced by copy().

00442 {}

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

Definition at line 1114 of file rpnfunc.cpp.

References eval().

01115 {
01116   if (evaluate)
01117     eval(ds);
01118   else
01119     ds.push_front(this);
01120 }

vareval::~vareval (  )  [inline]

Definition at line 444 of file rpnfunc.h.

00444 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 1122 of file rpnfunc.cpp.

References vareval().

01123 {
01124   return new vareval();
01125 }

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

Reimplemented from rpnfunction.

Definition at line 1127 of file rpnfunc.cpp.

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

Referenced by vareval().

01128 {
01129   if (!ds.empty())
01130     ds[0]->accept(ds,*this);
01131 
01132   dec();
01133 }

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

Reimplemented from rpnfunction.

Definition at line 451 of file rpnfunc.h.

00451 { return string("&"); }

void vareval::visit ( deque< rpnbase * > &  ds,
rpnprogram p 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 1165 of file rpnfunc.cpp.

References rpnbase::eval().

01166 {
01167   rpnbase* x0 = ds.front();
01168   ds.pop_front();
01169 
01170   x0->eval(ds);
01171 }

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

Reimplemented from rpnfunction.

Definition at line 1145 of file rpnfunc.cpp.

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

01146 {
01147   rpnbase* x0 = ds.front();
01148   ds.pop_front();
01149 
01150   if (n.num>=0)
01151   {
01152     unsigned int const n2 = (unsigned int)(n.num); 
01153     if (n2<ds.size())
01154     {
01155       rpnbase * x = ds[n.num]->copy();
01156       x->eval(ds);
01157     }
01158   }
01159 
01160   x0->dec();
01161 }

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

Reimplemented from rpnfunction.

Definition at line 1135 of file rpnfunc.cpp.

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

01136 {
01137   rpnbase* x0 = ds.front();
01138   ds.pop_front();
01139   
01140   rpnprogramstackstate().evaluate(ds,s.str);
01141 
01142   x0->dec();
01143 }


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

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