@salang/sa 0.1.2 → 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 +19 -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
package/sa_std/path.sal
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@import "core/slice.sal"
|
|
2
|
+
|
|
3
|
+
#def Path_SIZE = Slice_SIZE
|
|
4
|
+
#def Path_ptr = Slice_ptr
|
|
5
|
+
#def Path_len = Slice_len
|
|
6
|
+
|
|
7
|
+
#def PathBuf_SIZE = Slice_SIZE
|
|
8
|
+
#def PathBuf_ptr = Slice_ptr
|
|
9
|
+
#def PathBuf_cap = Slice_len
|
|
10
|
+
|
|
11
|
+
#def PATH_MAIN_SEPARATOR_UNIX = 47
|
|
12
|
+
#def PATH_MAIN_SEPARATOR = 47
|
package/sa_std/pin.sa
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
@import "pin.sal"
|
|
2
|
+
|
|
3
|
+
[MACRO] PIN_NEW %pin_ptr, %target_ptr
|
|
4
|
+
store %pin_ptr+Pin_ptr, %target_ptr as ptr
|
|
5
|
+
[END_MACRO]
|
|
6
|
+
|
|
7
|
+
[MACRO] PIN_NEW_UNCHECKED %pin_ptr, %target_ptr
|
|
8
|
+
store %pin_ptr+Pin_ptr, %target_ptr as ptr
|
|
9
|
+
[END_MACRO]
|
|
10
|
+
|
|
11
|
+
[MACRO] PIN_MUT_NEW %pin_ptr, %target_ptr
|
|
12
|
+
store %pin_ptr+PinMut_ptr, %target_ptr as ptr
|
|
13
|
+
[END_MACRO]
|
|
14
|
+
|
|
15
|
+
[MACRO] PIN_MUT_NEW_UNCHECKED %pin_ptr, %target_ptr
|
|
16
|
+
store %pin_ptr+PinMut_ptr, %target_ptr as ptr
|
|
17
|
+
[END_MACRO]
|
|
18
|
+
|
|
19
|
+
[MACRO] PIN_GET_REF %out_ptr, %pin_ptr
|
|
20
|
+
%out_ptr = load %pin_ptr+Pin_ptr as ptr
|
|
21
|
+
[END_MACRO]
|
|
22
|
+
|
|
23
|
+
[MACRO] PIN_MUT_GET_REF %out_ptr, %pin_ptr
|
|
24
|
+
%out_ptr = load %pin_ptr+PinMut_ptr as ptr
|
|
25
|
+
[END_MACRO]
|
|
26
|
+
|
|
27
|
+
[MACRO] PIN_MUT_GET_MUT %out_ptr, %pin_ptr
|
|
28
|
+
%out_ptr = load %pin_ptr+PinMut_ptr as ptr
|
|
29
|
+
[END_MACRO]
|
|
30
|
+
|
|
31
|
+
[MACRO] PIN_MUT_GET_UNCHECKED_MUT %out_ptr, %pin_ptr
|
|
32
|
+
%out_ptr = load %pin_ptr+PinMut_ptr as ptr
|
|
33
|
+
[END_MACRO]
|
|
34
|
+
|
|
35
|
+
[MACRO] PIN_AS_REF %out_pin_ptr, %pin_ptr
|
|
36
|
+
__pin_ref_ptr_%out_pin_ptr = load %pin_ptr+Pin_ptr as ptr
|
|
37
|
+
store %out_pin_ptr+Pin_ptr, __pin_ref_ptr_%out_pin_ptr as ptr
|
|
38
|
+
!__pin_ref_ptr_%out_pin_ptr
|
|
39
|
+
[END_MACRO]
|
|
40
|
+
|
|
41
|
+
[MACRO] PIN_MUT_AS_REF %out_pin_ptr, %pin_ptr
|
|
42
|
+
__pin_mut_ref_ptr_%out_pin_ptr = load %pin_ptr+PinMut_ptr as ptr
|
|
43
|
+
store %out_pin_ptr+Pin_ptr, __pin_mut_ref_ptr_%out_pin_ptr as ptr
|
|
44
|
+
!__pin_mut_ref_ptr_%out_pin_ptr
|
|
45
|
+
[END_MACRO]
|
|
46
|
+
|
|
47
|
+
[MACRO] PIN_MUT_AS_MUT %out_pin_ptr, %pin_ptr
|
|
48
|
+
__pin_mut_ptr_%out_pin_ptr = load %pin_ptr+PinMut_ptr as ptr
|
|
49
|
+
store %out_pin_ptr+PinMut_ptr, __pin_mut_ptr_%out_pin_ptr as ptr
|
|
50
|
+
!__pin_mut_ptr_%out_pin_ptr
|
|
51
|
+
[END_MACRO]
|
|
52
|
+
|
|
53
|
+
[MACRO] PIN_MUT_INTO_REF %out_pin_ptr, %pin_ptr
|
|
54
|
+
EXPAND PIN_MUT_AS_REF %out_pin_ptr, %pin_ptr
|
|
55
|
+
[END_MACRO]
|
|
56
|
+
|
|
57
|
+
[MACRO] PIN_INTO_INNER_UNCHECKED %out_ptr, %pin_ptr
|
|
58
|
+
%out_ptr = load %pin_ptr+Pin_ptr as ptr
|
|
59
|
+
[END_MACRO]
|
|
60
|
+
|
|
61
|
+
[MACRO] PIN_MUT_INTO_INNER_UNCHECKED %out_ptr, %pin_ptr
|
|
62
|
+
%out_ptr = load %pin_ptr+PinMut_ptr as ptr
|
|
63
|
+
[END_MACRO]
|
|
64
|
+
|
|
65
|
+
[MACRO] PIN_PTR_EQ %out_bool, %left_pin, %right_pin
|
|
66
|
+
__pin_left_%out_bool = load %left_pin+Pin_ptr as ptr
|
|
67
|
+
__pin_right_%out_bool = load %right_pin+Pin_ptr as ptr
|
|
68
|
+
%out_bool = eq __pin_left_%out_bool, __pin_right_%out_bool
|
|
69
|
+
!__pin_right_%out_bool
|
|
70
|
+
!__pin_left_%out_bool
|
|
71
|
+
[END_MACRO]
|
|
72
|
+
|
|
73
|
+
[MACRO] PIN_MUT_PTR_EQ %out_bool, %left_pin, %right_pin
|
|
74
|
+
__pin_mut_left_%out_bool = load %left_pin+PinMut_ptr as ptr
|
|
75
|
+
__pin_mut_right_%out_bool = load %right_pin+PinMut_ptr as ptr
|
|
76
|
+
%out_bool = eq __pin_mut_left_%out_bool, __pin_mut_right_%out_bool
|
|
77
|
+
!__pin_mut_right_%out_bool
|
|
78
|
+
!__pin_mut_left_%out_bool
|
|
79
|
+
[END_MACRO]
|
package/sa_std/pin.sal
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Plugin async adapter macros.
|
|
2
|
+
//
|
|
3
|
+
// A plugin operation is polled by the concrete adapter and exposed as a
|
|
4
|
+
// PollResult<u64>: pending while the plugin reports would_block/not-ready,
|
|
5
|
+
// ready-ok with the owned result handle, or ready-err with the plugin status.
|
|
6
|
+
// This keeps HTTP, process, DB-worker, and future plugin adapters on one ABI.
|
|
7
|
+
@import "plugin_async.sal"
|
|
8
|
+
@import "core/future.sa"
|
|
9
|
+
|
|
10
|
+
[MACRO] PLUGIN_ASYNC_OP_NEW %out_op, %handle, %deadline_ms
|
|
11
|
+
%out_op = alloc PluginAsyncOp_SIZE
|
|
12
|
+
store %out_op+PluginAsyncOp_handle, %handle as ptr
|
|
13
|
+
store %out_op+PluginAsyncOp_state, PluginAsync_PENDING as u64
|
|
14
|
+
store %out_op+PluginAsyncOp_status, PluginAsync_STATUS_OK as u64
|
|
15
|
+
store %out_op+PluginAsyncOp_value, 0 as ptr
|
|
16
|
+
store %out_op+PluginAsyncOp_error, 0 as u64
|
|
17
|
+
store %out_op+PluginAsyncOp_deadline_ms, %deadline_ms as u64
|
|
18
|
+
store %out_op+PluginAsyncOp_cancelled, 0 as u64
|
|
19
|
+
store %out_op+PluginAsyncOp_owned, 1 as u64
|
|
20
|
+
[END_MACRO]
|
|
21
|
+
|
|
22
|
+
[MACRO] PLUGIN_ASYNC_OP_STATE %out_state, %op
|
|
23
|
+
%out_state = load %op+PluginAsyncOp_state as u64
|
|
24
|
+
[END_MACRO]
|
|
25
|
+
|
|
26
|
+
[MACRO] PLUGIN_ASYNC_OP_HANDLE %out_handle, %op
|
|
27
|
+
%out_handle = load %op+PluginAsyncOp_handle as ptr
|
|
28
|
+
[END_MACRO]
|
|
29
|
+
|
|
30
|
+
[MACRO] PLUGIN_ASYNC_OP_SET_READY %op, %value
|
|
31
|
+
store %op+PluginAsyncOp_state, PluginAsync_READY as u64
|
|
32
|
+
store %op+PluginAsyncOp_status, PluginAsync_STATUS_OK as u64
|
|
33
|
+
store %op+PluginAsyncOp_value, %value as ptr
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] PLUGIN_ASYNC_OP_SET_ERROR %op, %status
|
|
37
|
+
store %op+PluginAsyncOp_state, PluginAsync_FAILED as u64
|
|
38
|
+
store %op+PluginAsyncOp_status, %status as u64
|
|
39
|
+
store %op+PluginAsyncOp_error, %status as u64
|
|
40
|
+
[END_MACRO]
|
|
41
|
+
|
|
42
|
+
[MACRO] PLUGIN_ASYNC_OP_CANCEL %op
|
|
43
|
+
store %op+PluginAsyncOp_state, PluginAsync_CANCELLED as u64
|
|
44
|
+
store %op+PluginAsyncOp_status, PluginAsync_STATUS_CLOSED as u64
|
|
45
|
+
store %op+PluginAsyncOp_error, PluginAsync_ERROR_CANCELLED as u64
|
|
46
|
+
store %op+PluginAsyncOp_cancelled, 1 as u64
|
|
47
|
+
[END_MACRO]
|
|
48
|
+
|
|
49
|
+
[MACRO] PLUGIN_ASYNC_OP_IS_DONE %out_done, %op
|
|
50
|
+
__plugin_async_state_%out_done = load %op+PluginAsyncOp_state as u64
|
|
51
|
+
__plugin_async_ready_%out_done = eq __plugin_async_state_%out_done, PluginAsync_READY
|
|
52
|
+
__plugin_async_failed_%out_done = eq __plugin_async_state_%out_done, PluginAsync_FAILED
|
|
53
|
+
__plugin_async_cancelled_%out_done = eq __plugin_async_state_%out_done, PluginAsync_CANCELLED
|
|
54
|
+
__plugin_async_terminal_%out_done = or __plugin_async_ready_%out_done, __plugin_async_failed_%out_done
|
|
55
|
+
%out_done = or __plugin_async_terminal_%out_done, __plugin_async_cancelled_%out_done
|
|
56
|
+
!__plugin_async_cancelled_%out_done
|
|
57
|
+
!__plugin_async_terminal_%out_done
|
|
58
|
+
!__plugin_async_failed_%out_done
|
|
59
|
+
!__plugin_async_ready_%out_done
|
|
60
|
+
!__plugin_async_state_%out_done
|
|
61
|
+
[END_MACRO]
|
|
62
|
+
|
|
63
|
+
// Convert a plugin poll status plus its ready bit into PollResult<u64>.
|
|
64
|
+
// `%value` must be the result handle when ready; it is ignored for errors.
|
|
65
|
+
[MACRO] PLUGIN_ASYNC_POLL_RESULT %out_poll, %status, %ready, %value
|
|
66
|
+
__plugin_async_poll_is_would_block_%out_poll = eq %status, PluginAsync_STATUS_WOULD_BLOCK
|
|
67
|
+
__plugin_async_poll_is_ready_%out_poll = ne %ready, 0
|
|
68
|
+
__plugin_async_poll_is_ok_%out_poll = eq %status, PluginAsync_STATUS_OK
|
|
69
|
+
__plugin_async_poll_is_not_ready_%out_poll = eq %ready, 0
|
|
70
|
+
__plugin_async_poll_ok_pending_%out_poll = and __plugin_async_poll_is_ok_%out_poll, __plugin_async_poll_is_not_ready_%out_poll
|
|
71
|
+
__plugin_async_poll_is_pending_%out_poll = or __plugin_async_poll_is_would_block_%out_poll, __plugin_async_poll_ok_pending_%out_poll
|
|
72
|
+
br __plugin_async_poll_is_pending_%out_poll -> L_PLUGIN_ASYNC_POLL_PENDING_%out_poll, L_PLUGIN_ASYNC_POLL_STATUS_%out_poll
|
|
73
|
+
L_PLUGIN_ASYNC_POLL_PENDING_%out_poll:
|
|
74
|
+
EXPAND POLL_RESULT_PENDING %out_poll
|
|
75
|
+
jmp L_PLUGIN_ASYNC_POLL_DONE_%out_poll
|
|
76
|
+
L_PLUGIN_ASYNC_POLL_STATUS_%out_poll:
|
|
77
|
+
br __plugin_async_poll_is_ok_%out_poll -> L_PLUGIN_ASYNC_POLL_READY_%out_poll, L_PLUGIN_ASYNC_POLL_ERROR_%out_poll
|
|
78
|
+
L_PLUGIN_ASYNC_POLL_READY_%out_poll:
|
|
79
|
+
EXPAND POLL_RESULT_READY_OK %out_poll, %value
|
|
80
|
+
jmp L_PLUGIN_ASYNC_POLL_DONE_%out_poll
|
|
81
|
+
L_PLUGIN_ASYNC_POLL_ERROR_%out_poll:
|
|
82
|
+
EXPAND POLL_RESULT_READY_ERR %out_poll, %status
|
|
83
|
+
L_PLUGIN_ASYNC_POLL_DONE_%out_poll:
|
|
84
|
+
!__plugin_async_poll_is_would_block_%out_poll
|
|
85
|
+
!__plugin_async_poll_is_ready_%out_poll
|
|
86
|
+
!__plugin_async_poll_is_ok_%out_poll
|
|
87
|
+
!__plugin_async_poll_is_not_ready_%out_poll
|
|
88
|
+
!__plugin_async_poll_ok_pending_%out_poll
|
|
89
|
+
!__plugin_async_poll_is_pending_%out_poll
|
|
90
|
+
[END_MACRO]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Common state for adapting plugin-owned poll handles to SA Future values.
|
|
2
|
+
// The plugin operation remains owned by the caller; this layout only tracks
|
|
3
|
+
// the Future-facing terminal state and the last plugin error/value.
|
|
4
|
+
|
|
5
|
+
#def PluginAsyncOp_SIZE = 64
|
|
6
|
+
#def PluginAsyncOp_handle = +0
|
|
7
|
+
#def PluginAsyncOp_state = +8
|
|
8
|
+
#def PluginAsyncOp_status = +16
|
|
9
|
+
#def PluginAsyncOp_value = +24
|
|
10
|
+
#def PluginAsyncOp_error = +32
|
|
11
|
+
#def PluginAsyncOp_deadline_ms = +40
|
|
12
|
+
#def PluginAsyncOp_cancelled = +48
|
|
13
|
+
#def PluginAsyncOp_owned = +56
|
|
14
|
+
|
|
15
|
+
#def PluginAsync_PENDING = 0
|
|
16
|
+
#def PluginAsync_READY = 1
|
|
17
|
+
#def PluginAsync_FAILED = 2
|
|
18
|
+
#def PluginAsync_CANCELLED = 3
|
|
19
|
+
|
|
20
|
+
#def PluginAsync_STATUS_OK = 0
|
|
21
|
+
#def PluginAsync_STATUS_WOULD_BLOCK = 1
|
|
22
|
+
#def PluginAsync_STATUS_CLOSED = 2
|
|
23
|
+
#def PluginAsync_STATUS_TIMEOUT = 3
|
|
24
|
+
#def PluginAsync_STATUS_TOO_LARGE = 4
|
|
25
|
+
#def PluginAsync_STATUS_INVALID = 5
|
|
26
|
+
#def PluginAsync_STATUS_IO_ERROR = 6
|
|
27
|
+
|
|
28
|
+
#def PluginAsync_ERROR_CANCELLED = 97
|
|
29
|
+
#def PluginAsync_ERROR_DEADLINE = 96
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// HTTP client v2 -> PollResult adapter.
|
|
2
|
+
// Import the installed `sa_http_client.sai` before using these macros.
|
|
3
|
+
@import "plugin_async.sa"
|
|
4
|
+
|
|
5
|
+
[MACRO] SA_HTTP_ASYNC_POLL_V2 %out_poll, %op, %timeout_ms
|
|
6
|
+
__sa_http_async_ready_slot_%out_poll = stack_alloc 8
|
|
7
|
+
store __sa_http_async_ready_slot_%out_poll+0, 0 as u64
|
|
8
|
+
__sa_http_async_status_%out_poll = call @sa_http_client_async_poll_v2(%op, %timeout_ms, &__sa_http_async_ready_slot_%out_poll)
|
|
9
|
+
__sa_http_async_ready_%out_poll = load __sa_http_async_ready_slot_%out_poll+0 as u64
|
|
10
|
+
__sa_http_async_resp_slot_%out_poll = stack_alloc 8
|
|
11
|
+
store __sa_http_async_resp_slot_%out_poll+0, 0 as u64
|
|
12
|
+
__sa_http_async_is_ready_%out_poll = ne __sa_http_async_ready_%out_poll, 0
|
|
13
|
+
__sa_http_async_is_ok_%out_poll = eq __sa_http_async_status_%out_poll, PluginAsync_STATUS_OK
|
|
14
|
+
__sa_http_async_can_take_%out_poll = and __sa_http_async_is_ready_%out_poll, __sa_http_async_is_ok_%out_poll
|
|
15
|
+
br __sa_http_async_can_take_%out_poll -> L_SA_HTTP_ASYNC_TAKE_%out_poll, L_SA_HTTP_ASYNC_MAP_%out_poll
|
|
16
|
+
L_SA_HTTP_ASYNC_TAKE_%out_poll:
|
|
17
|
+
__sa_http_async_take_status_%out_poll = call @sa_http_client_async_take_response_v2(%op, &__sa_http_async_resp_slot_%out_poll)
|
|
18
|
+
__sa_http_async_resp_%out_poll = load __sa_http_async_resp_slot_%out_poll+0 as ptr
|
|
19
|
+
__sa_http_async_take_ok_%out_poll = eq __sa_http_async_take_status_%out_poll, PluginAsync_STATUS_OK
|
|
20
|
+
br __sa_http_async_take_ok_%out_poll -> L_SA_HTTP_ASYNC_READY_%out_poll, L_SA_HTTP_ASYNC_TAKE_ERR_%out_poll
|
|
21
|
+
L_SA_HTTP_ASYNC_READY_%out_poll:
|
|
22
|
+
EXPAND POLL_RESULT_READY_OK %out_poll, __sa_http_async_resp_%out_poll
|
|
23
|
+
jmp L_SA_HTTP_ASYNC_DONE_%out_poll
|
|
24
|
+
L_SA_HTTP_ASYNC_TAKE_ERR_%out_poll:
|
|
25
|
+
EXPAND POLL_RESULT_READY_ERR %out_poll, __sa_http_async_take_status_%out_poll
|
|
26
|
+
jmp L_SA_HTTP_ASYNC_DONE_%out_poll
|
|
27
|
+
L_SA_HTTP_ASYNC_MAP_%out_poll:
|
|
28
|
+
EXPAND PLUGIN_ASYNC_POLL_RESULT %out_poll, __sa_http_async_status_%out_poll, __sa_http_async_ready_%out_poll, 0
|
|
29
|
+
L_SA_HTTP_ASYNC_DONE_%out_poll:
|
|
30
|
+
!__sa_http_async_take_ok_%out_poll
|
|
31
|
+
!__sa_http_async_take_status_%out_poll
|
|
32
|
+
!__sa_http_async_can_take_%out_poll
|
|
33
|
+
!__sa_http_async_is_ok_%out_poll
|
|
34
|
+
!__sa_http_async_is_ready_%out_poll
|
|
35
|
+
!__sa_http_async_resp_%out_poll
|
|
36
|
+
!__sa_http_async_ready_%out_poll
|
|
37
|
+
!__sa_http_async_status_%out_poll
|
|
38
|
+
[END_MACRO]
|
|
39
|
+
|
|
40
|
+
[MACRO] SA_HTTP_ASYNC_CANCEL_V2 %op
|
|
41
|
+
call @sa_http_client_async_cancel_v2(%op)
|
|
42
|
+
[END_MACRO]
|
|
43
|
+
|
|
44
|
+
[MACRO] SA_HTTP_ASYNC_FREE_V2 %op
|
|
45
|
+
call @sa_http_client_async_free_v2(%op)
|
|
46
|
+
[END_MACRO]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// HTTP server v2 facade.
|
|
2
|
+
// accept_v2 timeout/would_block are cooperative Pending states; a request is
|
|
3
|
+
// Ready(ptr); closed/invalid/io_error are terminal PollResult errors.
|
|
4
|
+
@import "plugin_async.sa"
|
|
5
|
+
|
|
6
|
+
[MACRO] SA_HTTP_SERVER_ACCEPT_V2 %out_poll, %server, %timeout_ms
|
|
7
|
+
__sa_http_server_req_slot_%out_poll = stack_alloc 8
|
|
8
|
+
store __sa_http_server_req_slot_%out_poll+0, 0 as u64
|
|
9
|
+
__sa_http_server_status_%out_poll = call @sa_http_server_accept_v2(%server, %timeout_ms, &__sa_http_server_req_slot_%out_poll)
|
|
10
|
+
__sa_http_server_req_%out_poll = load __sa_http_server_req_slot_%out_poll+0 as ptr
|
|
11
|
+
__sa_http_server_is_ok_%out_poll = eq __sa_http_server_status_%out_poll, PluginAsync_STATUS_OK
|
|
12
|
+
__sa_http_server_is_would_block_%out_poll = eq __sa_http_server_status_%out_poll, PluginAsync_STATUS_WOULD_BLOCK
|
|
13
|
+
__sa_http_server_is_timeout_%out_poll = eq __sa_http_server_status_%out_poll, PluginAsync_STATUS_TIMEOUT
|
|
14
|
+
__sa_http_server_is_pending_%out_poll = or __sa_http_server_is_would_block_%out_poll, __sa_http_server_is_timeout_%out_poll
|
|
15
|
+
br __sa_http_server_is_pending_%out_poll -> L_SA_HTTP_SERVER_PENDING_%out_poll, L_SA_HTTP_SERVER_STATUS_%out_poll
|
|
16
|
+
L_SA_HTTP_SERVER_PENDING_%out_poll:
|
|
17
|
+
EXPAND POLL_RESULT_PENDING %out_poll
|
|
18
|
+
jmp L_SA_HTTP_SERVER_DONE_%out_poll
|
|
19
|
+
L_SA_HTTP_SERVER_STATUS_%out_poll:
|
|
20
|
+
br __sa_http_server_is_ok_%out_poll -> L_SA_HTTP_SERVER_READY_%out_poll, L_SA_HTTP_SERVER_ERROR_%out_poll
|
|
21
|
+
L_SA_HTTP_SERVER_READY_%out_poll:
|
|
22
|
+
EXPAND POLL_RESULT_READY_OK %out_poll, __sa_http_server_req_%out_poll
|
|
23
|
+
jmp L_SA_HTTP_SERVER_DONE_%out_poll
|
|
24
|
+
L_SA_HTTP_SERVER_ERROR_%out_poll:
|
|
25
|
+
EXPAND POLL_RESULT_READY_ERR %out_poll, __sa_http_server_status_%out_poll
|
|
26
|
+
L_SA_HTTP_SERVER_DONE_%out_poll:
|
|
27
|
+
!__sa_http_server_is_pending_%out_poll
|
|
28
|
+
!__sa_http_server_is_timeout_%out_poll
|
|
29
|
+
!__sa_http_server_is_would_block_%out_poll
|
|
30
|
+
!__sa_http_server_is_ok_%out_poll
|
|
31
|
+
!__sa_http_server_req_%out_poll
|
|
32
|
+
!__sa_http_server_status_%out_poll
|
|
33
|
+
[END_MACRO]
|
|
34
|
+
|
|
35
|
+
[MACRO] SA_HTTP_SERVER_RESP_SEND_V2 %out_status, %resp, %body, %body_len, %timeout_ms
|
|
36
|
+
%out_status = call @sa_http_server_resp_send_v2(%resp, %body, %body_len, %timeout_ms)
|
|
37
|
+
[END_MACRO]
|
|
38
|
+
|
|
39
|
+
[MACRO] SA_HTTP_SERVER_STREAM_WRITE_V2 %out_status, %stream, %body, %body_len, %timeout_ms
|
|
40
|
+
%out_status = call @sa_http_server_resp_stream_write_v2(%stream, %body, %body_len, %timeout_ms)
|
|
41
|
+
[END_MACRO]
|
|
42
|
+
|
|
43
|
+
[MACRO] SA_HTTP_SERVER_STREAM_END_V2 %out_status, %stream, %timeout_ms
|
|
44
|
+
%out_status = call @sa_http_server_resp_stream_end_v2(%stream, %timeout_ms)
|
|
45
|
+
[END_MACRO]
|
|
46
|
+
|
|
47
|
+
[MACRO] SA_HTTP_SERVER_REQ_FREE_V2 %req
|
|
48
|
+
call @sa_http_server_req_free_v2(%req)
|
|
49
|
+
[END_MACRO]
|
|
50
|
+
|
|
51
|
+
[MACRO] SA_HTTP_SERVER_RESP_FREE_V2 %resp
|
|
52
|
+
call @sa_http_server_resp_free_v2(%resp)
|
|
53
|
+
[END_MACRO]
|
|
54
|
+
|
|
55
|
+
[MACRO] SA_HTTP_SERVER_STREAM_FREE_V2 %stream
|
|
56
|
+
call @sa_http_server_resp_stream_free_v2(%stream)
|
|
57
|
+
[END_MACRO]
|
|
58
|
+
|
|
59
|
+
[MACRO] SA_HTTP_SERVER_FREE_V2 %server
|
|
60
|
+
call @sa_http_server_free_v2(%server)
|
|
61
|
+
[END_MACRO]
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// Synchronous SQLite facade over sa_plugin_node/node_extra.sai.
|
|
2
|
+
//
|
|
3
|
+
// Import node_extra.sai before using these macros. The underlying ABI is
|
|
4
|
+
// synchronous; callers must serialize access or run it on a dedicated worker
|
|
5
|
+
// when used from an async service.
|
|
6
|
+
|
|
7
|
+
[MACRO] SA_SQLITE_OPEN %out_status, %out_db, %path, %path_len
|
|
8
|
+
%out_db = 0
|
|
9
|
+
__sa_sqlite_open_status_%out_db = call @sa_node_plugin_sqlite_open(%path, %path_len, &%out_db)
|
|
10
|
+
%out_status = add __sa_sqlite_open_status_%out_db, 0
|
|
11
|
+
!__sa_sqlite_open_status_%out_db
|
|
12
|
+
[END_MACRO]
|
|
13
|
+
|
|
14
|
+
[MACRO] SA_SQLITE_CLOSE %out_status, %db
|
|
15
|
+
__sa_sqlite_close_status_%db = call @sa_node_plugin_sqlite_close(%db)
|
|
16
|
+
%out_status = add __sa_sqlite_close_status_%db, 0
|
|
17
|
+
!__sa_sqlite_close_status_%db
|
|
18
|
+
[END_MACRO]
|
|
19
|
+
|
|
20
|
+
[MACRO] SA_SQLITE_EXEC %out_status, %db, %sql, %sql_len
|
|
21
|
+
__sa_sqlite_exec_status_%out_db = call @sa_node_plugin_sqlite_exec(%db, %sql, %sql_len)
|
|
22
|
+
%out_status = add __sa_sqlite_exec_status_%out_db, 0
|
|
23
|
+
!__sa_sqlite_exec_status_%out_db
|
|
24
|
+
[END_MACRO]
|
|
25
|
+
|
|
26
|
+
[MACRO] SA_SQLITE_QUERY_JSON %out_status, %out_ptr, %out_len, %db, %sql, %sql_len
|
|
27
|
+
__sa_sqlite_query_ptr_slot_%out_ptr = stack_alloc 8
|
|
28
|
+
__sa_sqlite_query_len_slot_%out_ptr = stack_alloc 8
|
|
29
|
+
store __sa_sqlite_query_ptr_slot_%out_ptr+0, 0 as u64
|
|
30
|
+
store __sa_sqlite_query_len_slot_%out_ptr+0, 0 as u64
|
|
31
|
+
__sa_sqlite_query_status_%out_ptr = call @sa_node_plugin_sqlite_query_json(%db, %sql, %sql_len, &__sa_sqlite_query_ptr_slot_%out_ptr, &__sa_sqlite_query_len_slot_%out_ptr)
|
|
32
|
+
%out_status = add __sa_sqlite_query_status_%out_ptr, 0
|
|
33
|
+
%out_ptr = load __sa_sqlite_query_ptr_slot_%out_ptr+0 as ptr
|
|
34
|
+
%out_len = load __sa_sqlite_query_len_slot_%out_ptr+0 as u64
|
|
35
|
+
!__sa_sqlite_query_status_%out_ptr
|
|
36
|
+
[END_MACRO]
|
|
37
|
+
|
|
38
|
+
[MACRO] SA_SQLITE_PREPARE %out_status, %out_stmt, %db, %sql, %sql_len
|
|
39
|
+
%out_stmt = 0
|
|
40
|
+
__sa_sqlite_prepare_status_%out_stmt = call @sa_node_plugin_sqlite_prepare(%db, %sql, %sql_len, &%out_stmt)
|
|
41
|
+
%out_status = add __sa_sqlite_prepare_status_%out_stmt, 0
|
|
42
|
+
!__sa_sqlite_prepare_status_%out_stmt
|
|
43
|
+
[END_MACRO]
|
|
44
|
+
|
|
45
|
+
[MACRO] SA_SQLITE_BIND_INT %out_status, %stmt, %index, %value
|
|
46
|
+
__sa_sqlite_bind_int_status_%stmt = call @sa_node_plugin_sqlite_bind_int(%stmt, %index, %value)
|
|
47
|
+
%out_status = add __sa_sqlite_bind_int_status_%stmt, 0
|
|
48
|
+
!__sa_sqlite_bind_int_status_%stmt
|
|
49
|
+
[END_MACRO]
|
|
50
|
+
|
|
51
|
+
[MACRO] SA_SQLITE_BIND_DOUBLE %out_status, %stmt, %index, %value
|
|
52
|
+
__sa_sqlite_bind_double_status_%stmt = call @sa_node_plugin_sqlite_bind_double(%stmt, %index, %value)
|
|
53
|
+
%out_status = add __sa_sqlite_bind_double_status_%stmt, 0
|
|
54
|
+
!__sa_sqlite_bind_double_status_%stmt
|
|
55
|
+
[END_MACRO]
|
|
56
|
+
|
|
57
|
+
[MACRO] SA_SQLITE_BIND_TEXT %out_status, %stmt, %index, %value, %value_len
|
|
58
|
+
__sa_sqlite_bind_text_status_%stmt = call @sa_node_plugin_sqlite_bind_text(%stmt, %index, %value, %value_len)
|
|
59
|
+
%out_status = add __sa_sqlite_bind_text_status_%stmt, 0
|
|
60
|
+
!__sa_sqlite_bind_text_status_%stmt
|
|
61
|
+
[END_MACRO]
|
|
62
|
+
|
|
63
|
+
[MACRO] SA_SQLITE_BIND_BLOB %out_status, %stmt, %index, %value, %value_len
|
|
64
|
+
__sa_sqlite_bind_blob_status_%stmt = call @sa_node_plugin_sqlite_bind_blob(%stmt, %index, %value, %value_len)
|
|
65
|
+
%out_status = add __sa_sqlite_bind_blob_status_%stmt, 0
|
|
66
|
+
!__sa_sqlite_bind_blob_status_%stmt
|
|
67
|
+
[END_MACRO]
|
|
68
|
+
|
|
69
|
+
[MACRO] SA_SQLITE_BIND_NULL %out_status, %stmt, %index
|
|
70
|
+
__sa_sqlite_bind_null_status_%stmt = call @sa_node_plugin_sqlite_bind_null(%stmt, %index)
|
|
71
|
+
%out_status = add __sa_sqlite_bind_null_status_%stmt, 0
|
|
72
|
+
!__sa_sqlite_bind_null_status_%stmt
|
|
73
|
+
[END_MACRO]
|
|
74
|
+
|
|
75
|
+
[MACRO] SA_SQLITE_STEP_JSON %out_status, %out_ready, %out_ptr, %out_len, %stmt
|
|
76
|
+
__sa_sqlite_step_ready_slot_%stmt = stack_alloc 8
|
|
77
|
+
__sa_sqlite_step_ptr_slot_%stmt = stack_alloc 8
|
|
78
|
+
__sa_sqlite_step_len_slot_%stmt = stack_alloc 8
|
|
79
|
+
store __sa_sqlite_step_ready_slot_%stmt+0, 0 as u64
|
|
80
|
+
store __sa_sqlite_step_ptr_slot_%stmt+0, 0 as u64
|
|
81
|
+
store __sa_sqlite_step_len_slot_%stmt+0, 0 as u64
|
|
82
|
+
__sa_sqlite_step_status_%stmt = call @sa_node_plugin_sqlite_step_json(%stmt, &__sa_sqlite_step_ready_slot_%stmt, &__sa_sqlite_step_ptr_slot_%stmt, &__sa_sqlite_step_len_slot_%stmt)
|
|
83
|
+
%out_status = add __sa_sqlite_step_status_%stmt, 0
|
|
84
|
+
%out_ready = load __sa_sqlite_step_ready_slot_%stmt+0 as u64
|
|
85
|
+
%out_ptr = load __sa_sqlite_step_ptr_slot_%stmt+0 as ptr
|
|
86
|
+
%out_len = load __sa_sqlite_step_len_slot_%stmt+0 as u64
|
|
87
|
+
!__sa_sqlite_step_status_%stmt
|
|
88
|
+
[END_MACRO]
|
|
89
|
+
|
|
90
|
+
[MACRO] SA_SQLITE_RESET %out_status, %stmt
|
|
91
|
+
__sa_sqlite_reset_status_%stmt = call @sa_node_plugin_sqlite_reset(%stmt)
|
|
92
|
+
%out_status = add __sa_sqlite_reset_status_%stmt, 0
|
|
93
|
+
!__sa_sqlite_reset_status_%stmt
|
|
94
|
+
[END_MACRO]
|
|
95
|
+
|
|
96
|
+
[MACRO] SA_SQLITE_CLEAR_BINDINGS %out_status, %stmt
|
|
97
|
+
__sa_sqlite_clear_bindings_status_%stmt = call @sa_node_plugin_sqlite_clear_bindings(%stmt)
|
|
98
|
+
%out_status = add __sa_sqlite_clear_bindings_status_%stmt, 0
|
|
99
|
+
!__sa_sqlite_clear_bindings_status_%stmt
|
|
100
|
+
[END_MACRO]
|
|
101
|
+
|
|
102
|
+
[MACRO] SA_SQLITE_FINALIZE %out_status, %stmt
|
|
103
|
+
__sa_sqlite_finalize_status_%stmt = call @sa_node_plugin_sqlite_finalize(%stmt)
|
|
104
|
+
%out_status = add __sa_sqlite_finalize_status_%stmt, 0
|
|
105
|
+
!__sa_sqlite_finalize_status_%stmt
|
|
106
|
+
[END_MACRO]
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Explicit public facade aggregation for applications and smoke tests.
|
|
2
|
+
// This is opt-in; the compiler does not inject it implicitly.
|
|
3
|
+
|
|
4
|
+
@import "core/prelude.sa"
|
|
5
|
+
@import "alloc/prelude.sa"
|
|
6
|
+
@import "collections/prelude.sa"
|
|
7
|
+
@import "encoding/prelude.sa"
|
|
8
|
+
@import "ffi/prelude.sa"
|
|
9
|
+
@import "io/prelude.sa"
|
|
10
|
+
@import "os/prelude.sa"
|
|
11
|
+
@import "sync/prelude.sa"
|
|
12
|
+
@import "text/prelude.sa"
|
|
13
|
+
|
|
14
|
+
@import "any.sa"
|
|
15
|
+
@import "array.sa"
|
|
16
|
+
@import "ascii.sa"
|
|
17
|
+
@import "binary_heap.sa"
|
|
18
|
+
@import "borrow.sa"
|
|
19
|
+
@import "btree_map.sa"
|
|
20
|
+
@import "btree_set.sa"
|
|
21
|
+
@import "char.sa"
|
|
22
|
+
@import "cmp.sa"
|
|
23
|
+
@import "convert.sa"
|
|
24
|
+
@import "cow.sa"
|
|
25
|
+
@import "cstring.sa"
|
|
26
|
+
@import "default.sa"
|
|
27
|
+
@import "env.sa"
|
|
28
|
+
@import "error.sa"
|
|
29
|
+
@import "ffi.sa"
|
|
30
|
+
@import "fmt.sa"
|
|
31
|
+
@import "fs.sa"
|
|
32
|
+
@import "future.sa"
|
|
33
|
+
@import "hash.sa"
|
|
34
|
+
@import "hashmap.sa"
|
|
35
|
+
@import "hashset.sa"
|
|
36
|
+
@import "io.sa"
|
|
37
|
+
@import "iter.sa"
|
|
38
|
+
@import "marker/prelude.sa"
|
|
39
|
+
@import "math.sa"
|
|
40
|
+
@import "mem/prelude.sa"
|
|
41
|
+
@import "net.sa"
|
|
42
|
+
@import "netx.sa"
|
|
43
|
+
@import "num/prelude.sa"
|
|
44
|
+
@import "ops.sa"
|
|
45
|
+
@import "option.sa"
|
|
46
|
+
@import "panic.sa"
|
|
47
|
+
@import "path.sa"
|
|
48
|
+
@import "pin.sa"
|
|
49
|
+
@import "process.sa"
|
|
50
|
+
@import "ptr.sa"
|
|
51
|
+
@import "result.sa"
|
|
52
|
+
@import "sort.sa"
|
|
53
|
+
@import "string.sa"
|
|
54
|
+
@import "string_format.sa"
|
|
55
|
+
@import "task.sa"
|
|
56
|
+
@import "term.sa"
|
|
57
|
+
@import "thread/prelude.sa"
|
|
58
|
+
@import "time/prelude.sa"
|
|
59
|
+
@import "vec.sa"
|
|
60
|
+
@import "vec_deque.sa"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// ABI/layout companion for the explicit public facade aggregation.
|
|
2
|
+
|
|
3
|
+
@import "alloc/prelude.sal"
|
|
4
|
+
@import "collections/prelude.sal"
|
|
5
|
+
@import "core/prelude.sal"
|
|
6
|
+
@import "encoding/prelude.sal"
|
|
7
|
+
@import "ffi/prelude.sal"
|
|
8
|
+
@import "io/prelude.sal"
|
|
9
|
+
@import "os/prelude.sal"
|
|
10
|
+
@import "sync/prelude.sal"
|
|
11
|
+
@import "text/prelude.sal"
|
|
12
|
+
|
|
13
|
+
@import "any.sal"
|
|
14
|
+
@import "array.sa"
|
|
15
|
+
@import "ascii.sal"
|
|
16
|
+
@import "binary_heap.sal"
|
|
17
|
+
@import "borrow.sal"
|
|
18
|
+
@import "btree_map.sal"
|
|
19
|
+
@import "btree_set.sal"
|
|
20
|
+
@import "char.sal"
|
|
21
|
+
@import "cmp.sal"
|
|
22
|
+
@import "convert.sal"
|
|
23
|
+
@import "cow.sal"
|
|
24
|
+
@import "cstring.sal"
|
|
25
|
+
@import "env.sai"
|
|
26
|
+
@import "error.sal"
|
|
27
|
+
@import "ffi.sal"
|
|
28
|
+
@import "fmt.sal"
|
|
29
|
+
@import "fs.sai"
|
|
30
|
+
@import "future.sal"
|
|
31
|
+
@import "hash.sal"
|
|
32
|
+
@import "hashmap.sal"
|
|
33
|
+
@import "hashset.sal"
|
|
34
|
+
@import "io.sai"
|
|
35
|
+
@import "iter.sal"
|
|
36
|
+
@import "marker/prelude.sal"
|
|
37
|
+
@import "mem/prelude.sal"
|
|
38
|
+
@import "net.sai"
|
|
39
|
+
@import "netx.sai"
|
|
40
|
+
@import "num/prelude.sal"
|
|
41
|
+
@import "ops.sal"
|
|
42
|
+
@import "option.sal"
|
|
43
|
+
@import "panic.sal"
|
|
44
|
+
@import "path.sal"
|
|
45
|
+
@import "pin.sal"
|
|
46
|
+
@import "process.sai"
|
|
47
|
+
@import "ptr.sal"
|
|
48
|
+
@import "result.sal"
|
|
49
|
+
@import "string.sal"
|
|
50
|
+
@import "task.sal"
|
|
51
|
+
@import "term.sai"
|
|
52
|
+
@import "thread/prelude.sal"
|
|
53
|
+
@import "time/prelude.sal"
|
|
54
|
+
@import "vec.sal"
|
|
55
|
+
@import "vec_deque.sal"
|