proj home

Files   Classes   Functions   Hierarchy  

thenif Class Reference

#include <rpnfunc.h>

Inheritance diagram for thenif:
Collaboration diagram for thenif:

List of all members.

Public Member Functions

 thenif ()
 thenif (deque< rpnbase * > &ds, bool const evaluate=true)
 ~thenif ()
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 355 of file rpnfunc.h.


Constructor & Destructor Documentation

thenif::thenif (  )  [inline]

Definition at line 359 of file rpnfunc.h.

Referenced by copy().

00359 {}

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

Definition at line 786 of file rpnfunc.cpp.

References eval().

00787 {
00788   if (evaluate)
00789     eval(ds);
00790   else
00791     ds.push_front(this);
00792 }

thenif::~thenif (  )  [inline]

Definition at line 361 of file rpnfunc.h.

00361 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 794 of file rpnfunc.cpp.

References thenif().

00795 {
00796   return new thenif();
00797 }

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

Reimplemented from rpnfunction.

Definition at line 799 of file rpnfunc.cpp.

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

Referenced by thenif().

00800 {
00801   if( ds.size()>1)
00802     ds[0]->accept(ds,*this);
00803   
00804   dec();
00805 }

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

Reimplemented from rpnfunction.

Definition at line 367 of file rpnfunc.h.

00367 { return string("thenif"); }

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

Reimplemented from rpnfunction.

Definition at line 823 of file rpnfunc.cpp.

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

00824 {
00825   rpnbase* x0 = ds.front();
00826   ds.pop_front();
00827   // x0 is a pointer to n 
00828   rpnbase* x1 = ds.front();
00829   ds.pop_front();
00830 
00831   if (n.num != 0)
00832     x1->eval(ds);
00833   else
00834     x1->dec();
00835 
00836   x0->dec();
00837 }

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

Reimplemented from rpnfunction.

Definition at line 807 of file rpnfunc.cpp.

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

00808 {
00809   rpnbase* x0 = ds.front();
00810   ds.pop_front();
00811   // x0 is a pointer to n 
00812   rpnbase* x1 = ds.front();
00813   ds.pop_front();
00814 
00815   if (n.num != 0)
00816     x1->eval(ds);
00817   else
00818     x1->dec();
00819 
00820   x0->dec();
00821 }


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

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