proj home

Files   Classes   Functions   Hierarchy  

thenelseif Class Reference

#include <rpnfunc.h>

Inheritance diagram for thenelseif:
Collaboration diagram for thenelseif:

List of all members.

Public Member Functions

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


Constructor & Destructor Documentation

thenelseif::thenelseif (  )  [inline]

Definition at line 393 of file rpnfunc.h.

Referenced by copy().

00393 {}

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

Definition at line 908 of file rpnfunc.cpp.

References eval().

00909 {
00910   if (evaluate)
00911     eval(ds);
00912   else
00913     ds.push_front(this);
00914 }

thenelseif::~thenelseif (  )  [inline]

Definition at line 395 of file rpnfunc.h.

00395 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 916 of file rpnfunc.cpp.

References thenelseif().

00917 {
00918   return new thenelseif();
00919 }

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

Reimplemented from rpnfunction.

Definition at line 921 of file rpnfunc.cpp.

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

Referenced by thenelseif().

00922 {
00923   if( ds.size()>2)
00924     ds[0]->accept(ds,*this);
00925 
00926   dec();
00927 }

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

Reimplemented from rpnfunction.

Definition at line 401 of file rpnfunc.h.

00401 { return string("thenelseif"); }

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

Reimplemented from rpnfunction.

Definition at line 951 of file rpnfunc.cpp.

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

00952 {
00953   rpnbase* x0 = ds.front();
00954   ds.pop_front();
00955   rpnbase* x1 = ds.front();
00956   ds.pop_front();
00957   rpnbase* x2 = ds.front();
00958   ds.pop_front();
00959 
00960   if (n.num != 0)
00961   {
00962     x1->dec();
00963     x2->eval(ds);
00964   }
00965   else
00966   {
00967     x2->dec();
00968     x1->eval(ds);
00969   }
00970   x0->dec();
00971 }

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

Reimplemented from rpnfunction.

Definition at line 929 of file rpnfunc.cpp.

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

00930 {
00931   rpnbase* x0 = ds.front();
00932   ds.pop_front();
00933   rpnbase* x1 = ds.front();
00934   ds.pop_front();
00935   rpnbase* x2 = ds.front();
00936   ds.pop_front();
00937 
00938   if (n.num != 0)
00939   {
00940     x1->dec();
00941     x2->eval(ds);
00942   }
00943   else
00944   {
00945     x2->dec();
00946     x1->eval(ds);
00947   }
00948   x0->dec();
00949 }


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