proj home

Files   Classes   Functions   Hierarchy  

varpushd Class Reference

#include <rpnfunc.h>

Inheritance diagram for varpushd:
Collaboration diagram for varpushd:

List of all members.

Public Member Functions

 varpushd ()
 varpushd (deque< rpnbase * > &ds, bool const evaluate=true)
 ~varpushd ()
rpnbasecopy () const
void visit (deque< rpnbase * > &ds, rpnstring &s)
void visit (deque< rpnbase * > &ds, rpnprogram &p)
string const name () const
void eval (deque< rpnbase * > &ds)


Detailed Description

Definition at line 456 of file rpnfunc.h.


Constructor & Destructor Documentation

varpushd::varpushd (  )  [inline]

Definition at line 460 of file rpnfunc.h.

Referenced by copy().

00460 {}

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

Definition at line 1174 of file rpnfunc.cpp.

References eval().

01175 {
01176   if (evaluate)
01177     eval(ds);
01178   else
01179     ds.push_front(this);
01180 }

varpushd::~varpushd (  )  [inline]

Definition at line 462 of file rpnfunc.h.

00462 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 1182 of file rpnfunc.cpp.

References varpushd().

01183 {
01184   return new varpushd();
01185 }

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

Reimplemented from rpnfunction.

Definition at line 1187 of file rpnfunc.cpp.

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

Referenced by varpushd().

01188 {
01189   if (!ds.empty())
01190     ds[0]->accept(ds,*this);
01191 
01192   dec();
01193 }

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

Reimplemented from rpnfunction.

Definition at line 468 of file rpnfunc.h.

00468 { return string("pushd"); }

void varpushd::visit ( deque< rpnbase * > &  ds,
rpnprogram p 
) [virtual]

Reimplemented from rpnfunction.

Definition at line 1224 of file rpnfunc.cpp.

01225 {
01226   rpnprogramstackstate().push(&p);
01227 }

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

Reimplemented from rpnfunction.

Definition at line 1195 of file rpnfunc.cpp.

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

01196 {
01197   rpnbase* x0 = ds.front();
01198   ds.pop_front();
01199 
01200   bool found(false);
01201   rpnprogram* p;
01202   vector<string> v;
01203   pathstuff().convert(v,s.str);
01204 
01205 //for (unsigned int i=0; i<v.size(); ++i)
01206 //{
01207 //  cout << "*" << v[i] << "*" << endl;
01208 //}
01209 
01210   pathstuff().findpath(found,p,v); 
01211 
01212 //cout << "varpushd::visit(ds," << s.str << ")" << endl;
01213 //cout << "  found=" << found << endl;
01214 
01215   if (found)
01216   {
01217     rpnprogramstackstate().push(p);
01218     x0->dec();
01219   }
01220   else
01221     ds.push_front(x0); // Restore the stack. 
01222 }


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

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