Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpndupn () | |
| rpndupn (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~rpndupn () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 172 of file rpnfunc.h.
| rpndupn::rpndupn | ( | ) | [inline] |
Definition at line 394 of file rpnfunc.cpp.
References eval().
00395 { 00396 if (evaluate) 00397 eval(ds); 00398 else 00399 ds.push_front(this); 00400 }
| rpnbase * rpndupn::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 402 of file rpnfunc.cpp.
References rpndupn().
00403 { 00404 return new rpndupn(); 00405 }
| void rpndupn::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 407 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpndupn().
| string const rpndupn::name | ( | ) | const [inline, virtual] |
| void rpndupn::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 415 of file rpnfunc.cpp.
References rpnbase::dec(), and rpninteger::num.
00416 { 00417 rpnbase* x0 = ds.front(); 00418 ds.pop_front(); 00419 00420 unsigned int const k(n.num); 00421 x0->dec(); 00422 00423 if (n.num<=0) 00424 return; 00425 00426 if (ds.size()<k) 00427 return; 00428 00429 for (unsigned int i=0; i<k; ++i) 00430 ds.push_front( ds[k-1]->copy() ); 00431 00432 }
1.5.8