From 970c602aa60bb29845c445c18d7b20f7c4552b78 Mon Sep 17 00:00:00 2001 From: Will Newton Date: Tue, 8 Apr 2014 10:18:16 +0100 Subject: benchtests: Improve readability of JSON output Add a small library to print JSON values and use it to improve the readability of the benchmark output and the readability of the benchmark code. ChangeLog: 2014-04-11 Will Newton * benchtests/Makefile (extra-objs): Add json-lib.o. (bench-func): Tidy up JSON output. * benchtests/bench-skeleton.c: Include json-lib.h. (main): Use JSON library functions to do output of benchmark results. * benchtests/bench-timing-type.c (main): Output the timing type simply, leaving formatting to the user. * benchtests/json-lib.c: New file. * benchtests/json-lib.h: Likewise. --- benchtests/json-lib.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 benchtests/json-lib.h (limited to 'benchtests/json-lib.h') diff --git a/benchtests/json-lib.h b/benchtests/json-lib.h new file mode 100644 index 0000000000..ed703c6066 --- /dev/null +++ b/benchtests/json-lib.h @@ -0,0 +1,47 @@ +/* Simple library for printing JSON data. + Copyright (C) 2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef __JSON_LIB_H__ +#define __JSON_LIB_H__ + +#include +#include + +struct json_ctx +{ + FILE *fp; + unsigned int indent_level; + bool first_element; +}; + +typedef struct json_ctx json_ctx_t; + +void json_init (json_ctx_t *ctx, unsigned int indent_level, FILE *fp); +void json_document_begin (json_ctx_t *ctx); +void json_document_end (json_ctx_t *ctx); +void json_attr_object_begin (json_ctx_t *ctx, const char *name); +void json_attr_object_end (json_ctx_t *ctx); +void json_attr_string (json_ctx_t *ctx, const char *name, const char *s); +void json_attr_double (json_ctx_t *ctx, const char *name, double d); +void json_array_begin (json_ctx_t *ctx, const char *name); +void json_array_end (json_ctx_t *ctx); +void json_element_double (json_ctx_t *ctx, double d); +void json_element_object_begin (json_ctx_t *ctx); +void json_element_object_end (json_ctx_t *ctx); + +#endif -- cgit 1.4.1