diff options
author | Will Newton <will.newton@linaro.org> | 2014-04-08 10:18:16 +0100 |
---|---|---|
committer | Will Newton <will.newton@linaro.org> | 2014-04-11 16:05:03 +0100 |
commit | 970c602aa60bb29845c445c18d7b20f7c4552b78 (patch) | |
tree | 734a1f22c1c51cf3cd9d8c94e42a0f0e4a41ab5a /benchtests/json-lib.h | |
parent | 36875b06e0ed7f137190b9228bef553adfc338ba (diff) | |
download | glibc-970c602aa60bb29845c445c18d7b20f7c4552b78.tar.gz glibc-970c602aa60bb29845c445c18d7b20f7c4552b78.tar.xz glibc-970c602aa60bb29845c445c18d7b20f7c4552b78.zip |
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 <will.newton@linaro.org> * 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.
Diffstat (limited to 'benchtests/json-lib.h')
-rw-r--r-- | benchtests/json-lib.h | 47 |
1 files changed, 47 insertions, 0 deletions
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 + <http://www.gnu.org/licenses/>. */ + +#ifndef __JSON_LIB_H__ +#define __JSON_LIB_H__ + +#include <stdbool.h> +#include <stdio.h> + +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 |