X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=sprinter.h;h=59776a9c7e476522fc6c21b48d34cfb0f8a1ea49;hp=6680d41958e209e0e30705cb153297809833810f;hb=327f30a8f398570a51f9c49cc092c4a95c53ef39;hpb=36522fca1cac6ca23c2c4c0280e3e20e96f7bfbb diff --git a/sprinter.h b/sprinter.h index 6680d419..59776a9c 100644 --- a/sprinter.h +++ b/sprinter.h @@ -23,11 +23,16 @@ 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). For + * string (but not string_len) the string pointer passed may be + * NULL. */ 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 *); @@ -65,4 +70,8 @@ sprinter_text_create (const void *ctx, FILE *stream); struct sprinter * sprinter_json_create (const void *ctx, FILE *stream); +/* Create a new structure printer that emits S-Expressions. */ +struct sprinter * +sprinter_sexp_create (const void *ctx, FILE *stream); + #endif // NOTMUCH_SPRINTER_H