proj home

Files   Classes   Functions   Hierarchy  

rpnpointermake Class Reference

#include <rpnfunc.h>

Inheritance diagram for rpnpointermake:
Collaboration diagram for rpnpointermake:

List of all members.

Public Member Functions

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


Detailed Description

Definition at line 1098 of file rpnfunc.h.


Constructor & Destructor Documentation

rpnpointermake::rpnpointermake (  )  [inline]

Definition at line 1102 of file rpnfunc.h.

Referenced by copy().

01102 {}

rpnpointermake::rpnpointermake ( deque< rpnbase * > &  ds,
bool const   evaluate = false 
)

Definition at line 3429 of file rpnfunc.cpp.

References eval().

03430 {
03431   if (evaluate)
03432     eval(ds);
03433   else
03434     ds.push_front(this);
03435 }

rpnpointermake::~rpnpointermake (  )  [inline]

Definition at line 1104 of file rpnfunc.h.

01104 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 3437 of file rpnfunc.cpp.

References rpnpointermake().

03438 {
03439   return new rpnpointermake(); 
03440 }

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

Reimplemented from rpnfunction.

Definition at line 3442 of file rpnfunc.cpp.

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

Referenced by rpnpointermake().

03443 {
03444   if (!ds.empty())
03445     ds[0]->accept(ds,*this);
03446 
03447   dec();
03448 }

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

Reimplemented from rpnfunction.

Definition at line 1110 of file rpnfunc.h.

01110 { return string("->"); }

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

Reimplemented from rpnfunction.

Definition at line 3472 of file rpnfunc.cpp.

References rpnbase::dec(), and rpnstring::str.

03473 {
03474   rpnbase* x0 = ds.front();
03475   ds.pop_front();
03476   
03477   rpnprogramstackstate().recallpointer(ds,s.str);
03478 
03479   x0->dec();
03480 }

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

Reimplemented from rpnfunction.

Definition at line 3450 of file rpnfunc.cpp.

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

03451 {
03452   if (ds.size()<=2)
03453     return;
03454 
03455   if (n.num<0)
03456     return;
03457 
03458   unsigned int k = (unsigned int)(n.num);
03459 
03460   if (k+1>ds.size())
03461     return;
03462 
03463   rpnbase* x0 = ds.front();
03464   ds.pop_front();
03465   x0->dec();
03466  
03467   rpnbase* xk = ds[k];
03468   xk->inc();
03469   ds.push_front( xk );
03470 }


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