proj home

Files   Classes   Functions   Hierarchy  

rpnfactorial Class Reference

#include <rpnfunc.h>

Inheritance diagram for rpnfactorial:
Collaboration diagram for rpnfactorial:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 1354 of file rpnfunc.h.


Constructor & Destructor Documentation

rpnfactorial::rpnfactorial (  )  [inline]

Definition at line 1358 of file rpnfunc.h.

Referenced by copy().

01358 {}

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

Definition at line 4172 of file rpnfunc.cpp.

References eval().

04173 {
04174   if (evaluate)
04175     eval(ds);
04176   else
04177     ds.push_front(this);
04178 }

rpnfactorial::~rpnfactorial (  )  [inline]

Definition at line 1360 of file rpnfunc.h.

01360 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 4180 of file rpnfunc.cpp.

References rpnfactorial().

04181 {
04182   return new rpnfactorial();
04183 }

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

Reimplemented from rpnfunction.

Definition at line 4185 of file rpnfunc.cpp.

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

Referenced by rpnfactorial().

04186 {
04187   if(!ds.empty())
04188     ds[0]->accept(ds,*this);
04189 
04190   dec();
04191 }

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

Reimplemented from rpnfunction.

Definition at line 1365 of file rpnfunc.h.

01365 { return string("factorial"); }

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

Reimplemented from rpnfunction.

Definition at line 4193 of file rpnfunc.cpp.

References rpninteger::num.

04194 {
04195   if (n.num<0)
04196     return;
04197 
04198   long int num(1);
04199   for (long int i=1; i<=n.num; ++i)
04200     num *= i;
04201 
04202   n.num = num;
04203 }


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

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