Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpnpushn () | |
| rpnpushn (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~rpnpushn () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 56 of file rpnfunc.h.
| rpnpushn::rpnpushn | ( | ) | [inline] |
Definition at line 140 of file rpnfunc.cpp.
References eval().
00141 { 00142 if (evaluate) 00143 eval(ds); 00144 else 00145 ds.push_front(this); 00146 }
| rpnbase * rpnpushn::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 148 of file rpnfunc.cpp.
References rpnpushn().
00149 { 00150 return new rpnpushn(); 00151 }
| void rpnpushn::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 153 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpnpushn().
| string const rpnpushn::name | ( | ) | const [inline, virtual] |
| void rpnpushn::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 161 of file rpnfunc.cpp.
References rpnbase::dec(), and rpninteger::num.
00162 { 00163 if (k.num<0) 00164 return; 00165 00166 unsigned int n = (unsigned int)(k.num); 00167 00168 if (ds.size()<=n) 00169 return; 00170 00171 rpnbase* x0 = ds.front(); 00172 ds.pop_front(); 00173 00174 if (n==0) 00175 return; 00176 00177 for (unsigned int i=0, imax=k.num; i<imax; ++i) 00178 { 00179 rpnprogramstackstate().ds2.push_front(ds.front()); 00180 ds.pop_front(); 00181 } 00182 00183 x0->dec(); 00184 }
1.5.8