Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpnpopn () | |
| rpnpopn (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~rpnpopn () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 72 of file rpnfunc.h.
| rpnpopn::rpnpopn | ( | ) | [inline] |
Definition at line 187 of file rpnfunc.cpp.
References eval().
00188 { 00189 if (evaluate) 00190 eval(ds); 00191 else 00192 ds.push_front(this); 00193 }
| rpnbase * rpnpopn::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 195 of file rpnfunc.cpp.
References rpnpopn().
00196 { 00197 return new rpnpopn(); 00198 }
| void rpnpopn::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 200 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpnpopn().
| string const rpnpopn::name | ( | ) | const [inline, virtual] |
| void rpnpopn::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 208 of file rpnfunc.cpp.
References rpnbase::dec(), and rpninteger::num.
00209 { 00210 if (k.num<0) 00211 return; 00212 00213 unsigned int n = (unsigned int)(k.num); 00214 00215 if (rpnprogramstackstate().ds2.size()<n) 00216 return; 00217 00218 rpnbase* x0 = ds.front(); 00219 ds.pop_front(); 00220 00221 if (n==0) 00222 return; 00223 00224 for (unsigned int i=0, imax=n; i<imax; ++i) 00225 { 00226 ds.push_front( rpnprogramstackstate().ds2.front() ); 00227 rpnprogramstackstate().ds2.pop_front(); 00228 } 00229 00230 x0->dec(); 00231 }
1.5.8