Re: [PATCH v2 05/10] split-index.c: dump "link" extension as json
- From
- Jeff Hostetler <git@jeffhostetler.com>
- Date
- Jun 24, 2019, 20:06 UTC
- Message-ID
- <55f81571-ba45-edcf-49bd-05418cc309c5@jeffhostetler.com>
- In-Reply-To
- <20190624130226.17293-6-pclouds@gmail.com>
On 6/24/2019 9:02 AM, Nguyễn Thái Ngọc Duy wrote:
Show 36 quoted lines
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> json-writer.c | 14 ++++++++++++++
> json-writer.h | 3 +++
> split-index.c | 9 ++++++++-
> t/t3011-ls-files-json.sh | 14 ++++++++++++++
> t/t3011/split-index (new) | 39 +++++++++++++++++++++++++++++++++++++++
> 5 files changed, 78 insertions(+), 1 deletion(-)
>
> diff --git a/json-writer.c b/json-writer.c
> index 0608726512..c0bd302e4e 100644
> --- a/json-writer.c
> +++ b/json-writer.c
> @@ -1,4 +1,5 @@
> #include "cache.h"
> +#include "ewah/ewok.h"
> #include "json-writer.h"
>
> void jw_init(struct json_writer *jw)
> @@ -224,6 +225,19 @@ void jw_object_stat_data(struct json_writer *jw, const char *name,
> jw_end(jw);
> }
>
> +static void dump_ewah_one(size_t pos, void *jw)
> +{
> + jw_array_intmax(jw, pos);
> +}
> +
> +void jw_object_ewah(struct json_writer *jw, const char *key,
> + struct ewah_bitmap *ewah)
> +{
> + jw_object_inline_begin_array(jw, key);
> + ewah_each_bit(ewah, dump_ewah_one, jw);
> + jw_end(jw);
> +}
> +As I said in an earlier commit in this series, I'd prefer that we keep such data-structure-specific helper functions in the source file that defines the data structure rather than adding them to json-writer.[ch]
I'm curious how big these EWAHs will be in practice and how useful an array of integers will be (especially as the pretty format will be one integer per line). Perhaps it would helpful to have an extended example in one of the tests.
Would it be better to have the caller of ewah_each_bit() build a hex or bit string in a strbuf and then write it as a single string?
Jeff