proj home

Files   Classes   Functions   Hierarchy  

rpnfunc.h

Go to the documentation of this file.
00001 #ifndef RPNFUNC_H
00002 #define RPNFUNC_H
00003 
00004 
00005 #include <deque>
00006 using namespace std;
00007 
00008 #include <rpn.h>
00009 
00010 
00011 class rpnprogset: public rpnfunction
00012 {
00013 public:
00014 
00015   rpnprogset() {}
00016   rpnprogset(deque<rpnbase*>& ds, bool const evaluate=true);
00017   ~rpnprogset() {}
00018   rpnbase* copy() const;
00019 
00020   void visit(deque<rpnbase*>& ds,rpninteger& n);
00021   void visit(deque<rpnbase*>& ds,rpnprogram& p);
00022 
00023   string const name() const { return string("p@"); }
00024 
00025   void eval( deque<rpnbase*>& ds );
00026 };
00027 
00028 class rpnpush : public rpnfunction
00029 {
00030 public:
00031 
00032   rpnpush() {}
00033   rpnpush(deque<rpnbase*>& ds, bool const evaluate=true);
00034   ~rpnpush() {}
00035   rpnbase* copy() const;
00036 
00037   string const name() const { return string("push"); }
00038 
00039   void eval( deque<rpnbase*>& ds );
00040 };
00041 
00042 class rpnpop : public rpnfunction
00043 {
00044 public:
00045 
00046   rpnpop() {}
00047   rpnpop(deque<rpnbase*>& ds, bool const evaluate=true);
00048   ~rpnpop() {}
00049   rpnbase* copy() const;
00050 
00051   string const name() const { return string("pop"); }
00052 
00053   void eval( deque<rpnbase*>& ds );
00054 };
00055 
00056 class rpnpushn : public rpnfunction
00057 {
00058 public:
00059 
00060   rpnpushn() {}
00061   rpnpushn(deque<rpnbase*>& ds, bool const evaluate=true);
00062   ~rpnpushn() {}
00063   rpnbase* copy() const;
00064 
00065   void visit(deque<rpnbase*>& ds,rpninteger& n);
00066 
00067   string const name() const { return string("pushn"); }
00068 
00069   void eval( deque<rpnbase*>& ds );
00070 };
00071 
00072 class rpnpopn : public rpnfunction
00073 {
00074 public:
00075 
00076   rpnpopn() {}
00077   rpnpopn(deque<rpnbase*>& ds, bool const evaluate=true);
00078   ~rpnpopn() {}
00079   rpnbase* copy() const;
00080 
00081   void visit(deque<rpnbase*>& ds,rpninteger& n);
00082 
00083   string const name() const { return string("popn"); }
00084 
00085   void eval( deque<rpnbase*>& ds );
00086 };
00087 
00088 class dssize2 : public rpnfunction
00089 {
00090 public:
00091 
00092   dssize2() {}
00093   dssize2(deque<rpnbase*>& ds, bool const evaluate=true);
00094   ~dssize2() {}
00095   rpnbase* copy() const;
00096 
00097   string const name() const { return string("size2"); }
00098 
00099   void eval( deque<rpnbase*>& ds );
00100 };
00101 
00102 class rpneval : public rpnfunction
00103 {
00104 public:
00105 
00106   rpneval() {}
00107   rpneval(deque<rpnbase*>& ds, bool const evaluate=true);
00108   ~rpneval() {}
00109   rpnbase* copy() const;
00110 
00111   string const name() const { return string("eval"); }
00112 
00113   void eval( deque<rpnbase*>& ds );
00114 };
00115 
00116 class rpnclear : public rpnfunction
00117 {
00118 public:
00119 
00120   rpnclear() {}
00121   rpnclear(deque<rpnbase*>& ds, bool const evaluate=true);
00122   ~rpnclear() {}
00123   rpnbase* copy() const;
00124 
00125   string const name() const { return string("clear"); }
00126 
00127   void eval( deque<rpnbase*>& ds );
00128 };
00129 
00130 class rpnclearvar : public rpnfunction
00131 {
00132 public:
00133 
00134   rpnclearvar() {}
00135   rpnclearvar(deque<rpnbase*>& ds, bool const evaluate=true);
00136   ~rpnclearvar() {}
00137   rpnbase* copy() const;
00138 
00139   string const name() const { return string("clearvar"); }
00140 
00141   void eval( deque<rpnbase*>& ds );
00142 };
00143 
00144 class rpnclearboth : public rpnfunction
00145 {
00146 public:
00147 
00148   rpnclearboth() {}
00149   rpnclearboth(deque<rpnbase*>& ds, bool const evaluate=true);
00150   ~rpnclearboth() {}
00151   rpnbase* copy() const;
00152 
00153   string const name() const { return string("clearboth"); }
00154 
00155   void eval( deque<rpnbase*>& ds );
00156 };
00157 
00158 class rpndup : public rpnfunction
00159 {
00160 public:
00161 
00162   rpndup() {}
00163   rpndup(deque<rpnbase*>& ds, bool const evaluate=true);
00164   ~rpndup() {}
00165   rpnbase* copy() const;
00166 
00167   string const name() const { return string("dup"); }
00168 
00169   void eval( deque<rpnbase*>& ds );
00170 };
00171 
00172 class rpndupn : public rpnfunction
00173 {
00174 public:
00175 
00176   rpndupn() {}
00177   rpndupn(deque<rpnbase*>& ds, bool const evaluate=true);
00178   ~rpndupn() {}
00179   rpnbase* copy() const;
00180 
00181   void visit(deque<rpnbase*>& ds,rpninteger& n);
00182 
00183   string const name() const { return string("dupn"); }
00184 
00185   void eval( deque<rpnbase*>& ds );
00186 };
00187 
00188 class dssize : public rpnfunction
00189 {
00190 public:
00191 
00192   dssize() {}
00193   dssize(deque<rpnbase*>& ds, bool const evaluate=true);
00194   ~dssize() {}
00195   rpnbase* copy() const;
00196 
00197   string const name() const { return string("size"); }
00198 
00199   void eval( deque<rpnbase*>& ds );
00200 };
00201 
00202 class rev : public rpnfunction
00203 {
00204 public:
00205 
00206   rev() {}
00207   rev(deque<rpnbase*>& ds, bool const evaluate=true);
00208   ~rev() {}
00209   rpnbase* copy() const;
00210 
00211   string const name() const { return string("rev"); }
00212 
00213   void eval( deque<rpnbase*>& ds );
00214 };
00215 
00216 class rot : public rpnfunction
00217 {
00218 public:
00219 
00220   rot() {}
00221   rot(deque<rpnbase*>& ds, bool const evaluate=true);
00222   ~rot() {}
00223   rpnbase* copy() const;
00224 
00225   string const name() const { return string("rot"); }
00226 
00227   void eval( deque<rpnbase*>& ds );
00228 };
00229 
00230 class rotn : public rpnfunction
00231 {
00232 public:
00233 
00234   rotn() {}
00235   rotn(deque<rpnbase*>& ds, bool const evaluate=true);
00236   ~rotn() {}
00237   rpnbase* copy() const;
00238 
00239   void visit(deque<rpnbase*>& ds,rpninteger& n);
00240 
00241   string const name() const { return string("rotn"); }
00242 
00243   void eval( deque<rpnbase*>& ds );
00244 };
00245 
00246 class rpnswap: public rpnfunction
00247 {
00248 public:
00249 
00250   rpnswap() {}
00251   rpnswap(deque<rpnbase*>& ds, bool const evaluate=true);
00252   ~rpnswap() {}
00253   rpnbase* copy() const;
00254 
00255   string const name() const { return string("swap"); }
00256 
00257   void eval( deque<rpnbase*>& ds );
00258 };
00259 
00260 
00261 class rpnswap2: public rpnfunction
00262 {
00263 public:
00264 
00265   rpnswap2() {}
00266   rpnswap2(deque<rpnbase*>& ds, bool const evaluate=true);
00267   ~rpnswap2() {}
00268   rpnbase* copy() const;
00269 
00270   string const name() const { return string("|"); }
00271 
00272   void eval( deque<rpnbase*>& ds );
00273 };
00274 
00275 
00276 class dropi: public rpnfunction
00277 {
00278 public:
00279 
00280   dropi() {}
00281   dropi(deque<rpnbase*>& ds, bool const evaluate=true);
00282   ~dropi() {}
00283   rpnbase* copy() const;
00284 
00285   void visit(deque<rpnbase*>& ds,rpninteger& n);
00286 
00287   string const name() const { return string("\\i"); }
00288 
00289   void eval( deque<rpnbase*>& ds );
00290 };
00291 
00292 class drop: public rpnfunction
00293 {
00294 public:
00295 
00296   drop() {}
00297   drop(deque<rpnbase*>& ds, bool const evaluate=true);
00298   ~drop() {}
00299   rpnbase* copy() const;
00300 
00301   string const name() const { return string("drop"); }
00302 
00303   void eval( deque<rpnbase*>& ds );
00304 };
00305 
00306 
00307 
00308 
00309 // Identical class to drop. Added for symbolic drop "\" .
00310 class dropsymb: public drop 
00311 {
00312 public:
00313 
00314   dropsymb() {}
00315   dropsymb(deque<rpnbase*>& ds, bool const evaluate=true);
00316   ~dropsymb() {}
00317 
00318   string const name() const { return string("\\"); }
00319 
00320 };
00321 
00322 class dropn: public rpnfunction
00323 {
00324 public:
00325 
00326   dropn() {}
00327   dropn(deque<rpnbase*>& ds, bool const evaluate=true);
00328   ~dropn() {}
00329   rpnbase* copy() const;
00330 
00331   void visit(deque<rpnbase*>& ds,rpninteger& n);
00332 
00333   string const name() const { return string("dropn"); }
00334 
00335   void eval( deque<rpnbase*>& ds );
00336 };
00337 
00338 class ifthen : public rpnfunction
00339 {
00340 public:
00341 
00342   ifthen() {}
00343   ifthen(deque<rpnbase*>& ds, bool const evaluate=true);
00344   ~ifthen() {}
00345   rpnbase* copy() const;
00346 
00347   void visit(deque<rpnbase*>& ds,rpnreal& n);
00348   void visit(deque<rpnbase*>& ds,rpninteger& n);
00349 
00350   string const name() const { return string("ifthen"); }
00351 
00352   void eval( deque<rpnbase*>& ds );
00353 }; 
00354 
00355 class thenif : public rpnfunction
00356 {
00357 public:
00358 
00359   thenif() {}
00360   thenif(deque<rpnbase*>& ds, bool const evaluate=true);
00361   ~thenif() {}
00362   rpnbase* copy() const;
00363 
00364   void visit(deque<rpnbase*>& ds,rpnreal& n);
00365   void visit(deque<rpnbase*>& ds,rpninteger& n);
00366 
00367   string const name() const { return string("thenif"); }
00368 
00369   void eval( deque<rpnbase*>& ds );
00370 }; 
00371 
00372 class ifthenelse : public rpnfunction
00373 {
00374 public:
00375 
00376   ifthenelse() {}
00377   ifthenelse(deque<rpnbase*>& ds, bool const evaluate=true);
00378   ~ifthenelse() {}
00379   rpnbase* copy() const;
00380 
00381   void visit(deque<rpnbase*>& ds,rpnreal& n);
00382   void visit(deque<rpnbase*>& ds,rpninteger& n);
00383 
00384   string const name() const { return string("ifthenelse"); }
00385 
00386   void eval( deque<rpnbase*>& ds );
00387 };
00388 
00389 class thenelseif : public rpnfunction
00390 {
00391 public:
00392 
00393   thenelseif() {}
00394   thenelseif(deque<rpnbase*>& ds, bool const evaluate=true);
00395   ~thenelseif() {}
00396   rpnbase* copy() const;
00397 
00398   void visit(deque<rpnbase*>& ds,rpnreal& n);
00399   void visit(deque<rpnbase*>& ds,rpninteger& n);
00400 
00401   string const name() const { return string("thenelseif"); }
00402 
00403   void eval( deque<rpnbase*>& ds );
00404 };
00405 
00406 class var: public rpnfunction
00407 {
00408 public:
00409 
00410   var() {}
00411   var(deque<rpnbase*>& ds, bool const evaluate=true);
00412   ~var() {}
00413   rpnbase* copy() const;
00414 
00415   void visit(deque<rpnbase*>& ds,rpnstring& n);
00416 
00417   string const name() const { return string("var"); }
00418 
00419   void eval( deque<rpnbase*>& ds );
00420 };
00421 
00422 class vardel: public rpnfunction
00423 {
00424 public:
00425 
00426   vardel() {}
00427   vardel(deque<rpnbase*>& ds, bool const evaluate=true);
00428   ~vardel() {}
00429   rpnbase* copy() const;
00430 
00431   void visit(deque<rpnbase*>& ds,rpnstring& n);
00432 
00433   string const name() const { return string("rm"); }
00434 
00435   void eval( deque<rpnbase*>& ds );
00436 };
00437 
00438 class vareval: public rpnfunction
00439 {
00440 public:
00441 
00442   vareval() {}
00443   vareval(deque<rpnbase*>& ds, bool const evaluate=true);
00444   ~vareval() {}
00445   rpnbase* copy() const;
00446 
00447   void visit(deque<rpnbase*>& ds,rpnstring& n);
00448   void visit(deque<rpnbase*>& ds,rpninteger& n);
00449   void visit(deque<rpnbase*>& ds,rpnprogram& p);
00450 
00451   string const name() const { return string("&"); }
00452 
00453   void eval( deque<rpnbase*>& ds );
00454 };
00455 
00456 class varpushd: public rpnfunction
00457 {
00458 public:
00459 
00460   varpushd() {}
00461   varpushd(deque<rpnbase*>& ds, bool const evaluate=true);
00462   ~varpushd() {}
00463   rpnbase* copy() const;
00464 
00465   void visit(deque<rpnbase*>& ds,rpnstring& s);
00466   void visit(deque<rpnbase*>& ds,rpnprogram& p);
00467 
00468   string const name() const { return string("pushd"); }
00469 
00470   void eval( deque<rpnbase*>& ds );
00471 };
00472 
00473 class varpopd: public rpnfunction
00474 {
00475 public:
00476 
00477   varpopd() {}
00478   varpopd(deque<rpnbase*>& ds, bool const evaluate=true);
00479   ~varpopd() {}
00480   rpnbase* copy() const;
00481 
00482   string const name() const { return string("popd"); }
00483 
00484   void eval( deque<rpnbase*>& ds );
00485 };
00486 
00487 
00488 class depthd: public rpnfunction
00489 {
00490 public:
00491 
00492   depthd() {}
00493   depthd(deque<rpnbase*>& ds, bool const evaluate=true);
00494   ~depthd() {}
00495   rpnbase* copy() const;
00496 
00497   string const name() const { return string("depthd"); }
00498 
00499   void eval( deque<rpnbase*>& ds );
00500 };
00501 
00502 
00503 
00504 class varls: public rpnfunction
00505 {
00506 public:
00507 
00508   varls() {}
00509   varls(deque<rpnbase*>& ds, bool const evaluate=true);
00510   ~varls() {}
00511   rpnbase* copy() const;
00512 
00513   string const name() const { return string("ls"); }
00514 
00515   void eval( deque<rpnbase*>& ds );
00516 };
00517 
00518 class vartree : public rpnfunction
00519 {
00520 public:
00521 
00522   vartree() {}
00523   vartree(deque<rpnbase*>& ds, bool const evaluate=true);
00524   ~vartree() {}
00525   rpnbase* copy() const;
00526 
00527   void draw( rpnprogram* p, unsigned int depth );
00528 
00529   string const name() const { return string("tree"); }
00530 
00531   void eval( deque<rpnbase*>& ds );
00532 };
00533 
00534 class varpwd : public rpnfunction
00535 {
00536 public:
00537 
00538   varpwd() {}
00539   varpwd(deque<rpnbase*>& ds, bool const evaluate=true);
00540   ~varpwd() {}
00541   rpnbase* copy() const;
00542 
00543   string const name() const { return string("pwd"); }
00544 
00545   void eval( deque<rpnbase*>& ds );
00546 };
00547 
00548 class pathtoggle : public rpnfunction
00549 {
00550 public:
00551 
00552   pathtoggle() {}
00553   pathtoggle(deque<rpnbase*>& ds, bool const evaluate=true);
00554   ~pathtoggle() {}
00555   rpnbase* copy() const;
00556 
00557   string const name() const { return string("path!"); }
00558 
00559   void visit(deque<rpnbase*>& ds,rpnstring& path);
00560   void visit(deque<rpnbase*>& ds,rpnprogram& path);
00561 
00562   void eval( deque<rpnbase*>& ds );
00563 };
00564 
00565 class varinc: public rpnfunction
00566 {
00567 public:
00568 
00569   varinc() {}
00570   varinc(deque<rpnbase*>& ds, bool const evaluate=true);
00571   ~varinc() {}
00572   rpnbase* copy() const;
00573 
00574   void visit(deque<rpnbase*>& ds,rpnstring& s);
00575   void visit(deque<rpnbase*>& ds,rpninteger& n);
00576   void visit(deque<rpnbase*>& ds,rpnreal& n);
00577 
00578   string const name() const { return string("++"); }
00579 
00580   void eval( deque<rpnbase*>& ds );
00581 };
00582 
00583 class vardec: public rpnfunction
00584 {
00585 public:
00586 
00587   vardec() {}
00588   vardec(deque<rpnbase*>& ds, bool const evaluate=true);
00589   ~vardec() {}
00590   rpnbase* copy() const;
00591 
00592   void visit(deque<rpnbase*>& ds,rpnstring& s);
00593   void visit(deque<rpnbase*>& ds,rpninteger& n);
00594   void visit(deque<rpnbase*>& ds,rpnreal& n);
00595 
00596   string const name() const { return string("--"); }
00597 
00598   void eval( deque<rpnbase*>& ds );
00599 };
00600 
00601 class varexists: public rpnfunction
00602 {
00603 public:
00604 
00605   varexists() {}
00606   varexists(deque<rpnbase*>& ds, bool const evaluate=true);
00607   ~varexists() {}
00608   rpnbase* copy() const;
00609 
00610   void visit(deque<rpnbase*>& ds,rpnstring& n);
00611 
00612   string const name() const { return string("isvar"); }
00613 
00614   void eval( deque<rpnbase*>& ds );
00615 };
00616 
00617 class varreplace: public rpnfunction
00618 {
00619 public:
00620 
00621   varreplace() {}
00622   varreplace(deque<rpnbase*>& ds, bool const evaluate=true);
00623   ~varreplace() {}
00624   rpnbase* copy() const;
00625 
00626   void visit(deque<rpnbase*>& ds,rpnstring& n);
00627   void visit(deque<rpnbase*>& ds,rpninteger& k);
00628 
00629   string const name() const { return string("="); }
00630 
00631   void eval( deque<rpnbase*>& ds );
00632 };
00633 
00634 class varrecall: public rpnfunction
00635 {
00636 public:
00637 
00638   varrecall() {}
00639   varrecall(deque<rpnbase*>& ds, bool const evaluate=true);
00640   ~varrecall() {}
00641   rpnbase* copy() const;
00642 
00643   void visit(deque<rpnbase*>& ds,rpnstring& n);
00644   void visit(deque<rpnbase*>& ds,rpninteger& n);
00645 
00646 
00647   string const name() const { return string("rcl"); }
00648 
00649   void eval( deque<rpnbase*>& ds );
00650 };
00651 
00652 class rpnnot: public rpnfunction
00653 {
00654 public:
00655 
00656   rpnnot() {}
00657   rpnnot(deque<rpnbase*>& ds, bool const evaluate=true);
00658   ~rpnnot() {}
00659   rpnbase* copy() const;
00660 
00661   void visit(deque<rpnbase*>& ds,rpnreal& n);
00662   void visit(deque<rpnbase*>& ds,rpninteger& n);
00663 
00664   string const name() const { return string("!"); }
00665 
00666   void eval( deque<rpnbase*>& ds );
00667 };
00668 
00669 class rpnneg: public rpnfunction
00670 {
00671 public:
00672 
00673   rpnneg() {}
00674   rpnneg(deque<rpnbase*>& ds, bool const evaluate=true);
00675   ~rpnneg() {}
00676   rpnbase* copy() const;
00677 
00678   void visit(deque<rpnbase*>& ds,rpninteger& n);
00679   void visit(deque<rpnbase*>& ds,rpnreal& n);
00680   void visit(deque<rpnbase*>& ds,rpncomplex& n);
00681 
00682   string const name() const { return string("neg"); }
00683 
00684   void eval( deque<rpnbase*>& ds );
00685 };
00686 
00687 
00688 class rpnadd: public rpnfunction
00689 {
00690 public:
00691 
00692   rpnadd() {}
00693   rpnadd(deque<rpnbase*>& ds, bool const evaluate=true);
00694   ~rpnadd() {}
00695   rpnbase* copy() const;
00696 
00697   void visit(deque<rpnbase*>& ds,rpninteger& n);
00698   void visit(deque<rpnbase*>& ds,rpnreal& n);
00699   void visit(deque<rpnbase*>& ds,rpncomplex& n);
00700 
00701   string const name() const { return string("+"); }
00702 
00703   void eval( deque<rpnbase*>& ds );
00704 };
00705 
00706 
00707 class rpnmultiply: public rpnfunction
00708 {
00709 public:
00710 
00711   rpnmultiply() {}
00712   rpnmultiply(deque<rpnbase*>& ds, bool const evaluate=true);
00713   ~rpnmultiply() {}
00714   rpnbase* copy() const;
00715 
00716   void visit(deque<rpnbase*>& ds,rpninteger& n);
00717   void visit(deque<rpnbase*>& ds,rpnreal& n);
00718   void visit(deque<rpnbase*>& ds,rpncomplex& n);
00719 
00720   string const name() const { return string("*"); }
00721 
00722   void eval( deque<rpnbase*>& ds );
00723 };
00724 
00725 
00726 class rpnlessthan: public rpnfunction
00727 {
00728 public:
00729 
00730   rpnlessthan() {}
00731   rpnlessthan(deque<rpnbase*>& ds, bool const evaluate=true);
00732   ~rpnlessthan() {}
00733   rpnbase* copy() const;
00734 
00735   void visit(deque<rpnbase*>& ds,rpnreal& n);
00736   void visit(deque<rpnbase*>& ds,rpninteger& n);
00737 
00738   string const name() const { return string("<"); }
00739 
00740   void eval( deque<rpnbase*>& ds );
00741 };
00742 
00743 class rpnlessthanequal: public rpnfunction
00744 {
00745 public:
00746 
00747   rpnlessthanequal() {}
00748   rpnlessthanequal(deque<rpnbase*>& ds, bool const evaluate=true);
00749   ~rpnlessthanequal() {}
00750   rpnbase* copy() const;
00751 
00752   void visit(deque<rpnbase*>& ds,rpnreal& n);
00753   void visit(deque<rpnbase*>& ds,rpninteger& n);
00754 
00755   string const name() const { return string("<="); }
00756 
00757   void eval( deque<rpnbase*>& ds );
00758 };
00759 
00760 class rpngreaterthanequal: public rpnfunction
00761 {
00762 public:
00763 
00764   rpngreaterthanequal() {}
00765   rpngreaterthanequal(deque<rpnbase*>& ds, bool const evaluate=true);
00766   ~rpngreaterthanequal() {}
00767   rpnbase* copy() const;
00768 
00769   void visit(deque<rpnbase*>& ds,rpnreal& n);
00770   void visit(deque<rpnbase*>& ds,rpninteger& n);
00771 
00772   string const name() const { return string(">="); }
00773 
00774   void eval( deque<rpnbase*>& ds );
00775 };
00776 
00777 class rpngreaterthan: public rpnfunction
00778 {
00779 public:
00780 
00781   rpngreaterthan() {}
00782   rpngreaterthan(deque<rpnbase*>& ds, bool const evaluate=true);
00783   ~rpngreaterthan() {}
00784   rpnbase* copy() const;
00785 
00786   void visit(deque<rpnbase*>& ds,rpnreal& n);
00787   void visit(deque<rpnbase*>& ds,rpninteger& n);
00788 
00789   string const name() const { return string(">"); }
00790 
00791   void eval( deque<rpnbase*>& ds );
00792 };
00793 
00794 class rpnequal: public rpnfunction
00795 {
00796 public:
00797 
00798   rpnequal() {}
00799   rpnequal(deque<rpnbase*>& ds, bool const evaluate=true);
00800   ~rpnequal() {}
00801   rpnbase* copy() const;
00802 
00803   void visit(deque<rpnbase*>& ds,rpnreal& n);
00804   void visit(deque<rpnbase*>& ds,rpninteger& n);
00805 
00806   string const name() const { return string("=="); }
00807 
00808   void eval( deque<rpnbase*>& ds );
00809 };
00810 
00811 class rpnfor: public rpnfunction
00812 {
00813 public:
00814 
00815   rpnfor() {}
00816   rpnfor(deque<rpnbase*>& ds, bool const evaluate=true);
00817   ~rpnfor() {}
00818   rpnbase* copy() const;
00819 
00820   void visit(deque<rpnbase*>& ds,rpnprogram& n);
00821 
00822   string const name() const { return string("for"); }
00823 
00824   void eval( deque<rpnbase*>& ds );
00825 };
00826 
00827 class rpnforn: public rpnfunction
00828 {
00829 public:
00830 
00831   rpnforn() {}
00832   rpnforn(deque<rpnbase*>& ds, bool const evaluate=true);
00833   ~rpnforn() {}
00834   rpnbase* copy() const;
00835 
00836   void visit(deque<rpnbase*>& ds,rpnprogram& n);
00837   void visit(deque<rpnbase*>& ds,rpninteger& n);
00838 
00839   string const name() const { return string("forn"); }
00840 
00841   void eval( deque<rpnbase*>& ds );
00842 };
00843 
00844 
00845 class prognew: public rpnfunction
00846 {
00847 public:
00848 
00849   prognew() {}
00850   prognew(deque<rpnbase*>& ds, bool const evaluate=true);
00851   ~prognew() {}
00852   rpnbase* copy() const;
00853 
00854   void visit(deque<rpnbase*>& ds,rpninteger& n);
00855 
00856   string const name() const { return string("pnew"); }
00857 
00858   void eval( deque<rpnbase*>& ds );
00859 };
00860 
00861 
00862 class progdecompose: public rpnfunction
00863 {
00864 public:
00865 
00866   progdecompose() {}
00867   progdecompose(deque<rpnbase*>& ds, bool const evaluate=true);
00868   ~progdecompose() {}
00869   rpnbase* copy() const;
00870 
00871   void visit(deque<rpnbase*>& ds,rpnprogram& p);
00872 
00873   string const name() const { return string("pnew!"); }
00874 
00875   void eval( deque<rpnbase*>& ds );
00876 };
00877 
00878 
00879 class progrev: public rpnfunction
00880 {
00881 public:
00882 
00883   progrev() {}
00884   progrev(deque<rpnbase*>& ds, bool const evaluate=true);
00885   ~progrev() {}
00886   rpnbase* copy() const;
00887 
00888   void visit(deque<rpnbase*>& ds,rpnprogram& pr);
00889 
00890   string const name() const { return string("prev"); }
00891 
00892   void eval( deque<rpnbase*>& ds );
00893 };
00894 
00895 class rpnsubtract: public rpnfunction
00896 {
00897 public:
00898 
00899   rpnsubtract() {}
00900   rpnsubtract(deque<rpnbase*>& ds, bool const evaluate=true);
00901   ~rpnsubtract() {}
00902   rpnbase* copy() const;
00903 
00904   void visit(deque<rpnbase*>& ds,rpninteger& n);
00905   void visit(deque<rpnbase*>& ds,rpnreal& n);
00906   void visit(deque<rpnbase*>& ds,rpncomplex& n);
00907 
00908   string const name() const { return string("-"); }
00909 
00910   void eval( deque<rpnbase*>& ds );
00911 };
00912 
00913 class rpndivide: public rpnfunction
00914 {
00915 public:
00916 
00917   rpndivide() {}
00918   rpndivide(deque<rpnbase*>& ds, bool const evaluate=true);
00919   ~rpndivide() {}
00920   rpnbase* copy() const;
00921 
00922   void visit(deque<rpnbase*>& ds,rpninteger& n);
00923   void visit(deque<rpnbase*>& ds,rpnreal& n);
00924   void visit(deque<rpnbase*>& ds,rpncomplex& n);
00925 
00926   string const name() const { return string("/"); }
00927 
00928   void eval( deque<rpnbase*>& ds );
00929 };
00930 
00931 class isrpnstring: public rpnfunction
00932 {
00933 public:
00934 
00935   isrpnstring() {}
00936   isrpnstring(deque<rpnbase*>& ds, bool const evaluate=true);
00937   ~isrpnstring() {}
00938   rpnbase* copy() const;
00939 
00940   string const name() const { return string("isstring"); }
00941 
00942   void eval( deque<rpnbase*>& ds );
00943 };
00944 
00945 class isrpninteger: public rpnfunction
00946 {
00947 public:
00948 
00949   isrpninteger() {}
00950   isrpninteger(deque<rpnbase*>& ds, bool const evaluate=true);
00951   ~isrpninteger() {}
00952   rpnbase* copy() const;
00953 
00954   string const name() const { return string("isinteger"); }
00955 
00956   void eval( deque<rpnbase*>& ds );
00957 };
00958 
00959 class isrpnreal : public rpnfunction
00960 {
00961 public:
00962 
00963   isrpnreal() {}
00964   isrpnreal(deque<rpnbase*>& ds, bool const evaluate=true);
00965   ~isrpnreal() {}
00966   rpnbase* copy() const;
00967 
00968   string const name() const { return string("isreal"); }
00969 
00970   void eval( deque<rpnbase*>& ds );
00971 };
00972 
00973 class isrpncomplex : public rpnfunction
00974 {
00975 public:
00976 
00977   isrpncomplex() {}
00978   isrpncomplex(deque<rpnbase*>& ds, bool const evaluate=true);
00979   ~isrpncomplex() {}
00980   rpnbase* copy() const;
00981 
00982   string const name() const { return string("iscomplex"); }
00983 
00984   void eval( deque<rpnbase*>& ds );
00985 };
00986 
00987 class isrpnprogram : public rpnfunction
00988 {
00989 public:
00990 
00991   isrpnprogram() {}
00992   isrpnprogram(deque<rpnbase*>& ds, bool const evaluate=true);
00993   ~isrpnprogram() {}
00994   rpnbase* copy() const;
00995 
00996   string const name() const { return string("isprogram"); }
00997 
00998   void eval( deque<rpnbase*>& ds );
00999 };
01000 
01001 class pathcd: public rpnfunction
01002 {
01003 public:
01004 
01005   pathcd() {}
01006   pathcd(deque<rpnbase*>& ds, bool const evaluate=true);
01007   ~pathcd() {}
01008   rpnbase* copy() const;
01009 
01010   void visit(deque<rpnbase*>& ds,rpnstring& s);
01011   void visit(deque<rpnbase*>& ds,rpnprogram& p);
01012 
01013   string const name() const { return string("cd"); }
01014 
01015   void eval( deque<rpnbase*>& ds );
01016 };
01017 
01018 class pathquery: public rpnfunction
01019 {
01020 public:
01021 
01022   pathquery() {}
01023   pathquery(deque<rpnbase*>& ds, bool const evaluate=true);
01024   ~pathquery() {}
01025   rpnbase* copy() const;
01026 
01027   void visit(deque<rpnbase*>& ds,rpnstring& s);
01028 
01029   string const name() const { return string("ispath"); }
01030 
01031   void eval( deque<rpnbase*>& ds );
01032 };
01033 
01034 class varmv: public rpnfunction
01035 {
01036 public:
01037 
01038   varmv() {}
01039   varmv(deque<rpnbase*>& ds, bool const evaluate=true);
01040   ~varmv() {}
01041   rpnbase* copy() const;
01042 
01043   void visit(deque<rpnbase*>& ds,rpnstring& s);
01044 
01045   string const name() const { return string("mv"); }
01046 
01047   void eval( deque<rpnbase*>& ds );
01048 };
01049 
01050 class rpncp: public rpnfunction
01051 {
01052 public:
01053 
01054   rpncp() {}
01055   rpncp(deque<rpnbase*>& ds, bool const evaluate=true);
01056   ~rpncp() {}
01057   rpnbase* copy() const;
01058 
01059   void visit(deque<rpnbase*>& ds,rpnstring& s);
01060 
01061   string const name() const { return string("cp"); }
01062 
01063   void eval( deque<rpnbase*>& ds );
01064 };
01065 
01066 class rpninsert : public rpnfunction
01067 {
01068 public:
01069 
01070   rpninsert() {}
01071   rpninsert(deque<rpnbase*>& ds, bool const evaluate=true);
01072   ~rpninsert() {}
01073   rpnbase* copy() const;
01074 
01075   void visit(deque<rpnbase*>& ds,rpninteger& n);
01076 
01077   string const name() const { return string("insert"); }
01078 
01079   void eval( deque<rpnbase*>& ds );
01080 };
01081 
01082 class rpnerase : public rpnfunction
01083 {
01084 public:
01085 
01086   rpnerase() {}
01087   rpnerase(deque<rpnbase*>& ds, bool const evaluate=true);
01088   ~rpnerase() {}
01089   rpnbase* copy() const;
01090 
01091   void visit(deque<rpnbase*>& ds,rpninteger& n);
01092 
01093   string const name() const { return string("delete"); }
01094 
01095   void eval( deque<rpnbase*>& ds );
01096 };
01097 
01098 class rpnpointermake : public rpnfunction
01099 {
01100 public:
01101 
01102   rpnpointermake() {}
01103   rpnpointermake(deque<rpnbase*>& ds, bool const evaluate=false);
01104   ~rpnpointermake() {}
01105   rpnbase* copy() const;
01106 
01107   void visit(deque<rpnbase*>& ds,rpninteger& n);
01108   void visit(deque<rpnbase*>& ds,rpnstring& s);
01109 
01110   string const name() const { return string("->"); }
01111 
01112   void eval( deque<rpnbase*>& ds );
01113 };
01114 
01115 class rpnvectormake : public rpnfunction
01116 {
01117 public:
01118 
01119   rpnvectormake() {}
01120   rpnvectormake(deque<rpnbase*>& ds, bool const evaluate=false);
01121   ~rpnvectormake() {}
01122   rpnbase* copy() const;
01123 
01124   void visit(deque<rpnbase*>& ds,rpninteger& n);
01125   void visit(deque<rpnbase*>& ds,rpnstring& s);
01126 
01127   string const name() const { return string("[]"); }
01128 
01129   void eval( deque<rpnbase*>& ds );
01130 };
01131 
01132 class rpnvectorpointermake : public rpnfunction
01133 {
01134 public:
01135 
01136   rpnvectorpointermake() {}
01137   rpnvectorpointermake(
01138     deque<rpnbase*>& ds, bool const evaluate=false);
01139   ~rpnvectorpointermake() {}
01140   rpnbase* copy() const;
01141 
01142   void visit(deque<rpnbase*>& ds,rpnvector& v);
01143   void visit(deque<rpnbase*>& ds,rpnstring& s);
01144   void visit(deque<rpnbase*>& ds,rpninteger& k);
01145 
01146   string const name() const { return string("->[]"); }
01147 
01148   void eval( deque<rpnbase*>& ds );
01149 };
01150 
01151 class pstream: public rpnfunction
01152 {
01153 public:
01154 
01155   pstream() {}
01156   pstream(deque<rpnbase*>& ds, bool const evaluate=true);
01157   ~pstream() {}
01158   rpnbase* copy() const;
01159 
01160   void visit(deque<rpnbase*>& ds,rpnprogram& pr);
01161 
01162   string const name() const 
01163     { return string("pstream"); }
01164 
01165   void eval( deque<rpnbase*>& ds );
01166 };
01167 
01168 class rpnintegerhex : public rpnfunction
01169 {
01170 public:
01171 
01172   rpnintegerhex() {}
01173   rpnintegerhex(deque<rpnbase*>& ds, bool const evaluate=true);
01174   ~rpnintegerhex() {}
01175   rpnbase* copy() const;
01176 
01177   string const name() const { return string("hex"); }
01178 
01179   void eval( deque<rpnbase*>& ds );
01180 };
01181 
01182 class rpnintegeroct : public rpnfunction
01183 {
01184 public:
01185 
01186   rpnintegeroct() {}
01187   rpnintegeroct(deque<rpnbase*>& ds, bool const evaluate=true);
01188   ~rpnintegeroct() {}
01189   rpnbase* copy() const;
01190 
01191   string const name() const { return string("oct"); }
01192 
01193   void eval( deque<rpnbase*>& ds );
01194 };
01195 
01196 class rpnintegerdec : public rpnfunction
01197 {
01198 public:
01199 
01200   rpnintegerdec() {}
01201   rpnintegerdec(deque<rpnbase*>& ds, bool const evaluate=true);
01202   ~rpnintegerdec() {}
01203   rpnbase* copy() const;
01204 
01205   string const name() const { return string("dec"); }
01206 
01207   void eval( deque<rpnbase*>& ds );
01208 };
01209 
01210 class rpnintegerbin : public rpnfunction
01211 {
01212 public:
01213 
01214   rpnintegerbin() {}
01215   rpnintegerbin(deque<rpnbase*>& ds, bool const evaluate=true);
01216   ~rpnintegerbin() {}
01217   rpnbase* copy() const;
01218 
01219   string const name() const { return string("binary"); }
01220 
01221   void eval( deque<rpnbase*>& ds );
01222 };
01223 
01224 class rpnbitnot: public rpnfunction
01225 {
01226 public:
01227 
01228   rpnbitnot() {}
01229   rpnbitnot(deque<rpnbase*>& ds, bool const evaluate=true);
01230   ~rpnbitnot() {}
01231   rpnbase* copy() const;
01232 
01233   void visit(deque<rpnbase*>& ds,rpninteger& n);
01234 
01235   string const name() const { return string("not"); }
01236 
01237   void eval( deque<rpnbase*>& ds );
01238 };
01239 
01240 class rpnbitxor: public rpnfunction
01241 {
01242 public:
01243 
01244   rpnbitxor() {}
01245   rpnbitxor(deque<rpnbase*>& ds, bool const evaluate=true);
01246   ~rpnbitxor() {}
01247   rpnbase* copy() const;
01248 
01249   void visit(deque<rpnbase*>& ds,rpninteger& n);
01250 
01251   string const name() const { return string("xor"); }
01252 
01253   void eval( deque<rpnbase*>& ds );
01254 };
01255 
01256 class rpnbitor: public rpnfunction
01257 {
01258 public:
01259 
01260   rpnbitor() {}
01261   rpnbitor(deque<rpnbase*>& ds, bool const evaluate=true);
01262   ~rpnbitor() {}
01263   rpnbase* copy() const;
01264 
01265   void visit(deque<rpnbase*>& ds,rpninteger& n);
01266 
01267   string const name() const { return string("or"); }
01268 
01269   void eval( deque<rpnbase*>& ds );
01270 };
01271 
01272 class rpnbitand: public rpnfunction
01273 {
01274 public:
01275 
01276   rpnbitand() {}
01277   rpnbitand(deque<rpnbase*>& ds, bool const evaluate=true);
01278   ~rpnbitand() {}
01279   rpnbase* copy() const;
01280 
01281   void visit(deque<rpnbase*>& ds,rpninteger& n);
01282 
01283   string const name() const { return string("and"); }
01284 
01285   void eval( deque<rpnbase*>& ds );
01286 };
01287 
01288 class rpnbitshiftleft: public rpnfunction
01289 {
01290 public:
01291 
01292   rpnbitshiftleft() {}
01293   rpnbitshiftleft(deque<rpnbase*>& ds, bool const evaluate=true);
01294   ~rpnbitshiftleft() {}
01295   rpnbase* copy() const;
01296 
01297   void visit(deque<rpnbase*>& ds,rpninteger& n);
01298 
01299   string const name() const { return string("shl"); }
01300 
01301   void eval( deque<rpnbase*>& ds );
01302 };
01303 
01304 class rpnbitshiftright: public rpnfunction
01305 {
01306 public:
01307 
01308   rpnbitshiftright() {}
01309   rpnbitshiftright(deque<rpnbase*>& ds, bool const evaluate=true);
01310   ~rpnbitshiftright() {}
01311   rpnbase* copy() const;
01312 
01313   void visit(deque<rpnbase*>& ds,rpninteger& n);
01314 
01315   string const name() const { return string("shr"); }
01316 
01317   void eval( deque<rpnbase*>& ds );
01318 };
01319 
01320 class rpnintegerconvert : public rpnfunction
01321 {
01322 public:
01323 
01324   rpnintegerconvert() {}
01325   rpnintegerconvert(deque<rpnbase*>& ds, bool const evaluate=true);
01326   ~rpnintegerconvert() {}
01327   rpnbase* copy() const;
01328 
01329   void visit(deque<rpnbase*>& ds,rpnstring& s);
01330   void visit(deque<rpnbase*>& ds,rpnreal& n);
01331 
01332   string const name() const { return string("integer"); }
01333 
01334   void eval( deque<rpnbase*>& ds );
01335 };
01336 
01337 class rpnstringconvert : public rpnfunction
01338 {
01339 public:
01340 
01341   rpnstringconvert() {}
01342   rpnstringconvert(deque<rpnbase*>& ds, bool const evaluate=true);
01343   ~rpnstringconvert() {}
01344   rpnbase* copy() const;
01345 
01346   void visit(deque<rpnbase*>& ds,rpninteger& n);
01347   void visit(deque<rpnbase*>& ds,rpnreal& n);
01348 
01349   string const name() const { return string("string"); }
01350 
01351   void eval( deque<rpnbase*>& ds );
01352 };
01353 
01354 class rpnfactorial: public rpnfunction
01355 {
01356 public:
01357 
01358   rpnfactorial() {}
01359   rpnfactorial(deque<rpnbase*>& ds, bool const evaluate=true);
01360   ~rpnfactorial() {}
01361   rpnbase* copy() const;
01362 
01363   void visit(deque<rpnbase*>& ds,rpninteger& n);
01364 
01365   string const name() const { return string("factorial"); }
01366 
01367   void eval( deque<rpnbase*>& ds );
01368 };
01369 
01370 class rpnmod : public rpnfunction
01371 {
01372 public:
01373 
01374   rpnmod() {}
01375   rpnmod(deque<rpnbase*>& ds, bool const evaluate=true);
01376   ~rpnmod() {}
01377   rpnbase* copy() const;
01378 
01379   void visit(deque<rpnbase*>& ds,rpninteger& n);
01380 
01381   string const name() const { return string("mod"); }
01382 
01383   void eval( deque<rpnbase*>& ds );
01384 };
01385 
01386 class rpnascii : public rpnfunction
01387 {
01388 public:
01389 
01390   rpnascii() {}
01391   rpnascii(deque<rpnbase*>& ds, bool const evaluate=true);
01392   ~rpnascii() {}
01393   rpnbase* copy() const;
01394 
01395   void visit(deque<rpnbase*>& ds,rpninteger& n);
01396   void visit(deque<rpnbase*>& ds,rpnstring& s);
01397 
01398   string const name() const { return string("ascii"); }
01399 
01400   void eval( deque<rpnbase*>& ds );
01401 };
01402 
01403 class rpngcd : public rpnfunction
01404 {
01405 public:
01406 
01407   rpngcd() {}
01408   rpngcd(deque<rpnbase*>& ds, bool const evaluate=true);
01409   ~rpngcd() {}
01410   rpnbase* copy() const;
01411 
01412   void visit(deque<rpnbase*>& ds,rpninteger& n);
01413 
01414   string const name() const { return string("gcd"); }
01415 
01416   void eval( deque<rpnbase*>& ds );
01417 };
01418 
01419 
01420 
01421 
01422 
01423 
01424 
01425 
01426 
01427 #endif
01428 
01429 
01430 

Generated on Fri Mar 4 00:49:31 2011 for Chelton Evans Source by  doxygen 1.5.8