From: Florian Forster Date: Wed, 21 Jul 2010 09:30:14 +0000 (+0200) Subject: src/graph.[ch]: Implement "graph_to_json". X-Git-Tag: v4.0.0~82 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c60546477991d9a881e51dd05ee4fadc38dc6bc1;p=collection4.git src/graph.[ch]: Implement "graph_to_json". --- diff --git a/src/graph.c b/src/graph.c index 92fa02a..f664be1 100644 --- a/src/graph.c +++ b/src/graph.c @@ -606,12 +606,6 @@ int graph_compare (graph_config_t *cfg, const graph_ident_t *ident) /* {{{ */ return (ident_compare (cfg->select, ident)); } /* }}} int graph_compare */ -static int graph_sort_instances_cb (const void *v0, const void *v1) /* {{{ */ -{ - return (inst_compare (*(graph_instance_t * const *) v0, - *(graph_instance_t * const *) v1)); -} /* }}} int graph_sort_instances_cb */ - size_t graph_num_instances (graph_config_t *cfg) /* {{{ */ { if (cfg == NULL) @@ -620,6 +614,34 @@ size_t graph_num_instances (graph_config_t *cfg) /* {{{ */ return (cfg->instances_num); } /* }}} size_t graph_num_instances */ +int graph_to_json (const graph_config_t *cfg, + yajl_gen handler) +{ + size_t i; + + if ((cfg == NULL) || (handler == NULL)) + return (EINVAL); + + yajl_gen_map_open (handler); + yajl_gen_string (handler, + (unsigned char *) "select", + (unsigned int) strlen ("select")); + ident_to_json (cfg->select, handler); + yajl_gen_array_open (handler); + for (i = 0; i < cfg->instances_num; i++) + inst_to_json (cfg->instances[i], handler); + yajl_gen_array_close (handler); + yajl_gen_map_close (handler); + + return (0); +} + +static int graph_sort_instances_cb (const void *v0, const void *v1) /* {{{ */ +{ + return (inst_compare (*(graph_instance_t * const *) v0, + *(graph_instance_t * const *) v1)); +} /* }}} int graph_sort_instances_cb */ + int graph_sort_instances (graph_config_t *cfg) /* {{{ */ { if (cfg == NULL) diff --git a/src/graph.h b/src/graph.h index 7dca2ce..0c4ff76 100644 --- a/src/graph.h +++ b/src/graph.h @@ -24,6 +24,8 @@ #ifndef GRAPH_H #define GRAPH_H 1 +#include + #include "graph_types.h" #include "graph_ident.h" #include "oconfig.h" @@ -105,6 +107,8 @@ 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); + size_t graph_num_instances (graph_config_t *cfg); int graph_sort_instances (graph_config_t *cfg);