proj home

Files   Classes   Functions   Hierarchy  

varinc Class Reference

#include <rpnfunc.h>

Inheritance diagram for varinc:
Collaboration diagram for varinc:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 565 of file rpnfunc.h.


Constructor & Destructor Documentation

varinc::varinc (  )  [inline]

Definition at line 569 of file rpnfunc.h.

Referenced by copy().

00569 {}

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

Definition at line 1446 of file rpnfunc.cpp.

References eval().

01447 {
01448   if (evaluate)
01449     eval(ds);
01450   else
01451     ds.push_front(this);
01452 }

varinc::~varinc (  )  [inline]

Definition at line 571 of file rpnfunc.h.

00571 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 1454 of file rpnfunc.cpp.

References varinc().

01455 {
01456   return new varinc();
01457 }

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

Reimplemented from rpnfunction.

Definition at line 1459 of file rpnfunc.cpp.

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

Referenced by varinc().

01460 {
01461   if (!ds.empty())
01462     ds[0]->accept(ds,*this);
01463 
01464   dec();
01465 }

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

Reimplemented from rpnfunction.

Definition at line 578 of file rpnfunc.h.

00578 { return string("++"); }

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

Reimplemented from rpnfunction.

Definition at line 1473 of file rpnfunc.cpp.

References rpnreal::num.

01474 {
01475   n.num += 1;
01476 }

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

Reimplemented from rpnfunction.

Definition at line 1468 of file rpnfunc.cpp.

References rpninteger::num.

01469 {
01470   n.num += 1;
01471 }

void varinc::visit ( deque< rpnbase * > &  ds,
rpnstring s 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 1478 of file rpnfunc.cpp.

References rpnbase::dec(), rpnbase::inc(), rpnbase::isinteger(), rpnbase::isreal(), rpnstring::str, and rpnvar::x.

01479 {
01480   rpnbase* x0 = ds.front();
01481   ds.pop_front();
01482   
01483   bool res;
01484   unsigned int i,k;
01485   rpnvar* x;
01486 
01487   rpnprogramstackstate().find(res,i,k,x,s.str);
01488   if (res)
01489   {
01490     bool foundtype(false);
01491 
01492     rpnbase* w = x->x;
01493     if (w->isinteger())
01494     {
01495       ((rpninteger*)w)->num += 1;
01496       foundtype=true;
01497     }
01498     else
01499     if (w->isreal())
01500     {
01501       ((rpnreal*)w)->num += 1;
01502       foundtype=true;
01503     }
01504 
01505     if (foundtype)
01506     {
01507       w->inc();
01508       ds.push_front(w);
01509     }
01510   }
01511 
01512   x0->dec();
01513 }


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

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