Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| pstream () | |
| pstream (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~pstream () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpnprogram &pr) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 1151 of file rpnfunc.h.
| pstream::pstream | ( | ) | [inline] |
Definition at line 3711 of file rpnfunc.cpp.
References eval().
03712 { 03713 if (evaluate) 03714 eval(ds); 03715 else 03716 ds.push_front(this); 03717 }
| rpnbase * pstream::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 3719 of file rpnfunc.cpp.
References pstream().
03720 { 03721 return new pstream(); 03722 }
| void pstream::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3724 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by pstream().
| string const pstream::name | ( | ) | const [inline, virtual] |
| void pstream::visit | ( | deque< rpnbase * > & | ds, | |
| rpnprogram & | pr | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3733 of file rpnfunc.cpp.
References rpnprogram::eval(), rpnprogram::inc(), rpnbase::inc(), rpnbase::isprogram(), rpnprogram::print(), and rpnprogram::v.
03734 { 03735 if (ds.size()<2) 03736 return; 03737 03738 rpnbase* x1 = ds[1]; 03739 if (! x1->isprogram() ) 03740 return; 03741 03742 rpnprogram& p1 = *( (rpnprogram*) x1 ); 03743 03744 rpnprogram& p = * new rpnprogram(ds); 03745 03746 rpnprogramstackstate().push(&p); 03747 03748 if (!p1.v.empty()) 03749 { 03750 rpnbase* w; 03751 for (unsigned int i=0, imax = p1.v.size(); i<imax; ++i) 03752 { 03753 w = p1.v[i]; 03754 w->inc(); 03755 p.v.push_front(w); 03756 03757 cout << "*"; 03758 p0.print(cout); 03759 cout << endl; 03760 03761 p0.inc(); 03762 p0.eval( p.v ); 03763 } 03764 } 03765 03766 if (!p.v.empty()) 03767 reverse(p.v.begin(),p.v.end()); 03768 03769 rpnprogramstackstate().pop(); 03770 }
1.5.8