@salang/sa 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/sa.js +13 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- package/sa_std/ws_client.sai +57 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
@import "json.sal"
|
|
2
|
+
@import "json.sai"
|
|
3
|
+
|
|
4
|
+
[MACRO] JSON_PARSE %out_root, %bytes, %len
|
|
5
|
+
%out_root = call @sa_json_parse(&%bytes, %len)
|
|
6
|
+
[END_MACRO]
|
|
7
|
+
|
|
8
|
+
[MACRO] JSON_KIND %out_kind, %node
|
|
9
|
+
%out_kind = call @sa_json_kind(%node)
|
|
10
|
+
[END_MACRO]
|
|
11
|
+
|
|
12
|
+
[MACRO] JSON_IS_NULL %out_bool, %node
|
|
13
|
+
__json_kind_%out_bool = call @sa_json_kind(%node)
|
|
14
|
+
%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_NULL
|
|
15
|
+
!__json_kind_%out_bool
|
|
16
|
+
[END_MACRO]
|
|
17
|
+
|
|
18
|
+
[MACRO] JSON_IS_BOOL %out_bool, %node
|
|
19
|
+
__json_kind_%out_bool = call @sa_json_kind(%node)
|
|
20
|
+
%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_BOOL
|
|
21
|
+
!__json_kind_%out_bool
|
|
22
|
+
[END_MACRO]
|
|
23
|
+
|
|
24
|
+
[MACRO] JSON_IS_STRING %out_bool, %node
|
|
25
|
+
__json_kind_%out_bool = call @sa_json_kind(%node)
|
|
26
|
+
%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_STRING
|
|
27
|
+
!__json_kind_%out_bool
|
|
28
|
+
[END_MACRO]
|
|
29
|
+
|
|
30
|
+
[MACRO] JSON_IS_ARRAY %out_bool, %node
|
|
31
|
+
__json_kind_%out_bool = call @sa_json_kind(%node)
|
|
32
|
+
%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_ARRAY
|
|
33
|
+
!__json_kind_%out_bool
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] JSON_IS_OBJECT %out_bool, %node
|
|
37
|
+
__json_kind_%out_bool = call @sa_json_kind(%node)
|
|
38
|
+
%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_OBJECT
|
|
39
|
+
!__json_kind_%out_bool
|
|
40
|
+
[END_MACRO]
|
|
41
|
+
|
|
42
|
+
[MACRO] JSON_IS_NUMBER %out_bool, %node
|
|
43
|
+
__json_kind_%out_bool = call @sa_json_kind(%node)
|
|
44
|
+
__json_is_int_%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_INTEGER
|
|
45
|
+
__json_is_float_%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_FLOAT
|
|
46
|
+
__json_is_numstr_%out_bool = eq __json_kind_%out_bool, SA_JSON_KIND_NUMBER_STRING
|
|
47
|
+
__json_is_num_a_%out_bool = or __json_is_int_%out_bool, __json_is_float_%out_bool
|
|
48
|
+
%out_bool = or __json_is_num_a_%out_bool, __json_is_numstr_%out_bool
|
|
49
|
+
!__json_kind_%out_bool
|
|
50
|
+
!__json_is_int_%out_bool
|
|
51
|
+
!__json_is_float_%out_bool
|
|
52
|
+
!__json_is_numstr_%out_bool
|
|
53
|
+
!__json_is_num_a_%out_bool
|
|
54
|
+
[END_MACRO]
|
|
55
|
+
|
|
56
|
+
[MACRO] JSON_OBJECT_GET %out_status, %out_node, %node, %key, %key_len
|
|
57
|
+
__json_get_slot_%out_node = stack_alloc 8
|
|
58
|
+
%out_status = call @sa_json_object_get(%node, &%key, %key_len, &__json_get_slot_%out_node)
|
|
59
|
+
%out_node = load __json_get_slot_%out_node+0 as ptr
|
|
60
|
+
[END_MACRO]
|
|
61
|
+
|
|
62
|
+
[MACRO] JSON_ARRAY_GET %out_status, %out_node, %node, %index
|
|
63
|
+
__json_array_slot_%out_node = stack_alloc 8
|
|
64
|
+
%out_status = call @sa_json_array_get(%node, %index, &__json_array_slot_%out_node)
|
|
65
|
+
%out_node = load __json_array_slot_%out_node+0 as ptr
|
|
66
|
+
[END_MACRO]
|
|
67
|
+
|
|
68
|
+
[MACRO] JSON_OBJECT_KEY_AT %out_status, %out_ptr, %out_len, %node, %index
|
|
69
|
+
__json_key_ptr_slot_%out_ptr = stack_alloc 8
|
|
70
|
+
__json_key_len_slot_%out_ptr = stack_alloc 8
|
|
71
|
+
%out_status = call @sa_json_object_key_at(%node, %index, &__json_key_ptr_slot_%out_ptr, &__json_key_len_slot_%out_ptr)
|
|
72
|
+
%out_ptr = load __json_key_ptr_slot_%out_ptr+0 as ptr
|
|
73
|
+
%out_len = load __json_key_len_slot_%out_ptr+0 as u64
|
|
74
|
+
[END_MACRO]
|
|
75
|
+
|
|
76
|
+
[MACRO] JSON_OBJECT_GET_STRING %out_status, %out_ptr, %out_len, %node, %key, %key_len
|
|
77
|
+
__json_str_ptr_slot_%out_ptr = stack_alloc 8
|
|
78
|
+
__json_str_len_slot_%out_ptr = stack_alloc 8
|
|
79
|
+
%out_status = call @sa_json_object_get_string(%node, &%key, %key_len, &__json_str_ptr_slot_%out_ptr, &__json_str_len_slot_%out_ptr)
|
|
80
|
+
%out_ptr = load __json_str_ptr_slot_%out_ptr+0 as ptr
|
|
81
|
+
%out_len = load __json_str_len_slot_%out_ptr+0 as u64
|
|
82
|
+
[END_MACRO]
|
|
83
|
+
|
|
84
|
+
[MACRO] JSON_OBJECT_GET_BOOL %out_status, %out_value, %node, %key, %key_len
|
|
85
|
+
__json_bool_slot_%out_value = stack_alloc 1
|
|
86
|
+
%out_status = call @sa_json_object_get_bool(%node, &%key, %key_len, &__json_bool_slot_%out_value)
|
|
87
|
+
%out_value = load __json_bool_slot_%out_value+0 as u8
|
|
88
|
+
[END_MACRO]
|
|
89
|
+
|
|
90
|
+
[MACRO] JSON_OBJECT_GET_I64 %out_status, %out_value, %node, %key, %key_len
|
|
91
|
+
__json_i64_slot_%out_value = stack_alloc 8
|
|
92
|
+
%out_status = call @sa_json_object_get_i64(%node, &%key, %key_len, &__json_i64_slot_%out_value)
|
|
93
|
+
%out_value = load __json_i64_slot_%out_value+0 as i64
|
|
94
|
+
[END_MACRO]
|
|
95
|
+
|
|
96
|
+
[MACRO] JSON_OBJECT_GET_F64 %out_status, %out_value, %node, %key, %key_len
|
|
97
|
+
__json_f64_slot_%out_value = stack_alloc 8
|
|
98
|
+
%out_status = call @sa_json_object_get_f64(%node, &%key, %key_len, &__json_f64_slot_%out_value)
|
|
99
|
+
%out_value = load __json_f64_slot_%out_value+0 as f64
|
|
100
|
+
[END_MACRO]
|
|
101
|
+
|
|
102
|
+
[MACRO] JSON_AS_BOOL %out_status, %out_value, %node
|
|
103
|
+
__json_as_bool_slot_%out_value = stack_alloc 1
|
|
104
|
+
%out_status = call @sa_json_as_bool(%node, &__json_as_bool_slot_%out_value)
|
|
105
|
+
%out_value = load __json_as_bool_slot_%out_value+0 as u8
|
|
106
|
+
[END_MACRO]
|
|
107
|
+
|
|
108
|
+
[MACRO] JSON_AS_I64 %out_status, %out_value, %node
|
|
109
|
+
__json_as_i64_slot_%out_value = stack_alloc 8
|
|
110
|
+
%out_status = call @sa_json_as_i64(%node, &__json_as_i64_slot_%out_value)
|
|
111
|
+
%out_value = load __json_as_i64_slot_%out_value+0 as i64
|
|
112
|
+
[END_MACRO]
|
|
113
|
+
|
|
114
|
+
[MACRO] JSON_AS_F64 %out_status, %out_value, %node
|
|
115
|
+
__json_as_f64_slot_%out_value = stack_alloc 8
|
|
116
|
+
%out_status = call @sa_json_as_f64(%node, &__json_as_f64_slot_%out_value)
|
|
117
|
+
%out_value = load __json_as_f64_slot_%out_value+0 as f64
|
|
118
|
+
[END_MACRO]
|
|
119
|
+
|
|
120
|
+
[MACRO] JSON_VALUE_COUNT %out_status, %out_count, %node
|
|
121
|
+
__json_count_slot_%out_count = stack_alloc 8
|
|
122
|
+
%out_status = call @sa_json_value_count(%node, &__json_count_slot_%out_count)
|
|
123
|
+
%out_count = load __json_count_slot_%out_count+0 as u64
|
|
124
|
+
[END_MACRO]
|
|
125
|
+
|
|
126
|
+
[MACRO] JSON_ARRAY_LOOP_INIT %out_status, %out_index, %out_count, %array
|
|
127
|
+
EXPAND JSON_VALUE_COUNT %out_status, %out_count, %array
|
|
128
|
+
%out_index = add 0, 0
|
|
129
|
+
[END_MACRO]
|
|
130
|
+
|
|
131
|
+
[MACRO] JSON_ARRAY_LOOP_HAS_NEXT %out_bool, %index, %count
|
|
132
|
+
%out_bool = ult %index, %count
|
|
133
|
+
[END_MACRO]
|
|
134
|
+
|
|
135
|
+
[MACRO] JSON_ARRAY_LOOP_NEXT %out_index, %index
|
|
136
|
+
%out_index = add %index, 1
|
|
137
|
+
[END_MACRO]
|
|
138
|
+
|
|
139
|
+
[MACRO] JSON_OBJECT_LOOP_INIT %out_status, %out_index, %out_count, %object
|
|
140
|
+
EXPAND JSON_VALUE_COUNT %out_status, %out_count, %object
|
|
141
|
+
%out_index = add 0, 0
|
|
142
|
+
[END_MACRO]
|
|
143
|
+
|
|
144
|
+
[MACRO] JSON_OBJECT_LOOP_HAS_NEXT %out_bool, %index, %count
|
|
145
|
+
%out_bool = ult %index, %count
|
|
146
|
+
[END_MACRO]
|
|
147
|
+
|
|
148
|
+
[MACRO] JSON_OBJECT_LOOP_NEXT %out_index, %index
|
|
149
|
+
%out_index = add %index, 1
|
|
150
|
+
[END_MACRO]
|
|
151
|
+
|
|
152
|
+
[MACRO] JSON_STRING_SLICE %out_ptr, %out_len, %node
|
|
153
|
+
%out_ptr = call @sa_json_string_ptr(%node)
|
|
154
|
+
%out_len = call @sa_json_string_len(%node)
|
|
155
|
+
[END_MACRO]
|
|
156
|
+
|
|
157
|
+
[MACRO] JSON_STRING_PTR %out_ptr, %node
|
|
158
|
+
%out_ptr = call @sa_json_string_ptr(%node)
|
|
159
|
+
[END_MACRO]
|
|
160
|
+
|
|
161
|
+
[MACRO] JSON_FREE %node
|
|
162
|
+
__json_free_res_%node = call @sa_json_free(^%node)
|
|
163
|
+
!__json_free_res_%node
|
|
164
|
+
[END_MACRO]
|
|
165
|
+
|
|
166
|
+
[MACRO] JSON_BUFFER_SLICE %out_ptr, %out_len, %buffer
|
|
167
|
+
%out_ptr = call @sa_json_buffer_data(%buffer)
|
|
168
|
+
%out_len = call @sa_json_buffer_len(%buffer)
|
|
169
|
+
[END_MACRO]
|
|
170
|
+
|
|
171
|
+
[MACRO] JSON_BUFFER_FREE %buffer
|
|
172
|
+
__json_buffer_free_res_%buffer = call @sa_json_buffer_free(^%buffer)
|
|
173
|
+
!__json_buffer_free_res_%buffer
|
|
174
|
+
[END_MACRO]
|
|
175
|
+
|
|
176
|
+
[MACRO] JSON_WRITER_NEW_MINIFIED %out_status, %out_writer
|
|
177
|
+
__json_writer_slot_%out_writer = stack_alloc 8
|
|
178
|
+
%out_status = call @sa_json_writer_new(SA_JSON_WHITESPACE_MINIFIED, 1, 0, 0, 0, &__json_writer_slot_%out_writer)
|
|
179
|
+
%out_writer = load __json_writer_slot_%out_writer+0 as ptr
|
|
180
|
+
[END_MACRO]
|
|
181
|
+
|
|
182
|
+
[MACRO] JSON_WRITER_FIELD %out_status, %writer, %key, %key_len
|
|
183
|
+
%out_status = call @sa_json_writer_object_field(%writer, &%key, %key_len)
|
|
184
|
+
[END_MACRO]
|
|
185
|
+
|
|
186
|
+
[MACRO] JSON_WRITER_FIELD_STRING %out_status, %writer, %key, %key_len, %data, %data_len
|
|
187
|
+
%out_status = call @sa_json_writer_field_string(%writer, &%key, %key_len, &%data, %data_len)
|
|
188
|
+
[END_MACRO]
|
|
189
|
+
|
|
190
|
+
[MACRO] JSON_WRITER_FIELD_BOOL %out_status, %writer, %key, %key_len, %value
|
|
191
|
+
%out_status = call @sa_json_writer_field_bool(%writer, &%key, %key_len, %value)
|
|
192
|
+
[END_MACRO]
|
|
193
|
+
|
|
194
|
+
[MACRO] JSON_WRITER_FIELD_I64 %out_status, %writer, %key, %key_len, %value
|
|
195
|
+
%out_status = call @sa_json_writer_field_i64(%writer, &%key, %key_len, %value)
|
|
196
|
+
[END_MACRO]
|
|
197
|
+
|
|
198
|
+
[MACRO] JSON_WRITER_FIELD_F64 %out_status, %writer, %key, %key_len, %value
|
|
199
|
+
%out_status = call @sa_json_writer_field_f64(%writer, &%key, %key_len, %value)
|
|
200
|
+
[END_MACRO]
|
|
201
|
+
|
|
202
|
+
[MACRO] JSON_WRITER_FIELD_NULL %out_status, %writer, %key, %key_len
|
|
203
|
+
%out_status = call @sa_json_writer_field_null(%writer, &%key, %key_len)
|
|
204
|
+
[END_MACRO]
|
|
205
|
+
|
|
206
|
+
[MACRO] JSON_WRITER_FIELD_NODE %out_status, %writer, %key, %key_len, %node
|
|
207
|
+
%out_status = call @sa_json_writer_field_node(%writer, &%key, %key_len, %node)
|
|
208
|
+
[END_MACRO]
|
|
209
|
+
|
|
210
|
+
[MACRO] JSON_WRITER_BEGIN_OBJECT %out_status, %writer
|
|
211
|
+
%out_status = call @sa_json_writer_begin_object(%writer)
|
|
212
|
+
[END_MACRO]
|
|
213
|
+
|
|
214
|
+
[MACRO] JSON_WRITER_END_OBJECT %out_status, %writer
|
|
215
|
+
%out_status = call @sa_json_writer_end_object(%writer)
|
|
216
|
+
[END_MACRO]
|
|
217
|
+
|
|
218
|
+
[MACRO] JSON_WRITER_BEGIN_ARRAY %out_status, %writer
|
|
219
|
+
%out_status = call @sa_json_writer_begin_array(%writer)
|
|
220
|
+
[END_MACRO]
|
|
221
|
+
|
|
222
|
+
[MACRO] JSON_WRITER_END_ARRAY %out_status, %writer
|
|
223
|
+
%out_status = call @sa_json_writer_end_array(%writer)
|
|
224
|
+
[END_MACRO]
|
|
225
|
+
|
|
226
|
+
[MACRO] JSON_WRITER_WRITE_STRING %out_status, %writer, %data, %len
|
|
227
|
+
%out_status = call @sa_json_writer_write_string(%writer, &%data, %len)
|
|
228
|
+
[END_MACRO]
|
|
229
|
+
|
|
230
|
+
[MACRO] JSON_WRITER_WRITE_BOOL %out_status, %writer, %value
|
|
231
|
+
%out_status = call @sa_json_writer_write_bool(%writer, %value)
|
|
232
|
+
[END_MACRO]
|
|
233
|
+
|
|
234
|
+
[MACRO] JSON_WRITER_WRITE_I64 %out_status, %writer, %value
|
|
235
|
+
%out_status = call @sa_json_writer_write_i64(%writer, %value)
|
|
236
|
+
[END_MACRO]
|
|
237
|
+
|
|
238
|
+
[MACRO] JSON_WRITER_WRITE_F64 %out_status, %writer, %value
|
|
239
|
+
%out_status = call @sa_json_writer_write_f64(%writer, %value)
|
|
240
|
+
[END_MACRO]
|
|
241
|
+
|
|
242
|
+
[MACRO] JSON_WRITER_WRITE_NULL %out_status, %writer
|
|
243
|
+
%out_status = call @sa_json_writer_write_null(%writer)
|
|
244
|
+
[END_MACRO]
|
|
245
|
+
|
|
246
|
+
[MACRO] JSON_WRITER_WRITE_NODE %out_status, %writer, %node
|
|
247
|
+
%out_status = call @sa_json_writer_write_node(%writer, %node)
|
|
248
|
+
[END_MACRO]
|
|
249
|
+
|
|
250
|
+
[MACRO] JSON_WRITER_FINISH %out_status, %out_buffer, %writer
|
|
251
|
+
__json_finish_slot_%out_buffer = stack_alloc 8
|
|
252
|
+
%out_status = call @sa_json_writer_finish(%writer, &__json_finish_slot_%out_buffer)
|
|
253
|
+
%out_buffer = load __json_finish_slot_%out_buffer+0 as ptr
|
|
254
|
+
[END_MACRO]
|
|
255
|
+
|
|
256
|
+
[MACRO] JSON_WRITER_FREE %writer
|
|
257
|
+
__json_writer_free_res_%writer = call @sa_json_writer_free(^%writer)
|
|
258
|
+
!__json_writer_free_res_%writer
|
|
259
|
+
[END_MACRO]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// SA-facing contracts for the Zig-backed sa_std.encoding.json module.
|
|
2
|
+
// JSON documents and derived nodes are opaque owned ptr values and must be freed explicitly.
|
|
3
|
+
// JSON stringification returns an owned byte buffer handle.
|
|
4
|
+
@extern sa_json_parse(&json_bytes: ptr, len: u64) -> ^ptr
|
|
5
|
+
@extern sa_json_kind(node: ptr) -> u32
|
|
6
|
+
@extern sa_json_object_get(node: ptr, &key: ptr, key_len: u64, &out_handle: ptr) -> i32
|
|
7
|
+
@extern sa_json_array_get(node: ptr, index: u64, &out_handle: ptr) -> i32
|
|
8
|
+
@extern sa_json_object_key_at(node: ptr, index: u64, &out_ptr: ptr, &out_len: ptr) -> i32
|
|
9
|
+
@extern sa_json_object_get_string(node: ptr, &key: ptr, key_len: u64, &out_ptr: ptr, &out_len: ptr) -> i32
|
|
10
|
+
@extern sa_json_object_get_bool(node: ptr, &key: ptr, key_len: u64, &out_value: ptr) -> i32
|
|
11
|
+
@extern sa_json_object_get_i64(node: ptr, &key: ptr, key_len: u64, &out_value: ptr) -> i32
|
|
12
|
+
@extern sa_json_object_get_f64(node: ptr, &key: ptr, key_len: u64, &out_value: ptr) -> i32
|
|
13
|
+
@extern sa_json_as_f64(node: ptr, &out_value: ptr) -> i32
|
|
14
|
+
@extern sa_json_as_i64(node: ptr, &out_value: ptr) -> i32
|
|
15
|
+
@extern sa_json_as_bool(node: ptr, &out_value: ptr) -> i32
|
|
16
|
+
@extern sa_json_string_ptr(node: ptr) -> &ptr
|
|
17
|
+
@extern sa_json_string_len(node: ptr) -> u64
|
|
18
|
+
@extern sa_json_value_count(node: ptr, &out_count: ptr) -> i32
|
|
19
|
+
@extern sa_json_free(^node: ptr) -> i32!
|
|
20
|
+
@extern sa_json_stringify(node: ptr, &out_handle: ptr) -> i32
|
|
21
|
+
@extern sa_json_buffer_data(buffer: ptr) -> &ptr
|
|
22
|
+
@extern sa_json_buffer_len(buffer: ptr) -> u64
|
|
23
|
+
@extern sa_json_buffer_free(^buffer: ptr) -> i32!
|
|
24
|
+
@extern sa_json_scanner_new(&out_handle: ptr) -> i32
|
|
25
|
+
@extern sa_json_scanner_feed(scanner: ptr, &input: ptr, len: u64) -> i32
|
|
26
|
+
@extern sa_json_scanner_end_input(scanner: ptr) -> i32
|
|
27
|
+
@extern sa_json_scanner_next(scanner: ptr, &out_token: ptr) -> i32
|
|
28
|
+
@extern sa_json_scanner_free(^scanner: ptr) -> i32
|
|
29
|
+
@extern sa_json_stream_new(&json_bytes: ptr, len: u64) -> ^ptr
|
|
30
|
+
@extern sa_json_stream_next(stream: ptr) -> u32
|
|
31
|
+
@extern sa_json_stream_get_slice_ptr(stream: ptr) -> &ptr
|
|
32
|
+
@extern sa_json_stream_get_slice_len(stream: ptr) -> u64
|
|
33
|
+
@extern sa_json_stream_free(^stream: ptr) -> i32!
|
|
34
|
+
@extern sa_json_writer_new(whitespace: u32, emit_null_optional_fields: u8, emit_strings_as_arrays: u8, escape_unicode: u8, emit_nonportable_numbers_as_strings: u8, &out_handle: ptr) -> i32
|
|
35
|
+
@extern sa_json_writer_begin_object(writer: ptr) -> i32
|
|
36
|
+
@extern sa_json_writer_end_object(writer: ptr) -> i32
|
|
37
|
+
@extern sa_json_writer_begin_array(writer: ptr) -> i32
|
|
38
|
+
@extern sa_json_writer_end_array(writer: ptr) -> i32
|
|
39
|
+
@extern sa_json_writer_object_field(writer: ptr, &key: ptr, key_len: u64) -> i32
|
|
40
|
+
@extern sa_json_writer_field_string(writer: ptr, &key: ptr, key_len: u64, &data: ptr, len: u64) -> i32
|
|
41
|
+
@extern sa_json_writer_field_bool(writer: ptr, &key: ptr, key_len: u64, value: u8) -> i32
|
|
42
|
+
@extern sa_json_writer_field_i64(writer: ptr, &key: ptr, key_len: u64, value: i64) -> i32
|
|
43
|
+
@extern sa_json_writer_field_f64(writer: ptr, &key: ptr, key_len: u64, value: f64) -> i32
|
|
44
|
+
@extern sa_json_writer_field_null(writer: ptr, &key: ptr, key_len: u64) -> i32
|
|
45
|
+
@extern sa_json_writer_field_node(writer: ptr, &key: ptr, key_len: u64, node: ptr) -> i32
|
|
46
|
+
@extern sa_json_writer_write_bool(writer: ptr, value: u8) -> i32
|
|
47
|
+
@extern sa_json_writer_write_i64(writer: ptr, value: i64) -> i32
|
|
48
|
+
@extern sa_json_writer_write_f64(writer: ptr, value: f64) -> i32
|
|
49
|
+
@extern sa_json_writer_write_string(writer: ptr, &data: ptr, len: u64) -> i32
|
|
50
|
+
@extern sa_json_writer_write_null(writer: ptr) -> i32
|
|
51
|
+
@extern sa_json_writer_write_node(writer: ptr, node: ptr) -> i32
|
|
52
|
+
@extern sa_json_writer_finish(writer: ptr, &out_handle: ptr) -> i32
|
|
53
|
+
@extern sa_json_writer_finish_buffer(writer: ptr) -> ptr
|
|
54
|
+
@extern sa_json_writer_free(^writer: ptr) -> i32
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#def SA_JSON_KIND_INVALID = 4294967295
|
|
2
|
+
#def SA_JSON_KIND_NULL = 0
|
|
3
|
+
#def SA_JSON_KIND_BOOL = 1
|
|
4
|
+
#def SA_JSON_KIND_INTEGER = 2
|
|
5
|
+
#def SA_JSON_KIND_FLOAT = 3
|
|
6
|
+
#def SA_JSON_KIND_NUMBER_STRING = 4
|
|
7
|
+
#def SA_JSON_KIND_STRING = 5
|
|
8
|
+
#def SA_JSON_KIND_ARRAY = 6
|
|
9
|
+
#def SA_JSON_KIND_OBJECT = 7
|
|
10
|
+
#def SA_JSON_TOKEN_INVALID = 4294967295
|
|
11
|
+
#def SA_JSON_TOKEN_OBJECT_BEGIN = 0
|
|
12
|
+
#def SA_JSON_TOKEN_OBJECT_END = 1
|
|
13
|
+
#def SA_JSON_TOKEN_ARRAY_BEGIN = 2
|
|
14
|
+
#def SA_JSON_TOKEN_ARRAY_END = 3
|
|
15
|
+
#def SA_JSON_TOKEN_TRUE = 4
|
|
16
|
+
#def SA_JSON_TOKEN_FALSE = 5
|
|
17
|
+
#def SA_JSON_TOKEN_NULL = 6
|
|
18
|
+
#def SA_JSON_TOKEN_NUMBER = 7
|
|
19
|
+
#def SA_JSON_TOKEN_PARTIAL_NUMBER = 8
|
|
20
|
+
#def SA_JSON_TOKEN_STRING = 9
|
|
21
|
+
#def SA_JSON_TOKEN_PARTIAL_STRING = 10
|
|
22
|
+
#def SA_JSON_TOKEN_PARTIAL_STRING_ESCAPED_1 = 11
|
|
23
|
+
#def SA_JSON_TOKEN_PARTIAL_STRING_ESCAPED_2 = 12
|
|
24
|
+
#def SA_JSON_TOKEN_PARTIAL_STRING_ESCAPED_3 = 13
|
|
25
|
+
#def SA_JSON_TOKEN_PARTIAL_STRING_ESCAPED_4 = 14
|
|
26
|
+
#def SA_JSON_TOKEN_END_OF_DOCUMENT = 15
|
|
27
|
+
#def SA_JSON_TOKEN_ALLOCATED_NUMBER = 16
|
|
28
|
+
#def SA_JSON_TOKEN_ALLOCATED_STRING = 17
|
|
29
|
+
#def SA_JSON_WHITESPACE_MINIFIED = 0
|
|
30
|
+
#def SA_JSON_WHITESPACE_INDENT_1 = 1
|
|
31
|
+
#def SA_JSON_WHITESPACE_INDENT_2 = 2
|
|
32
|
+
#def SA_JSON_WHITESPACE_INDENT_3 = 3
|
|
33
|
+
#def SA_JSON_WHITESPACE_INDENT_4 = 4
|
|
34
|
+
#def SA_JSON_WHITESPACE_INDENT_8 = 5
|
|
35
|
+
#def SA_JSON_WHITESPACE_INDENT_TAB = 6
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "json.sa"
|
|
File without changes
|