1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
/*@@
@header utili_Expression.h
@date Wed Nov 7 00:39:24 2001
@author Tom Goodale
@desc
Internal definitions for the expression parser.
@enddesc
@version $Header$
@@*/
#ifndef __UTILI_EXPRESSION_H__
#define __UTILI_EXPRESSION_H__ 1
#ifdef __cplusplus
extern "C"
{
#endif
/* Defined operators */
typedef enum {OP_NONE,
OP_EQUALS,
OP_LESS_THAN,
OP_GREATER_THAN,
OP_LEQUALS,
OP_GEQUALS,
OP_AND,
OP_OR,
OP_PLUS,
OP_MINUS,
OP_DIV,
OP_TIMES,
OP_POWER,
OP_ACOS,
OP_ASIN,
OP_ATAN,
OP_CEIL,
OP_COS,
OP_COSH,
OP_EXP,
OP_FABS,
OP_FLOOR,
OP_LOG,
OP_LOG10,
OP_SIN,
OP_SINH,
OP_SQRT,
OP_TAN,
OP_TANH}
uExpressionOpcode;
/* What sort of expression types we have. */
typedef enum {val,unary,binary} uExpressionType;
/* RPN object. */
typedef struct
{
uExpressionType type;
union
{
uExpressionOpcode opcode;
int varnum;
} token;
} uExpressionToken;
/* Parsed expression object. */
typedef struct
{
int ntokens;
uExpressionToken *tokens;
int nvars;
char **vars;
} uExpressionInternals;
/* Internal representation of the expression. */
typedef uExpressionInternals *uExpression;
#ifdef __cplusplus
}
#endif
#endif /* __UTIL_EXPRESSION_H__ */
|