proj home

Files   Classes   Functions   Hierarchy  

rpnmod Class Reference

#include <rpnfunc.h>

Inheritance diagram for rpnmod:
Collaboration diagram for rpnmod:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 1370 of file rpnfunc.h.


Constructor & Destructor Documentation

rpnmod::rpnmod (  )  [inline]

Definition at line 1374 of file rpnfunc.h.

Referenced by copy().

01374 {}

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

Definition at line 4206 of file rpnfunc.cpp.

References eval().

04207 {
04208   if (evaluate)
04209     eval(ds);
04210   else
04211     ds.push_front(this);
04212 }

rpnmod::~rpnmod (  )  [inline]

Definition at line 1376 of file rpnfunc.h.

01376 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 4214 of file rpnfunc.cpp.

References rpnmod().

04215 {
04216   return new rpnmod();
04217 }

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

Reimplemented from rpnfunction.

Definition at line 4219 of file rpnfunc.cpp.

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

Referenced by rpnmod().

04220 {
04221   if(ds.size()>1)
04222     ds[0]->accept(ds,*this);
04223 
04224   dec();
04225 }

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

Reimplemented from rpnfunction.

Definition at line 1381 of file rpnfunc.h.

01381 { return string("mod"); }

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

Reimplemented from rpnfunction.

Definition at line 4227 of file rpnfunc.cpp.

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

04228 {
04229   if (!ds[1]->isinteger())
04230     return;
04231   if (n.num<1)
04232     return;
04233 
04234   rpnbase* x0 = ds.front();
04235   ds.pop_front();
04236 
04237   rpninteger* x1 = (rpninteger *)(ds.front());
04238   x1->num %= n.num;
04239 
04240   x0->dec();
04241 }


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

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