X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=sprinter.h;h=5f4317570a059814922402bbe89643e6c7db00b0;hp=77dc26f3fe67660614de95e453cf194b653a5e9a;hb=14883b07003b9ed4223cd8f2c03b301fddae07bd;hpb=41becc0c9dfabbd59a1c96bdedc99a785539a93b diff --git a/sprinter.h b/sprinter.h index 77dc26f3..5f431757 100644 --- a/sprinter.h +++ b/sprinter.h @@ -23,11 +23,14 @@ typedef struct sprinter { */ void (*end) (struct sprinter *); - /* Print one string/integer/boolean/null element (possibly inside a - * list or map, followed or preceded by separators). - * For string, the char * must be UTF-8 encoded. + /* Print one string/integer/boolean/null element (possibly inside + * a list or map, followed or preceded by separators). For string + * and string_len, the char * must be UTF-8 encoded. string_len + * allows non-terminated strings and strings with embedded NULs + * (though the handling of the latter is format-dependent). */ void (*string) (struct sprinter *, const char *); + void (*string_len) (struct sprinter *, const char *, size_t); void (*integer) (struct sprinter *, int); void (*boolean) (struct sprinter *, notmuch_bool_t); void (*null) (struct sprinter *); @@ -55,4 +58,14 @@ typedef struct sprinter { notmuch_bool_t is_text_printer; } sprinter_t; + +/* Create a new unstructured printer that emits the default text format + * for "notmuch search". */ +struct sprinter * +sprinter_text_create (const void *ctx, FILE *stream); + +/* Create a new structure printer that emits JSON. */ +struct sprinter * +sprinter_json_create (const void *ctx, FILE *stream); + #endif // NOTMUCH_SPRINTER_H