proj home

Files   Classes   Functions   Hierarchy  

ifthen Class Reference

#include <rpnfunc.h>

Inheritance diagram for ifthen:
Collaboration diagram for ifthen:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 338 of file rpnfunc.h.


Constructor & Destructor Documentation

ifthen::ifthen (  )  [inline]

Definition at line 342 of file rpnfunc.h.

Referenced by copy().

00342 {}

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

Definition at line 722 of file rpnfunc.cpp.

References eval().

00723 {
00724   if (evaluate)
00725     eval(ds);
00726   else
00727     ds.push_front(this);
00728 }

ifthen::~ifthen (  )  [inline]

Definition at line 344 of file rpnfunc.h.

00344 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 730 of file rpnfunc.cpp.

References ifthen().

00731 {
00732   return new ifthen();
00733 }

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

Reimplemented from rpnfunction.

Definition at line 735 of file rpnfunc.cpp.

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

Referenced by ifthen().

00736 {
00737   if( ds.size()>1)
00738     ds[1]->accept(ds,*this);
00739   
00740   dec();
00741 }

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

Reimplemented from rpnfunction.

Definition at line 350 of file rpnfunc.h.

00350 { return string("ifthen"); }

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

Reimplemented from rpnfunction.

Definition at line 764 of file rpnfunc.cpp.

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

00765 {
00766 
00767   rpnbase* x0 = ds.front();
00768   ds.pop_front();
00769   // x1 is a pointer to n 
00770   rpnbase* x1 = ds.front();
00771   ds.pop_front();
00772 
00773   if (n.num != 0)
00774   {
00775     x1->dec();
00776     x0->eval(ds);
00777   }
00778   else
00779   {
00780     x1->dec();
00781     x0->dec();
00782   }
00783 }

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

Reimplemented from rpnfunction.

Definition at line 743 of file rpnfunc.cpp.

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

00744 {
00745 
00746   rpnbase* x0 = ds.front();
00747   ds.pop_front();
00748   // x1 is a pointer to n 
00749   rpnbase* x1 = ds.front();
00750   ds.pop_front();
00751 
00752   if (n.num != 0)
00753   {
00754     x1->dec();
00755     x0->eval(ds);
00756   }
00757   else
00758   {
00759     x1->dec();
00760     x0->dec();
00761   }
00762 }


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

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