Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| pathcd () | |
| pathcd (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~pathcd () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpnstring &s) |
| void | visit (deque< rpnbase * > &ds, rpnprogram &p) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 1001 of file rpnfunc.h.
| pathcd::pathcd | ( | ) | [inline] |
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 }
| 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().
| string const pathcd::name | ( | ) | const [inline, virtual] |
| 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 }
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 }
1.5.8