Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpnerase () | |
| rpnerase (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~rpnerase () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 1082 of file rpnfunc.h.
| rpnerase::rpnerase | ( | ) | [inline] |
Definition at line 3384 of file rpnfunc.cpp.
References eval().
03385 { 03386 if (evaluate) 03387 eval(ds); 03388 else 03389 ds.push_front(this); 03390 }
| rpnbase * rpnerase::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 3392 of file rpnfunc.cpp.
References rpnerase().
03393 { 03394 return new rpnerase(); 03395 }
| void rpnerase::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3397 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpnerase().
| string const rpnerase::name | ( | ) | const [inline, virtual] |
| void rpnerase::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3405 of file rpnfunc.cpp.
References rpnbase::dec(), and rpninteger::num.
03406 { 03407 if (ds.size()<2) 03408 return; 03409 03410 if (n.num<0) 03411 return; 03412 03413 unsigned int k = (unsigned int)(n.num); 03414 03415 if (k+1>=ds.size()) 03416 return; 03417 03418 rpnbase* x0 = ds.front(); 03419 ds.pop_front(); 03420 03421 deque<rpnbase*>::iterator i = ds.begin()+k; 03422 (*i)->dec(); 03423 ds.erase(i); 03424 03425 x0->dec(); 03426 }
1.5.8