home *** CD-ROM | disk | FTP | other *** search
/ Photo CD Demo 1 / Demo.bin / graphtal / expritem.h < prev    next >
C/C++ Source or Header  |  1992-11-02  |  8KB  |  442 lines

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