]> arthur.barton.de Git - netdata.git/blob - src/eval.h
added RRDCALC management; preparation for expression evaluation
[netdata.git] / src / eval.h
1 #ifndef NETDATA_EVAL_H
2 #define NETDATA_EVAL_H
3
4 typedef struct variable {
5     char *name;
6     struct rrdvar *rrdvar;
7     struct variable *next;
8 } VARIABLE;
9
10 #define EVAL_OPERAND_INVALID 0
11 #define EVAL_OPERAND_NUMBER 1
12 #define EVAL_OPERAND_VARIABLE 2
13 #define EVAL_OPERAND_EXPRESSION 3
14
15 // these are used for EVAL_OPERAND.operator
16 #define EVAL_OPERATOR_NOP   '\0'
17 #define EVAL_OPERATOR_NOT   '!'
18 #define EVAL_OPERATOR_PLUS  '+'
19 #define EVAL_OPERATOR_MINUS '-'
20
21 typedef struct eval_value {
22     int type;
23
24     union {
25         calculated_number number;
26         VARIABLE *variable;
27         struct eval_operand *expression;
28     };
29 } EVAL_VALUE;
30
31 typedef struct eval_operand {
32     char operator;
33
34     int count;
35     EVAL_VALUE ops[];
36 } EVAL_OPERAND;
37
38 #endif //NETDATA_EVAL_H