#define INTEGER "%%16.0lf"
#define LARGE_INTEGER "%%14.0lf %%s"
#define FLOAT "%%14.2lf"
+#define FLOAT_WITH_UNIT "%%10.2lf %3s"
#define LARGE_FLOAT "%%14.2lf %%s"
// Macro to terminate a line
DRAW(args, "AREA", field, object, COLOR_WITH_ALPHA(color, OPACITY_AREA), __VA_ARGS__)
// Macros to draw the area's outline
+#define DRAW_AREA_OUTLINE DRAW_LINE1
#define DRAW_AREA_OUTLINE_WITH_LABEL DRAW_LINE1_WITH_LABEL
+#define DRAW_AREA(args, field, object, color) \
+ do { \
+ DRAW_AREA_BACKGROUND(args, field, object, color); \
+ DRAW_AREA_OUTLINE(args, field, object, color); \
+ } while(0)
+
// Areas are being drawn with an outline
#define DRAW_AREA_WITH_LABEL(args, field, object, color, label, ...) \
do { \
DRAW_AREA_OUTLINE_WITH_LABEL(args, field, object, color, label, __VA_ARGS__); \
} while(0)
+// Horizontal lines
+#define DRAW_HRULE(args, value, color) \
+ SCRIPT(args, "HRULE:%lf" color, (double)value)
+
+#define DRAW_HRULE_WITH_LABEL(args, value, color, label) \
+ SCRIPT(args, "HRULE:%lf" color ":" COLUMN, (double)value, label)
+
// Modifiers
#define STACK ":STACK"
#define PRINT_LARGE_FLOAT(args, field, object) PRINT(args, field, object, LARGE_FLOAT)
#define PRINT_EOL(args) SCRIPT(args, "COMMENT:" EOL)
+/*
+ Prints CURRENT, AVERAGE, MINIMUM and MAXIMUM
+*/
+#define PRINT_CAMM(args, field, object, format, ...) \
+ do { \
+ PRINT_CURRENT(args, field, object, format, ##__VA_ARGS__); \
+ PRINT_AVERAGE(args, field, object, format, ##__VA_ARGS__); \
+ PRINT_MINIMUM(args, field, object, format, ##__VA_ARGS__); \
+ PRINT_MAXIMUM(args, field, object, format, ##__VA_ARGS__); \
+ PRINT_EOL(args); \
+ } while (0)
+
+#define PRINT_CURRENT(args, field, object, format, ...) \
+ SCRIPT(args, "GPRINT:" FIELD_CURRENT(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+#define PRINT_AVERAGE(args, field, object, format, ...) \
+ SCRIPT(args, "GPRINT:" FIELD_AVERAGE(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+#define PRINT_MINIMUM(args, field, object, format, ...) \
+ SCRIPT(args, "GPRINT:" FIELD_MINIMUM(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+#define PRINT_MAXIMUM(args, field, object, format, ...) \
+ SCRIPT(args, "GPRINT:" FIELD_MAXIMUM(FIELD) ":" format, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+
#define PRINT_HEADER1(args, header1) \
do { \
PRINT_EMPTY_LABEL(args); \
#define FIELD_MINIMUM(field) field "_min"
#define FIELD_MAXIMUM(field) field "_max"
#define FIELD_PERCENT(field) field "_p"
+#define FIELD_INF(field) field "_inf"
+#define FIELD_NEGINF(field) field "_neginf"
-#define VALUE_CURRENT(args, field, object) SCRIPT(args, "VDEF:" FIELD "=" FIELD ",LAST", FIELD_AND_OBJECT(FIELD_CURRENT(field), object), FIELD_AND_OBJECT(field, object))
-#define VALUE_AVERAGE(args, field, object) SCRIPT(args, "VDEF:" FIELD "=" FIELD ",AVERAGE", FIELD_AND_OBJECT(FIELD_AVERAGE(field), object), FIELD_AND_OBJECT(field, object))
-#define VALUE_MINIMUM(args, field, object) SCRIPT(args, "VDEF:" FIELD "=" FIELD ",MINIMUM", FIELD_AND_OBJECT(FIELD_MINIMUM(field), object), FIELD_AND_OBJECT(field, object))
-#define VALUE_MAXIMUM(args, field, object) SCRIPT(args, "VDEF:" FIELD "=" FIELD ",MAXIMUM", FIELD_AND_OBJECT(FIELD_MAXIMUM(field), object), FIELD_AND_OBJECT(field, object))
+#define VALUE_CURRENT(args, field, object) SCRIPT(args, "VDEF:" FIELD_CURRENT(FIELD) "=" FIELD ",LAST", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
+#define VALUE_AVERAGE(args, field, object) SCRIPT(args, "VDEF:" FIELD_AVERAGE(FIELD) "=" FIELD ",AVERAGE", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
+#define VALUE_MINIMUM(args, field, object) SCRIPT(args, "VDEF:" FIELD_MINIMUM(FIELD) "=" FIELD ",MINIMUM", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
+#define VALUE_MAXIMUM(args, field, object) SCRIPT(args, "VDEF:" FIELD_MAXIMUM(FIELD) "=" FIELD ",MAXIMUM", FIELD_AND_OBJECT(field, object), FIELD_AND_OBJECT(field, object))
// Computes all values
#define VALUE_ALL(args, field, object) \
#define COMPUTE_CDEF(args, cdef, ...) SCRIPT(args, "CDEF:" cdef, ##__VA_ARGS__)
+#define COMPUTE_EXPRESSION(args, field, object, expression, ...) \
+ COMPUTE_CDEF(args, FIELD "=" expression, FIELD_AND_OBJECT(field, object), ##__VA_ARGS__)
+
#define COMPUTE_SUM(args, sum, object1, summand1, object2, summand2, object3) \
do { \
COMPUTE_CDEF(args, FIELD "=" FIELD "," FIELD ",+", \
VALUE_ALL(args, FIELD_PERCENT(field), object1); \
} while (0)
+#define COMPUTE_LIMIT(args, limit, field, object, lower_limit, upper_limit) \
+ do { \
+ COMPUTE_CDEF(args, FIELD "=" FIELD ",%ld,%ld,LIMIT", \
+ FIELD_AND_OBJECT(limit, object), \
+ FIELD_AND_OBJECT(field, object), \
+ lower_limit, \
+ upper_limit \
+ ); \
+ } while (0)
#endif /* TELEMETRY_GRAPHS_GRAPH_H */