Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpnprogset () | |
| rpnprogset (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~rpnprogset () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| void | visit (deque< rpnbase * > &ds, rpnprogram &p) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 11 of file rpnfunc.h.
| rpnprogset::rpnprogset | ( | ) | [inline] |
Definition at line 57 of file rpnfunc.cpp.
00061 { 00062 if (evaluate) 00063 eval(ds); 00064 else 00065 ds.push_front(this); 00066 }
| rpnbase * rpnprogset::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 68 of file rpnfunc.cpp.
References rpnprogset().
00069 { 00070 return new rpnprogset(); 00071 }
| void rpnprogset::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 73 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
| string const rpnprogset::name | ( | ) | const [inline, virtual] |
| void rpnprogset::visit | ( | deque< rpnbase * > & | ds, | |
| rpnprogram & | p | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 50 of file rpnfunc.cpp.
References rpnprogram::state.
00051 { 00052 new rpninteger(ds,p.state); 00053 }
| void rpnprogset::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 25 of file rpnfunc.cpp.
References rpnbase::dec(), rpnbase::isprogram(), rpninteger::num, and rpnprogram::state.
00026 { 00027 if (ds.size()<2) 00028 return; 00029 00030 rpnbase* x0 = ds.front(); 00031 ds.pop_front(); 00032 rpnbase* x1 = ds.front(); 00033 bool restore(true); 00034 if (x1->isprogram()) 00035 { 00036 rpnprogram * p = (rpnprogram*)x1; 00037 if ((n.num>=0)&&(n.num<4)) 00038 { 00039 restore=false; 00040 p->state = n.num; 00041 x0->dec(); 00042 } 00043 } 00044 00045 if (restore) 00046 ds.push_front(x0); 00047 }
1.5.8