Files Classes Functions Hierarchy
#include <rpnfunc.h>
Public Member Functions | |
| ifthenelse () | |
| ifthenelse (deque< rpnbase * > &ds, bool const evaluate=true) | |
| ~ifthenelse () | |
| rpnbase * | copy () const |
| void | visit (deque< rpnbase * > &ds, rpnreal &n) |
| void | visit (deque< rpnbase * > &ds, rpninteger &n) |
| string const | name () const |
| void | eval (deque< rpnbase * > &ds) |
Definition at line 372 of file rpnfunc.h.
| ifthenelse::ifthenelse | ( | ) | [inline] |
Definition at line 840 of file rpnfunc.cpp.
References eval().
00841 { 00842 if (evaluate) 00843 eval(ds); 00844 else 00845 ds.push_front(this); 00846 }
| rpnbase * ifthenelse::copy | ( | ) | const [virtual] |
Reimplemented from rpnfunction.
Definition at line 848 of file rpnfunc.cpp.
References ifthenelse().
00849 { 00850 return new ifthenelse(); 00851 }
| void ifthenelse::eval | ( | deque< rpnbase * > & | ds | ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 853 of file rpnfunc.cpp.
References rpnbase::accept(), and rpnbase::dec().
Referenced by ifthenelse().
| string const ifthenelse::name | ( | ) | const [inline, virtual] |
| void ifthenelse::visit | ( | deque< rpnbase * > & | ds, | |
| rpninteger & | n | |||
| ) | [virtual] |
Reimplemented from rpnfunction.
Definition at line 884 of file rpnfunc.cpp.
References rpnbase::dec(), rpnbase::eval(), and rpninteger::num.
00885 { 00886 rpnbase* x0 = ds.front(); 00887 ds.pop_front(); 00888 rpnbase* x1 = ds.front(); 00889 ds.pop_front(); 00890 rpnbase* x2 = ds.front(); 00891 ds.pop_front(); 00892 00893 if (n.num != 0) 00894 { 00895 x2->dec(); 00896 x0->dec(); 00897 x1->eval(ds); 00898 } 00899 else 00900 { 00901 x2->dec(); 00902 x1->dec(); 00903 x0->eval(ds); 00904 } 00905 }
Reimplemented from rpnfunction.
Definition at line 861 of file rpnfunc.cpp.
References rpnbase::dec(), rpnbase::eval(), and rpnreal::num.
00862 { 00863 rpnbase* x0 = ds.front(); 00864 ds.pop_front(); 00865 rpnbase* x1 = ds.front(); 00866 ds.pop_front(); 00867 rpnbase* x2 = ds.front(); 00868 ds.pop_front(); 00869 00870 if (n.num != 0) 00871 { 00872 x2->dec(); 00873 x0->dec(); 00874 x1->eval(ds); 00875 } 00876 else 00877 { 00878 x2->dec(); 00879 x1->dec(); 00880 x0->eval(ds); 00881 } 00882 }
1.5.8