json-parser.h revision bb869cc24b24a8df84a43154c628785d6aee784c
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen /* : { new object */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen /* } (not returned for the root object) */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen/* Parse JSON tokens from the input stream. */
31ddc75584c5cde53d2e78a737587f2e7fdcb0d2Timo Sirainenstruct json_parser *json_parser_init(struct istream *input);
8887bf3757d51d73887dd20b1db3334d867d3817Timo Sirainenint json_parser_deinit(struct json_parser **parser, const char **error_r);
51b979b6414b940f04677a7e2d064be119345954Timo Sirainen/* Parse the next token. Returns 1 if found, 0 if more input stream is
51b979b6414b940f04677a7e2d064be119345954Timo Sirainen non-blocking and needs more input, -1 if input stream is at EOF. */
c53e8ee216904ffe6de4f6518d9f9f5107b7610eTimo Sirainenint json_parse_next(struct json_parser *parser, enum json_type *type_r,
589a9c6e8ee22071c14171c04bfc6bfe17121871Timo Sirainen const char **value_r);
589a9c6e8ee22071c14171c04bfc6bfe17121871Timo Sirainen/* Skip the next object value. If it's an object, its members are also
ef5fb27361cc5e15766e85e28355750ff04b13c9Timo Sirainenvoid json_parse_skip_next(struct json_parser *parser);
ef5fb27361cc5e15766e85e28355750ff04b13c9Timo Sirainen/* Return the following string as input stream. Returns 1 if ok, 0 if
18d92dbbb752c79dc461514e52f7ef11847e636bTimo Sirainen input stream is non-blocking and needs more input, -1 if the next token
18d92dbbb752c79dc461514e52f7ef11847e636bTimo Sirainen isn't a string (call json_parse_next()). */
18d92dbbb752c79dc461514e52f7ef11847e636bTimo Sirainenint json_parse_next_stream(struct json_parser *parser,
f883b315ca72073b58020798e6d907340b327228Timo Sirainen/* Append data to already opened JSON string. src should be valid UTF-8 data. */
945565e0c9cf979b5feeba6fbd4efce3bf4484adTimo Sirainenvoid json_append_escaped(string_t *dest, const char *src);
945565e0c9cf979b5feeba6fbd4efce3bf4484adTimo Sirainen/* Same as json_append_escaped(), but append non-\0 terminated input. */
945565e0c9cf979b5feeba6fbd4efce3bf4484adTimo Sirainenvoid json_append_escaped_data(string_t *dest, const unsigned char *src, size_t size);