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
Err#
Publicfunction
func Err(p : size_t, m : *char) : ParseResult
JsonSaxHandler#
Publicinterface
interface JsonSaxHandler
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
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
parse_literal#
function
parse literal like true/false/null
parse_number#
function
parse_object#
function
parse_array#
function
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
free_str_buf#
function
func free_str_buf(self : &JsonParser) : void
parse_string_value#
function
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
parse_string_body#
function