2008-04-08 12:54:53 +00:00
|
|
|
|
|
|
|
#ifndef __EXPR_H
|
|
|
|
#define __EXPR_H
|
|
|
|
|
|
|
|
class Expr;
|
|
|
|
|
|
|
|
class Expr {
|
|
|
|
public:
|
|
|
|
// A parameter, by the hParam handle
|
|
|
|
static const int PARAM = 0;
|
|
|
|
// A parameter, by a pointer straight in to the param table (faster,
|
|
|
|
// if we know that the param table won't move around)
|
|
|
|
static const int PARAM_PTR = 1;
|
|
|
|
|
2008-04-12 14:12:26 +00:00
|
|
|
// These are used only for user-entered expressions.
|
|
|
|
static const int POINT = 10;
|
|
|
|
static const int ENTITY = 11;
|
|
|
|
|
|
|
|
static const int CONSTANT = 20;
|
|
|
|
|
|
|
|
static const int PLUS = 100;
|
|
|
|
static const int MINUS = 101;
|
|
|
|
static const int TIMES = 102;
|
|
|
|
static const int DIV = 103;
|
|
|
|
static const int NEGATE = 104;
|
|
|
|
static const int SQRT = 105;
|
|
|
|
static const int SQUARE = 106;
|
|
|
|
static const int SIN = 107;
|
|
|
|
static const int COS = 108;
|
2008-04-08 12:54:53 +00:00
|
|
|
|
|
|
|
int op;
|
|
|
|
Expr *a;
|
|
|
|
Expr *b;
|
|
|
|
union {
|
|
|
|
hParam parh;
|
|
|
|
double *parp;
|
2008-04-12 14:12:26 +00:00
|
|
|
hPoint point;
|
|
|
|
hEntity entity;
|
2008-04-08 12:54:53 +00:00
|
|
|
double v;
|
|
|
|
} x;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|