X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Fgraph.h;h=46964e5e6f0b296f0f5bc03d8a0529cab8a76c11;hp=30a589fc9511dd46c6461ccf2d50153675406be7;hb=e3fb09073a64cc051c11c4a1bdcec493f937b764;hpb=50d5299ef04975d005f86a0ec8a0556969129cd1 diff --git a/src/graph.h b/src/graph.h index 30a589f..46964e5 100644 --- a/src/graph.h +++ b/src/graph.h @@ -24,11 +24,14 @@ #ifndef GRAPH_H #define GRAPH_H 1 +#include + #include "graph_types.h" #include "graph_ident.h" #include "oconfig.h" #include "rrd_args.h" #include "utils_array.h" +#include "utils_search.h" /* * Functions @@ -39,6 +42,10 @@ void graph_destroy (graph_config_t *graph); int graph_config_add (const oconfig_item_t *ci); +/* Add "inst" to the internal list. The instance is *not* copied and may not be + * freed from the outside. */ +int graph_add_inst (graph_config_t *graph, graph_instance_t *inst); + int graph_add_file (graph_config_t *cfg, const graph_ident_t *file); int graph_get_title (graph_config_t *cfg, @@ -61,10 +68,16 @@ _Bool graph_ident_matches (graph_config_t *cfg, const graph_ident_t *ident); _Bool graph_matches_ident (graph_config_t *cfg, const graph_ident_t *selector); -/* Compares the given string with the appropriate field of the selector. If the - * selector field is "/all/" or "/any/", returns true without checking the - * instances. See "graph_inst_search_field" for finding all matching instances. - * */ +/* Returns true if a file may apply to both, the graphs selector and the + * selector given as argument. If the selectors contradict one another, + * returns false. */ +_Bool graph_ident_intersect (graph_config_t *cfg, + const graph_ident_t *selector); + +/* Compares the given string with the appropriate field of the selector. If + * the selector field is "/all/" or "/any/", returns true without checking the + * instances. See "graph_inst_search_field" for finding all matching + * instances. */ _Bool graph_matches_field (graph_config_t *cfg, graph_ident_field_t field, const char *field_value); @@ -81,6 +94,12 @@ int graph_inst_find_all_matching (graph_config_t *cfg, const graph_ident_t *ident, graph_inst_callback_t callback, void *user_data); +/* Search for instances using a search_info_t. The code assumes that the + * graph's selector has already been checked against the search_info_t, using + * "search_to_ident" and "graph_matches_ident". */ +int graph_search_inst (graph_config_t *cfg, search_info_t *si, + graph_inst_callback_t callback, void *user_data); + int graph_search_inst_string (graph_config_t *cfg, const char *term, graph_inst_callback_t callback, void *user_data); @@ -92,6 +111,11 @@ int graph_inst_search_field (graph_config_t *cfg, int graph_compare (graph_config_t *cfg, const graph_ident_t *ident); +int graph_to_json (const graph_config_t *cfg, yajl_gen handler); +int graph_def_to_json (graph_config_t *cfg, + graph_instance_t *inst, + yajl_gen handler); + size_t graph_num_instances (graph_config_t *cfg); int graph_sort_instances (graph_config_t *cfg);