]> arthur.barton.de Git - netdata.git/blobdiff - src/eval.h
dns_query_time plugin: replace "." with "_" in dimensions
[netdata.git] / src / eval.h
index 1ac56bfe04eb120c4f064178d9d5ced51260680e..d68b9af474ce7f5806746dc7db2321d059104b7f 100644 (file)
@@ -1,8 +1,11 @@
 #ifndef NETDATA_EVAL_H
 #define NETDATA_EVAL_H
 
+#define EVAL_MAX_VARIABLE_NAME_LENGTH 300
+
 typedef struct eval_variable {
     char *name;
+    uint32_t hash;
     struct rrdvar *rrdvar;
     struct eval_variable *next;
 } EVAL_VARIABLE;
@@ -11,6 +14,11 @@ typedef struct eval_expression {
     const char *source;
     const char *parsed_as;
 
+    int *status;
+    calculated_number *this;
+    time_t *after;
+    time_t *before;
+
     calculated_number result;
 
     int error;
@@ -20,29 +28,31 @@ typedef struct eval_expression {
     void *nodes;
 
     // custom data to be used for looking up variables
-    void *data;
+    struct rrdcalc *rrdcalc;
 } EVAL_EXPRESSION;
 
-#define EVAL_VALUE_INVALID 0
-#define EVAL_VALUE_NUMBER 1
-#define EVAL_VALUE_VARIABLE 2
+#define EVAL_VALUE_INVALID    0
+#define EVAL_VALUE_NUMBER     1
+#define EVAL_VALUE_VARIABLE   2
 #define EVAL_VALUE_EXPRESSION 3
 
-#define EVAL_ERROR_OK 0
+// parsing and evaluation
+#define EVAL_ERROR_OK                             0
 
 // parsing errors
-#define EVAL_ERROR_MISSING_CLOSE_SUBEXPRESSION 1
-#define EVAL_ERROR_UNKNOWN_OPERAND 2
-#define EVAL_ERROR_MISSING_OPERAND 3
-#define EVAL_ERROR_MISSING_OPERATOR 4
-#define EVAL_ERROR_REMAINING_GARBAGE 5
+#define EVAL_ERROR_MISSING_CLOSE_SUBEXPRESSION    1
+#define EVAL_ERROR_UNKNOWN_OPERAND                2
+#define EVAL_ERROR_MISSING_OPERAND                3
+#define EVAL_ERROR_MISSING_OPERATOR               4
+#define EVAL_ERROR_REMAINING_GARBAGE              5
+#define EVAL_ERROR_IF_THEN_ELSE_MISSING_ELSE      6
 
 // evaluation errors
-#define EVAL_ERROR_INVALID_VALUE 11
-#define EVAL_ERROR_INVALID_NUMBER_OF_OPERANDS 12
-#define EVAL_ERROR_VALUE_IS_NAN 13
-#define EVAL_ERROR_VALUE_IS_INFINITE 14
-#define EVAL_ERROR_UNKNOWN_VARIABLE 15
+#define EVAL_ERROR_INVALID_VALUE                101
+#define EVAL_ERROR_INVALID_NUMBER_OF_OPERANDS   102
+#define EVAL_ERROR_VALUE_IS_NAN                 103
+#define EVAL_ERROR_VALUE_IS_INFINITE            104
+#define EVAL_ERROR_UNKNOWN_VARIABLE             105
 
 // parse the given string as an expression and return:
 //   a pointer to an expression if it parsed OK