Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpninsert () | |
| rpninsert (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~rpninsert () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 1066 of file rpnfunc.h.
| rpninsert::rpninsert | ( | ) | [inline] |
Definition at line 3339 of file rpnfunc.cpp.
References eval().
03340 { 03341 if (evaluate) 03342 eval(ds); 03343 else 03344 ds.push_front(this); 03345 }
| rpnbase * rpninsert::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 3347 of file rpnfunc.cpp.
References rpninsert().
03348 { 03349 return new rpninsert(); 03350 }
| void rpninsert::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3352 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpninsert().
| string const rpninsert::name | ( | ) | const [inline, virtual] |
| void rpninsert::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3360 of file rpnfunc.cpp.
References rpnbase::dec(), and rpninteger::num.
03361 { 03362 if (ds.size()<2) 03363 return; 03364 03365 if (n.num<0) 03366 return; 03367 03368 unsigned int k = (unsigned int)(n.num); 03369 03370 if (k+2>ds.size()) 03371 return; 03372 03373 rpnbase* x0 = ds.front(); 03374 ds.pop_front(); 03375 rpnbase* x1 = ds.front(); 03376 ds.pop_front(); 03377 03378 ds.insert(ds.begin()+k,x1); 03379 03380 x0->dec(); 03381 }
1.5.8