|
1 | 1 | local ffi = require("ffi") |
2 | 2 |
|
3 | | -ffi.cdef[[ |
4 | | -typedef struct qjson_doc qjson_doc; |
5 | | -typedef struct { |
6 | | - const qjson_doc* doc; |
7 | | - uint32_t idx_start, idx_end, _reserved0, _reserved1; |
8 | | -} qjson_cursor; |
9 | | - |
10 | | -typedef struct { |
11 | | - uint32_t mode; |
12 | | - uint32_t max_depth; |
13 | | -} qjson_options; |
14 | | - |
15 | | -const char* qjson_strerror(int code); |
16 | | -qjson_doc* qjson_parse (const uint8_t* buf, size_t len, int* err_out); |
17 | | -qjson_doc* qjson_parse_ex(const uint8_t* buf, size_t len, |
18 | | - const qjson_options* opts, int* err_out); |
19 | | -void qjson_free (qjson_doc* doc); |
20 | | - |
21 | | -int qjson_get_str (qjson_doc*, const char* path, size_t path_len, const uint8_t** p, size_t* n); |
22 | | -int qjson_get_i64 (qjson_doc*, const char* path, size_t path_len, int64_t* out); |
23 | | -int qjson_get_f64 (qjson_doc*, const char* path, size_t path_len, double* out); |
24 | | -int qjson_get_bool(qjson_doc*, const char* path, size_t path_len, int* out); |
25 | | -int qjson_is_null (qjson_doc*, const char* path, size_t path_len, int* out); |
26 | | -int qjson_typeof (qjson_doc*, const char* path, size_t path_len, int* out); |
27 | | -int qjson_len (qjson_doc*, const char* path, size_t path_len, size_t* out); |
28 | | - |
29 | | -int qjson_open (qjson_doc*, const char* path, size_t path_len, qjson_cursor* out); |
30 | | -int qjson_cursor_open (const qjson_cursor*, const char* path, size_t path_len, qjson_cursor* out); |
31 | | -int qjson_cursor_field(const qjson_cursor*, const char* key, size_t key_len, qjson_cursor* out); |
32 | | -int qjson_cursor_index(const qjson_cursor*, size_t i, qjson_cursor* out); |
33 | | - |
34 | | -int qjson_cursor_get_str (const qjson_cursor*, const char*, size_t, const uint8_t**, size_t*); |
35 | | -int qjson_cursor_get_i64 (const qjson_cursor*, const char*, size_t, int64_t*); |
36 | | -int qjson_cursor_get_f64 (const qjson_cursor*, const char*, size_t, double*); |
37 | | -int qjson_cursor_get_bool(const qjson_cursor*, const char*, size_t, int*); |
38 | | -int qjson_cursor_typeof (const qjson_cursor*, const char*, size_t, int*); |
39 | | -int qjson_cursor_len (const qjson_cursor*, const char*, size_t, size_t*); |
40 | | -int qjson_cursor_bytes(const qjson_cursor*, size_t* byte_start, size_t* byte_end); |
41 | | -int qjson_cursor_object_entry_at(const qjson_cursor*, size_t i, |
42 | | - const uint8_t** key_ptr, size_t* key_len, |
43 | | - qjson_cursor* value_out); |
44 | | -]] |
45 | | - |
46 | | -local C = ffi.load("qjson") |
| 3 | +local C = require("qjson.lib") |
47 | 4 |
|
48 | 5 | local err_box = ffi.new("int[1]") |
49 | 6 | local i64_box = ffi.new("int64_t[1]") |
|
0 commit comments