home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / oct93 / graphics / graphtal.lha / Graphtal / ExprItems.h < prev    next >
C/C++ Source or Header  |  1992-11-20  |  8KB  |  443 lines

  1. /*
  2.  * ExprItems.h - class definitions for ExprItem's.
  3.  *
  4.  * Copyright (C) 1992, Christoph Streit (streit@iam.unibe.ch)
  5.  *                     University of Berne, Switzerland
  6.  * All rights reserved.
  7.  *
  8.  * This software may be freely copied, modified, and redistributed
  9.  * provided that this copyright notice is preserved on all copies.
  10.  *
  11.  * You may not distribute this software, in whole or in part, as part of
  12.  * any commercial product without the express consent of the authors.
  13.  *
  14.  * There is no warranty or other guarantee of fitness of this software
  15.  * for any purpose.  It is provided solely "as is".
  16.  *
  17.  */
  18.  
  19. #ifndef ExprItems_H
  20. # define ExprItems_H
  21.  
  22. #include <math.h>
  23. #include "mathutilities.h"
  24. #include "Expression.h"
  25. #include "Name.h"
  26.  
  27. //___________________________________________________________ Variable
  28.  
  29. class Variable : public ExprItem
  30. {
  31. public:
  32.   Variable(const Name&, Value*);
  33.   ~Variable();
  34.  
  35.   void process(ValueStack*);
  36.   void print(ValueStack*);
  37.   int params();
  38.   ExprItem* copy();
  39.  
  40. private: 
  41.   Value *theValue;
  42.   Name varname;  // we need the name for the print function
  43. };
  44.  
  45. //___________________________________________________________ Uminus
  46. // unary minus
  47.  
  48. class Uminus : public ExprItem
  49. {
  50. public:
  51.   Uminus();
  52.   ~Uminus();
  53.   void process(ValueStack*);
  54.   void print(ValueStack*);
  55.   int params();
  56.   ExprItem* copy();
  57. };
  58.  
  59. //___________________________________________________________ Not
  60.  
  61. class Not : public ExprItem
  62. {
  63. public:
  64.   Not();
  65.   ~Not();
  66.   void process(ValueStack*);
  67.   void print(ValueStack*);
  68.   int params();
  69.   ExprItem* copy();
  70. };
  71.  
  72. //___________________________________________________________ Or
  73.  
  74. class Or : public ExprItem
  75. {
  76. public:
  77.   Or();
  78.   ~Or();
  79.   void process(ValueStack*);
  80.   void print(ValueStack*);
  81.   int params();
  82.   ExprItem* copy();
  83. };
  84.  
  85. //___________________________________________________________ And
  86.  
  87. class And : public ExprItem
  88. {
  89. public:
  90.   And();
  91.   ~And();
  92.   void process(ValueStack*);
  93.   void print(ValueStack*);
  94.   int params();
  95.   ExprItem* copy();
  96. };
  97.  
  98. //___________________________________________________________ Neq
  99.  
  100. class Neq : public ExprItem
  101. {
  102. public:
  103.   Neq();
  104.   ~Neq();
  105.   void process(ValueStack*);
  106.   void print(ValueStack*);
  107.   int params();
  108.   ExprItem* copy();
  109. };
  110.  
  111. //___________________________________________________________ Eq
  112.  
  113. class Eq : public ExprItem
  114. {
  115. public:
  116.   Eq();
  117.   ~Eq();
  118.   void process(ValueStack*);
  119.   void print(ValueStack*);
  120.   int params();
  121.   ExprItem* copy();
  122. };
  123.  
  124. //___________________________________________________________ Lt
  125.  
  126. class Lt : public ExprItem
  127. {
  128. public:
  129.   Lt();
  130.   ~Lt();
  131.   void process(ValueStack*);
  132.   void print(ValueStack*);
  133.   int params();
  134.   ExprItem* copy();
  135. };
  136.  
  137. //___________________________________________________________ Leq
  138.  
  139. class Leq : public ExprItem
  140. {
  141. public:
  142.   Leq();
  143.   ~Leq();
  144.   void process(ValueStack*);
  145.   void print(ValueStack*);
  146.   int params();
  147.   ExprItem* copy();
  148. };
  149.  
  150. //___________________________________________________________ Gt
  151.  
  152. class Gt : public ExprItem
  153. {
  154. public:
  155.   Gt();
  156.   ~Gt();
  157.   void process(ValueStack*);
  158.   void print(ValueStack*);
  159.   int params();
  160.   ExprItem* copy();
  161. };
  162.  
  163. //___________________________________________________________ Geq
  164.  
  165. class Geq : public ExprItem
  166. {
  167. public:
  168.   Geq();
  169.   ~Geq();
  170.   void process(ValueStack*);
  171.   void print(ValueStack*);
  172.   int params();
  173.   ExprItem* copy();
  174. };
  175.  
  176. //___________________________________________________________ Add
  177.  
  178. class Add : public ExprItem
  179. {
  180. public:
  181.   Add();
  182.   ~Add();
  183.   void process(ValueStack*);
  184.   void print(ValueStack*);
  185.   int params();
  186.   ExprItem* copy();
  187. };
  188.  
  189. //___________________________________________________________ Sub
  190.  
  191. class Sub : public ExprItem
  192. {
  193. public:
  194.   Sub();
  195.   ~Sub();
  196.   void process(ValueStack*);
  197.   void print(ValueStack*);
  198.   int params();
  199.   ExprItem* copy();
  200. };
  201.  
  202. //___________________________________________________________ Mul
  203.  
  204. class Mul : public ExprItem
  205. {
  206. public:
  207.   Mul();
  208.   ~Mul();
  209.   void process(ValueStack*);
  210.   void print(ValueStack*);
  211.   int params();
  212.   ExprItem* copy();
  213. };
  214.  
  215. //___________________________________________________________ Div
  216.  
  217. class Div : public ExprItem
  218. {
  219. public:
  220.   Div();
  221.   ~Div();
  222.   void process(ValueStack*);
  223.   void print(ValueStack*);
  224.   int params();
  225.   ExprItem* copy();
  226. };
  227.  
  228. //___________________________________________________________ Mod
  229.  
  230. class Mod : public ExprItem
  231. {
  232. public:
  233.   Mod();
  234.   ~Mod();
  235.   void process(ValueStack*);
  236.   void print(ValueStack*);
  237.   int params();
  238.   ExprItem* copy();
  239. };
  240.  
  241. //___________________________________________________________ Sin
  242.  
  243. class Sin : public ExprItem
  244. {
  245. public:
  246.   Sin();
  247.   ~Sin();
  248.   void process(ValueStack*);
  249.   void print(ValueStack*);
  250.   int params();
  251.   ExprItem* copy();
  252. };
  253.  
  254. //___________________________________________________________ Cos
  255.  
  256. class Cos : public ExprItem
  257. {
  258. public:
  259.   Cos();
  260.   ~Cos();
  261.   void process(ValueStack*);
  262.   void print(ValueStack*);
  263.   int params();
  264.   ExprItem* copy();
  265. };
  266.  
  267. //___________________________________________________________ Tan
  268.  
  269. class Tan : public ExprItem
  270. {
  271. public:
  272.   Tan();
  273.   ~Tan();
  274.   void process(ValueStack*);
  275.   void print(ValueStack*);
  276.   int params();
  277.   ExprItem* copy();
  278. };
  279.  
  280. //___________________________________________________________ Asin
  281.  
  282. class Asin : public ExprItem
  283. {
  284. public:
  285.   Asin();
  286.   ~Asin();
  287.   void process(ValueStack*);
  288.   void print(ValueStack*);
  289.   int params();
  290.   ExprItem* copy();
  291. };
  292.  
  293. //___________________________________________________________ Acos
  294.  
  295. class Acos : public ExprItem
  296. {
  297. public:
  298.   Acos();
  299.   ~Acos();
  300.   void process(ValueStack*);
  301.   void print(ValueStack*);
  302.   int params();
  303.   ExprItem* copy();
  304. };
  305.  
  306. //___________________________________________________________ Atan
  307.  
  308. class Atan : public ExprItem
  309. {
  310. public:
  311.   Atan();
  312.   ~Atan();
  313.   void process(ValueStack*);
  314.   void print(ValueStack*);
  315.   int params();
  316.   ExprItem* copy();
  317. };
  318.  
  319. //___________________________________________________________ Abs
  320.  
  321. class Abs : public ExprItem
  322. {
  323. public:
  324.   Abs();
  325.   ~Abs();
  326.   void process(ValueStack*);
  327.   void print(ValueStack*);
  328.   int params();
  329.   ExprItem* copy();
  330. };
  331.  
  332. //___________________________________________________________ Sqrt
  333.  
  334. class Sqrt : public ExprItem
  335. {
  336. public:
  337.   Sqrt();
  338.   ~Sqrt();
  339.   void process(ValueStack*);
  340.   void print(ValueStack*);
  341.   int params();
  342.   ExprItem* copy();
  343. };
  344.  
  345. //___________________________________________________________ Pow
  346.  
  347. class Pow : public ExprItem
  348. {
  349. public:
  350.   Pow();
  351.   ~Pow();
  352.   void process(ValueStack*);
  353.   void print(ValueStack*);
  354.   int params();
  355.   ExprItem* copy();
  356. };
  357.  
  358. //___________________________________________________________ Exp
  359.  
  360. class Exp : public ExprItem
  361. {
  362. public:
  363.   Exp();
  364.   ~Exp();
  365.   void process(ValueStack*);
  366.   void print(ValueStack*);
  367.   int params();
  368.   ExprItem* copy();
  369. };
  370.  
  371. //___________________________________________________________ Log
  372.  
  373. class Log : public ExprItem
  374. {
  375. public:
  376.   Log();
  377.   ~Log();
  378.   void process(ValueStack*);
  379.   void print(ValueStack*);
  380.   int params();
  381.   ExprItem* copy();
  382. };
  383.  
  384. //___________________________________________________________ Log10
  385.  
  386. class Log10 : public ExprItem
  387. {
  388. public:
  389.   Log10();
  390.   ~Log10();
  391.   void process(ValueStack*);
  392.   void print(ValueStack*);
  393.   int params();
  394.   ExprItem* copy();
  395. };
  396.  
  397. //___________________________________________________________ Rand
  398.  
  399. class Rand : public ExprItem
  400. {
  401. public:
  402.   Rand();
  403.   ~Rand();
  404.   void process(ValueStack*);
  405.   void print(ValueStack*);
  406.   int params();
  407.   ExprItem* copy();
  408. };
  409.  
  410. //___________________________________________________________ Gauss
  411.  
  412. class Gauss : public ExprItem
  413. {
  414. public:
  415.   Gauss();
  416.   ~Gauss();
  417.   void process(ValueStack*);
  418.   void print(ValueStack*);
  419.   int params();
  420.   ExprItem* copy();
  421.  
  422. private:
  423.   int Nrand;
  424.   real GaussAdd, GaussFac;
  425. };
  426.  
  427. //___________________________________________________________ If
  428.  
  429. class If : public ExprItem
  430. {
  431. public:
  432.   If();
  433.   ~If();
  434.   void process(ValueStack*);
  435.   void print(ValueStack*);
  436.   int params();
  437.   ExprItem* copy();
  438. };
  439.  
  440. class Discrete;
  441.  
  442. #endif // ExprItems_H
  443.