proj home

Files   Classes   Functions   Hierarchy  

ifthenelse Class Reference

#include <rpnfunc.h>

Inheritance diagram for ifthenelse:
Collaboration diagram for ifthenelse:

List of all members.

Public Member Functions

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


Constructor & Destructor Documentation

ifthenelse::ifthenelse (  )  [inline]

Definition at line 376 of file rpnfunc.h.

Referenced by copy().

00376 {}

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

Definition at line 840 of file rpnfunc.cpp.

References eval().

00841 {
00842   if (evaluate)
00843     eval(ds);
00844   else
00845     ds.push_front(this);
00846 }

ifthenelse::~ifthenelse (  )  [inline]

Definition at line 378 of file rpnfunc.h.

00378 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 848 of file rpnfunc.cpp.

References ifthenelse().

00849 {
00850   return new ifthenelse();
00851 }

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

Reimplemented from rpnfunction.

Definition at line 853 of file rpnfunc.cpp.

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

Referenced by ifthenelse().

00854 {
00855   if( ds.size()>2)
00856     ds[2]->accept(ds,*this);
00857 
00858   dec();
00859 }

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

Reimplemented from rpnfunction.

Definition at line 384 of file rpnfunc.h.

00384 { return string("ifthenelse"); }

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

Reimplemented from rpnfunction.

Definition at line 884 of file rpnfunc.cpp.

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

00885 {
00886   rpnbase* x0 = ds.front();
00887   ds.pop_front();
00888   rpnbase* x1 = ds.front();
00889   ds.pop_front();
00890   rpnbase* x2 = ds.front();
00891   ds.pop_front();
00892 
00893   if (n.num != 0)
00894   {
00895     x2->dec();
00896     x0->dec();
00897     x1->eval(ds);
00898   }
00899   else
00900   {
00901     x2->dec();
00902     x1->dec();
00903     x0->eval(ds);
00904   }
00905 }

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

Reimplemented from rpnfunction.

Definition at line 861 of file rpnfunc.cpp.

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

00862 {
00863   rpnbase* x0 = ds.front();
00864   ds.pop_front();
00865   rpnbase* x1 = ds.front();
00866   ds.pop_front();
00867   rpnbase* x2 = ds.front();
00868   ds.pop_front();
00869 
00870   if (n.num != 0)
00871   {
00872     x2->dec();
00873     x0->dec();
00874     x1->eval(ds);
00875   }
00876   else
00877   {
00878     x2->dec();
00879     x1->dec();
00880     x0->eval(ds);
00881   }
00882 }


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