proj home

Files   Classes   Functions   Hierarchy  

pathcd Class Reference

#include <rpnfunc.h>

Inheritance diagram for pathcd:
Collaboration diagram for pathcd:

List of all members.

Public Member Functions

 pathcd ()
 pathcd (deque< rpnbase * > &ds, bool const evaluate=true)
 ~pathcd ()
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 1001 of file rpnfunc.h.


Constructor & Destructor Documentation

pathcd::pathcd (  )  [inline]

Definition at line 1005 of file rpnfunc.h.

Referenced by copy().

01005 {}

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

Definition at line 3082 of file rpnfunc.cpp.

References eval().

03083 {
03084   if (evaluate)
03085     eval(ds);
03086   else
03087     ds.push_front(this);
03088 }

pathcd::~pathcd (  )  [inline]

Definition at line 1007 of file rpnfunc.h.

01007 {}


Member Function Documentation

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

Reimplemented from rpnfunction.

Definition at line 3090 of file rpnfunc.cpp.

References pathcd().

03091 {
03092   return new pathcd();
03093 }

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

Reimplemented from rpnfunction.

Definition at line 3095 of file rpnfunc.cpp.

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

Referenced by pathcd().

03096 {
03097   if (!ds.empty())
03098     ds[0]->accept(ds,*this);
03099 
03100   dec();
03101 }

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

Reimplemented from rpnfunction.

Definition at line 1013 of file rpnfunc.h.

01013 { return string("cd"); }

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

Reimplemented from rpnfunction.

Definition at line 3130 of file rpnfunc.cpp.

03131 {
03132   rpnprogramstackstate().push(&p);
03133 }

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

Reimplemented from rpnfunction.

Definition at line 3103 of file rpnfunc.cpp.

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

03104 {
03105   rpnbase* x0 = ds.front();
03106   ds.pop_front();
03107 
03108   bool found;
03109   deque<rpnprogram*> programlist;
03110   vector<string> v;
03111   pathstuff().convert(v,s.str);
03112 
03113   pathstuff().findpath(found,programlist,v); 
03114 
03115   if (found)
03116   {  
03117     rpnprogramstackstate().ps->clear();
03118     if (!programlist.empty())
03119     {
03120       for (unsigned int i=0, imax=programlist.size(); i<imax; ++i)
03121         rpnprogramstackstate().push(programlist[i]);
03122     }
03123 
03124     x0->dec();
03125   }
03126   else
03127     ds.push_front(x0); // Restore the stack. 
03128 }


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

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