Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| rpnvectormake () | |
| rpnvectormake (deque< rpnbase * > &ds, bool const evaluate=false) | |
| ~rpnvectormake () | |
| 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 1115 of file rpnfunc.h.
| rpnvectormake::rpnvectormake | ( | ) | [inline] |
Definition at line 3483 of file rpnfunc.cpp.
References eval().
03484 { 03485 if (evaluate) 03486 eval(ds); 03487 else 03488 ds.push_front(this); 03489 }
| rpnbase * rpnvectormake::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 3491 of file rpnfunc.cpp.
References rpnvectormake().
03492 { 03493 return new rpnvectormake(); 03494 }
| void rpnvectormake::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3496 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by rpnvectormake().
| string const rpnvectormake::name | ( | ) | const [inline, virtual] |
Reimplemented from rpnfunction.
Definition at line 3524 of file rpnfunc.cpp.
References rpnbase::dec(), rpnbase::isinteger(), and rpnstring::str.
03525 { 03526 if (ds.size()<=3) 03527 return; 03528 03529 rpnbase* x1 = ds[1]; 03530 if (!x1->isinteger()) 03531 return; 03532 03533 int n = ((rpninteger*)x1)->num; 03534 if ( n<0 ) 03535 return; 03536 03537 unsigned int k = (unsigned int)n; 03538 if (k+2>=ds.size()) 03539 return; 03540 03541 rpnbase* x0 = ds.front(); 03542 ds.pop_front(); 03543 ds.pop_front(); 03544 03545 new rpnvar 03546 ( 03547 *(rpnprogramstackstate().ps->front()), 03548 new rpnvector(k), 03549 s.str 03550 ); 03551 03552 x0->dec(); 03553 x1->dec(); 03554 }
| void rpnvectormake::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 3504 of file rpnfunc.cpp.
References rpnbase::dec(), and rpninteger::num.
03505 { 03506 if (ds.size()<=2) 03507 return; 03508 03509 if (n.num<0) 03510 return; 03511 03512 unsigned int k = (unsigned int)(n.num); 03513 if (k+1>=ds.size()) 03514 return; 03515 03516 rpnbase* x0 = ds.front(); 03517 ds.pop_front(); 03518 x0->dec(); 03519 03520 rpnbase* xk = new rpnvector(k); 03521 ds.push_front( xk ); 03522 }
1.5.8