json.ch

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
append_utf8
function
func append_utf8(cp : uint32_t, out : *char, outpos : &size_t, outcap : size_t) : bool
Helper: append codepoint as UTF-8 into out buffer. Return false if not enough space.
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 }
make
Publicfunction
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
parse_string_inplace
function
func parse_string_inplace(self : &JsonParser, out : *char, outcap : size_t, outlen : &size_t) : ParseResult
parse a JSON string starting at current pos (expects '"'). Unescape into provided out buffer with capacity outcap. outlen set to length. Uses strict rules: control characters (0x00-0x1F) are forbidden.