Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| varinc () | |
| varinc (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~varinc () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpnstring &s) |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| void | visit (deque< rpnbase * > &ds, rpnreal &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 565 of file rpnfunc.h.
| varinc::varinc | ( | ) | [inline] |
Definition at line 1446 of file rpnfunc.cpp.
References eval().
01447 { 01448 if (evaluate) 01449 eval(ds); 01450 else 01451 ds.push_front(this); 01452 }
| rpnbase * varinc::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 1454 of file rpnfunc.cpp.
References varinc().
01455 { 01456 return new varinc(); 01457 }
| void varinc::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 1459 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by varinc().
| string const varinc::name | ( | ) | const [inline, virtual] |
Reimplemented from rpnfunction.
Definition at line 1473 of file rpnfunc.cpp.
References rpnreal::num.
01474 { 01475 n.num += 1; 01476 }
| void varinc::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 1468 of file rpnfunc.cpp.
References rpninteger::num.
01469 { 01470 n.num += 1; 01471 }
Reimplemented from rpnfunction.
Definition at line 1478 of file rpnfunc.cpp.
References rpnbase::dec(), rpnbase::inc(), rpnbase::isinteger(), rpnbase::isreal(), rpnstring::str, and rpnvar::x.
01479 { 01480 rpnbase* x0 = ds.front(); 01481 ds.pop_front(); 01482 01483 bool res; 01484 unsigned int i,k; 01485 rpnvar* x; 01486 01487 rpnprogramstackstate().find(res,i,k,x,s.str); 01488 if (res) 01489 { 01490 bool foundtype(false); 01491 01492 rpnbase* w = x->x; 01493 if (w->isinteger()) 01494 { 01495 ((rpninteger*)w)->num += 1; 01496 foundtype=true; 01497 } 01498 else 01499 if (w->isreal()) 01500 { 01501 ((rpnreal*)w)->num += 1; 01502 foundtype=true; 01503 } 01504 01505 if (foundtype) 01506 { 01507 w->inc(); 01508 ds.push_front(w); 01509 } 01510 } 01511 01512 x0->dec(); 01513 }
1.5.8