Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpnpointermake () | |
| rpnpointermake (deque< rpnbase * > &ds, bool const evaluate=false) | |
| ~rpnpointermake () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| void | visit (deque< rpnbase * > &ds, rpnstring &s) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 1098 of file rpnfunc.h.
| rpnpointermake::rpnpointermake | ( | ) | [inline] |
Definition at line 3429 of file rpnfunc.cpp.
References eval().
03430 { 03431 if (evaluate) 03432 eval(ds); 03433 else 03434 ds.push_front(this); 03435 }
| rpnbase * rpnpointermake::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 3437 of file rpnfunc.cpp.
References rpnpointermake().
03438 { 03439 return new rpnpointermake(); 03440 }
| void rpnpointermake::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3442 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpnpointermake().
| string const rpnpointermake::name | ( | ) | const [inline, virtual] |
Reimplemented from rpnfunction.
Definition at line 3472 of file rpnfunc.cpp.
References rpnbase::dec(), and rpnstring::str.
03473 { 03474 rpnbase* x0 = ds.front(); 03475 ds.pop_front(); 03476 03477 rpnprogramstackstate().recallpointer(ds,s.str); 03478 03479 x0->dec(); 03480 }
| void rpnpointermake::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3450 of file rpnfunc.cpp.
References rpnbase::dec(), rpnbase::inc(), and rpninteger::num.
03451 { 03452 if (ds.size()<=2) 03453 return; 03454 03455 if (n.num<0) 03456 return; 03457 03458 unsigned int k = (unsigned int)(n.num); 03459 03460 if (k+1>ds.size()) 03461 return; 03462 03463 rpnbase* x0 = ds.front(); 03464 ds.pop_front(); 03465 x0->dec(); 03466 03467 rpnbase* xk = ds[k]; 03468 xk->inc(); 03469 ds.push_front( xk ); 03470 }
1.5.8