api

json.ch

Declarations in json.ch

3 declarationsjson

Declarations

Public only
ParseResult#
Publicstruct
struct ParseResult { var ok : bool var pos : size_t var msg : *char }
ParseResult: return status
Ok#
Publicfunction
func Ok() : ParseResult
short error message
Err#
Publicfunction
func Err(p : size_t, m : *char) : ParseResult
JsonSaxHandler#
Publicinterface
interface JsonSaxHandler
on_null#
Publicfunction
func on_null(self : &JsonSaxHandler) : void
Value callbacks
on_bool#
Publicfunction
func on_bool(self : &JsonSaxHandler, value : bool) : void
on_number#
Publicfunction
func on_number(self : &JsonSaxHandler, data : *char, len : size_t) : void
on_string#
Publicfunction
func on_string(self : &JsonSaxHandler, data : *char, len : size_t) : void
on_object_begin#
Publicfunction
func on_object_begin(self : &JsonSaxHandler) : void
Structural callbacks
on_object_end#
Publicfunction
func on_object_end(self : &JsonSaxHandler) : void
on_array_begin#
Publicfunction
func on_array_begin(self : &JsonSaxHandler) : void
on_array_end#
Publicfunction
func on_array_end(self : &JsonSaxHandler) : void
on_key#
Publicfunction
func on_key(self : &JsonSaxHandler, data : *char, len : size_t) : void
JsonParser#
Publicstruct
struct JsonParser { var max_depth : size_t var max_string : size_t var scratch : char[4096] var s : *char var len : size_t var pos : size_t var handler : *JsonSaxHandler var heap_buf : *char var heap_cap : size_t var str_buf : *char }
make#
PublicfunctionConstructor
func make(max_depth_ : size_t, max_string_ : size_t) : JsonParser
parse#
Publicfunction
func parse(self : &JsonParser, buffer : *char, length : size_t, h : &JsonSaxHandler) : ParseResult
at_end#
function
func at_end(self : &JsonParser) : bool
cur#
function
func cur(self : &JsonParser) : char
advance#
function
func advance(self : &JsonParser, n : size_t) : void
skip_ws#
function
func skip_ws(self : &JsonParser) : void
parse_value#
function
func parse_value(self : &JsonParser, depth : size_t) : ParseResult
parse_literal#
function
func parse_literal(self : &JsonParser, lit : *char, litlen : size_t, type : int) : ParseResult
parse literal like true/false/null
parse_number#
function
func parse_number(self : &JsonParser) : ParseResult
parse_object#
function
func parse_object(self : &JsonParser, depth : size_t) : ParseResult
parse_array#
function
func parse_array(self : &JsonParser, depth : size_t) : ParseResult
ensure_buf#
function
func ensure_buf(self : &JsonParser, cur_len : size_t, need : size_t) : *char
Ensure there is room to write `need` more bytes at index cur_len. Returns a pointer to the active buffer (scratch or a growable heap buffer), or null if the resulting length would exceed max_string. The previously written bytes are preserved across any switch to the heap buffer.
emit_char#
function
func emit_char(self : &JsonParser, c : char, outlen : &size_t) : bool
emit_codepoint#
function
func emit_codepoint(self : &JsonParser, cp : uint32_t, outlen : &size_t) : bool
free_str_buf#
function
func free_str_buf(self : &JsonParser) : void
parse_string_value#
function
func parse_string_value(self : &JsonParser) : ParseResult
parse a JSON string starting at current pos (expects '"'). Unescape into a growable buffer. Strict: control chars (0x00-0x1F) forbidden. Calls handler.on_string with the resulting (unterminated) buffer.
parse_string_key#
function
func parse_string_key(self : &JsonParser) : ParseResult
parse_string_body#
function
func parse_string_body(self : &JsonParser, outlen : &size_t) : ParseResult