@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
package/sa_std/env.sa
ADDED
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
@import "core/slice.sal"
|
|
2
|
+
@import "env.sai"
|
|
3
|
+
|
|
4
|
+
[MACRO] ENV_GET %out_buf, %key_slice
|
|
5
|
+
__env_get_key_ptr_%out_buf = load %key_slice+Slice_ptr as ptr
|
|
6
|
+
__env_get_key_len_%out_buf = load %key_slice+Slice_len as u64
|
|
7
|
+
EXPAND ENV_GET_PTR %out_buf, __env_get_key_ptr_%out_buf, __env_get_key_len_%out_buf
|
|
8
|
+
!__env_get_key_len_%out_buf
|
|
9
|
+
!__env_get_key_ptr_%out_buf
|
|
10
|
+
[END_MACRO]
|
|
11
|
+
|
|
12
|
+
[MACRO] ENV_GET_PTR %out_buf, %key_ptr, %key_len
|
|
13
|
+
%out_buf = call @sa_env_get(%key_ptr, %key_len)
|
|
14
|
+
[END_MACRO]
|
|
15
|
+
|
|
16
|
+
[MACRO] ENV_CURRENT_DIR %out_buf
|
|
17
|
+
%out_buf = call @sa_env_current_dir()
|
|
18
|
+
[END_MACRO]
|
|
19
|
+
|
|
20
|
+
[MACRO] ENV_SET_CURRENT_DIR %out_status, %path_slice
|
|
21
|
+
__env_set_cwd_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
22
|
+
__env_set_cwd_len_%out_status = load %path_slice+Slice_len as u64
|
|
23
|
+
%out_status = call @sa_env_set_current_dir(__env_set_cwd_ptr_%out_status, __env_set_cwd_len_%out_status)
|
|
24
|
+
!__env_set_cwd_len_%out_status
|
|
25
|
+
!__env_set_cwd_ptr_%out_status
|
|
26
|
+
[END_MACRO]
|
|
27
|
+
|
|
28
|
+
[MACRO] ENV_TEMP_DIR %out_buf
|
|
29
|
+
%out_buf = call @sa_env_temp_dir()
|
|
30
|
+
[END_MACRO]
|
|
31
|
+
|
|
32
|
+
[MACRO] ENV_CURRENT_EXE %out_buf
|
|
33
|
+
%out_buf = call @sa_env_current_exe()
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] ENV_TRY_HOME_DIR %out_ok, %out_buf
|
|
37
|
+
%out_buf = call @sa_env_home_dir()
|
|
38
|
+
%out_ok = ne %out_buf, 0
|
|
39
|
+
[END_MACRO]
|
|
40
|
+
|
|
41
|
+
[MACRO] ENV_ARGS_JSON %out_buf
|
|
42
|
+
%out_buf = call @sa_env_args_json()
|
|
43
|
+
[END_MACRO]
|
|
44
|
+
|
|
45
|
+
[MACRO] ENV_VARS_JSON %out_buf
|
|
46
|
+
%out_buf = call @sa_env_vars_json()
|
|
47
|
+
[END_MACRO]
|
|
48
|
+
|
|
49
|
+
[MACRO] ENV_SPLIT_PATHS_JSON %out_buf, %path_list_slice
|
|
50
|
+
__env_split_paths_ptr_%out_buf = load %path_list_slice+Slice_ptr as ptr
|
|
51
|
+
__env_split_paths_len_%out_buf = load %path_list_slice+Slice_len as u64
|
|
52
|
+
EXPAND ENV_SPLIT_PATHS_JSON_PTR %out_buf, __env_split_paths_ptr_%out_buf, __env_split_paths_len_%out_buf
|
|
53
|
+
!__env_split_paths_len_%out_buf
|
|
54
|
+
!__env_split_paths_ptr_%out_buf
|
|
55
|
+
[END_MACRO]
|
|
56
|
+
|
|
57
|
+
[MACRO] ENV_SPLIT_PATHS_JSON_PTR %out_buf, %path_list_ptr, %path_list_len
|
|
58
|
+
%out_buf = call @sa_env_split_paths_json(%path_list_ptr, %path_list_len)
|
|
59
|
+
[END_MACRO]
|
|
60
|
+
|
|
61
|
+
[MACRO] ENV_JOIN_PATHS_JSON %out_buf, %paths_json_slice
|
|
62
|
+
__env_join_paths_ptr_%out_buf = load %paths_json_slice+Slice_ptr as ptr
|
|
63
|
+
__env_join_paths_len_%out_buf = load %paths_json_slice+Slice_len as u64
|
|
64
|
+
EXPAND ENV_JOIN_PATHS_JSON_PTR %out_buf, __env_join_paths_ptr_%out_buf, __env_join_paths_len_%out_buf
|
|
65
|
+
!__env_join_paths_len_%out_buf
|
|
66
|
+
!__env_join_paths_ptr_%out_buf
|
|
67
|
+
[END_MACRO]
|
|
68
|
+
|
|
69
|
+
[MACRO] ENV_JOIN_PATHS_JSON_PTR %out_buf, %paths_json_ptr, %paths_json_len
|
|
70
|
+
%out_buf = call @sa_env_join_paths_json(%paths_json_ptr, %paths_json_len)
|
|
71
|
+
[END_MACRO]
|
|
72
|
+
|
|
73
|
+
[MACRO] ENV_XDG_DATA_HOME_DIR %out_buf
|
|
74
|
+
%out_buf = call @sa_env_xdg_data_home_dir()
|
|
75
|
+
[END_MACRO]
|
|
76
|
+
|
|
77
|
+
[MACRO] ENV_XDG_CONFIG_HOME_DIR %out_buf
|
|
78
|
+
%out_buf = call @sa_env_xdg_config_home_dir()
|
|
79
|
+
[END_MACRO]
|
|
80
|
+
|
|
81
|
+
[MACRO] ENV_XDG_STATE_HOME_DIR %out_buf
|
|
82
|
+
%out_buf = call @sa_env_xdg_state_home_dir()
|
|
83
|
+
[END_MACRO]
|
|
84
|
+
|
|
85
|
+
[MACRO] ENV_XDG_CACHE_HOME_DIR %out_buf
|
|
86
|
+
%out_buf = call @sa_env_xdg_cache_home_dir()
|
|
87
|
+
[END_MACRO]
|
|
88
|
+
|
|
89
|
+
[MACRO] ENV_XDG_DATA_DIRS %out_buf
|
|
90
|
+
%out_buf = call @sa_env_xdg_data_dirs()
|
|
91
|
+
[END_MACRO]
|
|
92
|
+
|
|
93
|
+
[MACRO] ENV_XDG_CONFIG_DIRS %out_buf
|
|
94
|
+
%out_buf = call @sa_env_xdg_config_dirs()
|
|
95
|
+
[END_MACRO]
|
|
96
|
+
|
|
97
|
+
[MACRO] ENV_TRY_GET %out_ok, %out_buf, %key_slice
|
|
98
|
+
__env_try_get_key_ptr_%out_ok = load %key_slice+Slice_ptr as ptr
|
|
99
|
+
__env_try_get_key_len_%out_ok = load %key_slice+Slice_len as u64
|
|
100
|
+
EXPAND ENV_TRY_GET_PTR %out_ok, %out_buf, __env_try_get_key_ptr_%out_ok, __env_try_get_key_len_%out_ok
|
|
101
|
+
!__env_try_get_key_len_%out_ok
|
|
102
|
+
!__env_try_get_key_ptr_%out_ok
|
|
103
|
+
[END_MACRO]
|
|
104
|
+
|
|
105
|
+
[MACRO] ENV_TRY_GET_PTR %out_ok, %out_buf, %key_ptr, %key_len
|
|
106
|
+
__env_try_get_status_%out_ok = call @sa_env_has(%key_ptr, %key_len)
|
|
107
|
+
__env_try_get_exists_%out_ok = eq __env_try_get_status_%out_ok, 0
|
|
108
|
+
br __env_try_get_exists_%out_ok -> L_ENV_TRY_GET_HIT_%out_ok, L_ENV_TRY_GET_MISS_%out_ok
|
|
109
|
+
|
|
110
|
+
L_ENV_TRY_GET_HIT_%out_ok:
|
|
111
|
+
%out_buf = call @sa_env_get(%key_ptr, %key_len)
|
|
112
|
+
%out_ok = add 0, 1
|
|
113
|
+
!__env_try_get_exists_%out_ok
|
|
114
|
+
!__env_try_get_status_%out_ok
|
|
115
|
+
jmp L_ENV_TRY_GET_END_%out_ok
|
|
116
|
+
|
|
117
|
+
L_ENV_TRY_GET_MISS_%out_ok:
|
|
118
|
+
%out_buf = add 0, 0
|
|
119
|
+
%out_ok = add 0, 0
|
|
120
|
+
!__env_try_get_exists_%out_ok
|
|
121
|
+
!__env_try_get_status_%out_ok
|
|
122
|
+
|
|
123
|
+
L_ENV_TRY_GET_END_%out_ok:
|
|
124
|
+
[END_MACRO]
|
|
125
|
+
|
|
126
|
+
[MACRO] ENV_HAS %out_flag, %key_slice
|
|
127
|
+
__env_has_key_ptr_%out_flag = load %key_slice+Slice_ptr as ptr
|
|
128
|
+
__env_has_key_len_%out_flag = load %key_slice+Slice_len as u64
|
|
129
|
+
EXPAND ENV_HAS_PTR %out_flag, __env_has_key_ptr_%out_flag, __env_has_key_len_%out_flag
|
|
130
|
+
!__env_has_key_len_%out_flag
|
|
131
|
+
!__env_has_key_ptr_%out_flag
|
|
132
|
+
[END_MACRO]
|
|
133
|
+
|
|
134
|
+
[MACRO] ENV_HAS_PTR %out_status, %key_ptr, %key_len
|
|
135
|
+
%out_status = call @sa_env_has(%key_ptr, %key_len)
|
|
136
|
+
[END_MACRO]
|
|
137
|
+
|
|
138
|
+
[MACRO] ENV_SET_VAR %out_status, %key_slice, %value_slice
|
|
139
|
+
__env_set_key_ptr_%out_status = load %key_slice+Slice_ptr as ptr
|
|
140
|
+
__env_set_key_len_%out_status = load %key_slice+Slice_len as u64
|
|
141
|
+
__env_set_value_ptr_%out_status = load %value_slice+Slice_ptr as ptr
|
|
142
|
+
__env_set_value_len_%out_status = load %value_slice+Slice_len as u64
|
|
143
|
+
EXPAND ENV_SET_VAR_PTR %out_status, __env_set_key_ptr_%out_status, __env_set_key_len_%out_status, __env_set_value_ptr_%out_status, __env_set_value_len_%out_status
|
|
144
|
+
!__env_set_value_len_%out_status
|
|
145
|
+
!__env_set_value_ptr_%out_status
|
|
146
|
+
!__env_set_key_len_%out_status
|
|
147
|
+
!__env_set_key_ptr_%out_status
|
|
148
|
+
[END_MACRO]
|
|
149
|
+
|
|
150
|
+
[MACRO] ENV_SET_VAR_PTR %out_status, %key_ptr, %key_len, %value_ptr, %value_len
|
|
151
|
+
%out_status = call @sa_env_set_var(%key_ptr, %key_len, %value_ptr, %value_len)
|
|
152
|
+
[END_MACRO]
|
|
153
|
+
|
|
154
|
+
[MACRO] ENV_REMOVE_VAR %out_status, %key_slice
|
|
155
|
+
__env_remove_key_ptr_%out_status = load %key_slice+Slice_ptr as ptr
|
|
156
|
+
__env_remove_key_len_%out_status = load %key_slice+Slice_len as u64
|
|
157
|
+
EXPAND ENV_REMOVE_VAR_PTR %out_status, __env_remove_key_ptr_%out_status, __env_remove_key_len_%out_status
|
|
158
|
+
!__env_remove_key_len_%out_status
|
|
159
|
+
!__env_remove_key_ptr_%out_status
|
|
160
|
+
[END_MACRO]
|
|
161
|
+
|
|
162
|
+
[MACRO] ENV_REMOVE_VAR_PTR %out_status, %key_ptr, %key_len
|
|
163
|
+
%out_status = call @sa_env_remove_var(%key_ptr, %key_len)
|
|
164
|
+
[END_MACRO]
|
|
165
|
+
|
|
166
|
+
[MACRO] ENV_STATUS_IS_OK %out_bool, %status
|
|
167
|
+
%out_bool = eq %status, 0
|
|
168
|
+
[END_MACRO]
|
|
169
|
+
|
|
170
|
+
[MACRO] ENV_EXISTS %out_bool, %key_slice
|
|
171
|
+
__env_exists_key_ptr_%out_bool = load %key_slice+Slice_ptr as ptr
|
|
172
|
+
__env_exists_key_len_%out_bool = load %key_slice+Slice_len as u64
|
|
173
|
+
EXPAND ENV_EXISTS_PTR %out_bool, __env_exists_key_ptr_%out_bool, __env_exists_key_len_%out_bool
|
|
174
|
+
!__env_exists_key_len_%out_bool
|
|
175
|
+
!__env_exists_key_ptr_%out_bool
|
|
176
|
+
[END_MACRO]
|
|
177
|
+
|
|
178
|
+
[MACRO] ENV_EXISTS_PTR %out_bool, %key_ptr, %key_len
|
|
179
|
+
__env_exists_status_%out_bool = call @sa_env_has(%key_ptr, %key_len)
|
|
180
|
+
%out_bool = eq __env_exists_status_%out_bool, 0
|
|
181
|
+
!__env_exists_status_%out_bool
|
|
182
|
+
[END_MACRO]
|
|
183
|
+
|
|
184
|
+
[MACRO] ENV_BUFFER_DATA %out_ptr, %buffer
|
|
185
|
+
%out_ptr = call @sa_env_buffer_data(%buffer)
|
|
186
|
+
[END_MACRO]
|
|
187
|
+
|
|
188
|
+
[MACRO] ENV_BUFFER_LEN %out_len, %buffer
|
|
189
|
+
%out_len = call @sa_env_buffer_len(%buffer)
|
|
190
|
+
[END_MACRO]
|
|
191
|
+
|
|
192
|
+
[MACRO] ENV_BUFFER_AS_SLICE %out_slice, %buffer
|
|
193
|
+
__env_slice_ptr_%out_slice = call @sa_env_buffer_data(%buffer)
|
|
194
|
+
__env_slice_len_%out_slice = call @sa_env_buffer_len(%buffer)
|
|
195
|
+
store %out_slice+Slice_ptr, __env_slice_ptr_%out_slice as ptr
|
|
196
|
+
store %out_slice+Slice_len, __env_slice_len_%out_slice as u64
|
|
197
|
+
!__env_slice_len_%out_slice
|
|
198
|
+
!__env_slice_ptr_%out_slice
|
|
199
|
+
[END_MACRO]
|
|
200
|
+
|
|
201
|
+
[MACRO] ENV_GET_PARTS %out_buffer, %out_ptr, %out_len, %key_slice
|
|
202
|
+
__env_parts_key_ptr_%out_buffer = load %key_slice+Slice_ptr as ptr
|
|
203
|
+
__env_parts_key_len_%out_buffer = load %key_slice+Slice_len as u64
|
|
204
|
+
EXPAND ENV_GET_PARTS_PTR %out_buffer, %out_ptr, %out_len, __env_parts_key_ptr_%out_buffer, __env_parts_key_len_%out_buffer
|
|
205
|
+
!__env_parts_key_len_%out_buffer
|
|
206
|
+
!__env_parts_key_ptr_%out_buffer
|
|
207
|
+
[END_MACRO]
|
|
208
|
+
|
|
209
|
+
[MACRO] ENV_GET_PARTS_PTR %out_buffer, %out_ptr, %out_len, %key_ptr, %key_len
|
|
210
|
+
EXPAND ENV_GET_PTR %out_buffer, %key_ptr, %key_len
|
|
211
|
+
%out_ptr = call @sa_env_buffer_data(%out_buffer)
|
|
212
|
+
%out_len = call @sa_env_buffer_len(%out_buffer)
|
|
213
|
+
[END_MACRO]
|
|
214
|
+
|
|
215
|
+
[MACRO] ENV_GET_SLICE %out_buffer, %out_slice, %key_slice
|
|
216
|
+
__env_get_slice_key_ptr_%out_buffer = load %key_slice+Slice_ptr as ptr
|
|
217
|
+
__env_get_slice_key_len_%out_buffer = load %key_slice+Slice_len as u64
|
|
218
|
+
EXPAND ENV_GET_SLICE_PTR %out_buffer, %out_slice, __env_get_slice_key_ptr_%out_buffer, __env_get_slice_key_len_%out_buffer
|
|
219
|
+
!__env_get_slice_key_len_%out_buffer
|
|
220
|
+
!__env_get_slice_key_ptr_%out_buffer
|
|
221
|
+
[END_MACRO]
|
|
222
|
+
|
|
223
|
+
[MACRO] ENV_GET_SLICE_PTR %out_buffer, %out_slice, %key_ptr, %key_len
|
|
224
|
+
EXPAND ENV_GET_PTR %out_buffer, %key_ptr, %key_len
|
|
225
|
+
EXPAND ENV_BUFFER_AS_SLICE %out_slice, %out_buffer
|
|
226
|
+
[END_MACRO]
|
|
227
|
+
|
|
228
|
+
[MACRO] ENV_TRY_GET_SLICE %out_ok, %out_buffer, %out_slice, %key_slice
|
|
229
|
+
__env_try_slice_key_ptr_%out_ok = load %key_slice+Slice_ptr as ptr
|
|
230
|
+
__env_try_slice_key_len_%out_ok = load %key_slice+Slice_len as u64
|
|
231
|
+
EXPAND ENV_TRY_GET_SLICE_PTR %out_ok, %out_buffer, %out_slice, __env_try_slice_key_ptr_%out_ok, __env_try_slice_key_len_%out_ok
|
|
232
|
+
!__env_try_slice_key_len_%out_ok
|
|
233
|
+
!__env_try_slice_key_ptr_%out_ok
|
|
234
|
+
[END_MACRO]
|
|
235
|
+
|
|
236
|
+
[MACRO] ENV_TRY_GET_SLICE_PTR %out_ok, %out_buffer, %out_slice, %key_ptr, %key_len
|
|
237
|
+
__env_try_slice_status_%out_ok = call @sa_env_has(%key_ptr, %key_len)
|
|
238
|
+
__env_try_slice_exists_%out_ok = eq __env_try_slice_status_%out_ok, 0
|
|
239
|
+
br __env_try_slice_exists_%out_ok -> L_ENV_TRY_GET_SLICE_HIT_%out_ok, L_ENV_TRY_GET_SLICE_MISS_%out_ok
|
|
240
|
+
|
|
241
|
+
L_ENV_TRY_GET_SLICE_HIT_%out_ok:
|
|
242
|
+
%out_buffer = call @sa_env_get(%key_ptr, %key_len)
|
|
243
|
+
EXPAND ENV_BUFFER_AS_SLICE %out_slice, %out_buffer
|
|
244
|
+
%out_ok = add 0, 1
|
|
245
|
+
!__env_try_slice_exists_%out_ok
|
|
246
|
+
!__env_try_slice_status_%out_ok
|
|
247
|
+
jmp L_ENV_TRY_GET_SLICE_END_%out_ok
|
|
248
|
+
|
|
249
|
+
L_ENV_TRY_GET_SLICE_MISS_%out_ok:
|
|
250
|
+
%out_buffer = add 0, 0
|
|
251
|
+
store %out_slice+Slice_ptr, 0 as ptr
|
|
252
|
+
store %out_slice+Slice_len, 0 as u64
|
|
253
|
+
%out_ok = add 0, 0
|
|
254
|
+
!__env_try_slice_exists_%out_ok
|
|
255
|
+
!__env_try_slice_status_%out_ok
|
|
256
|
+
|
|
257
|
+
L_ENV_TRY_GET_SLICE_END_%out_ok:
|
|
258
|
+
[END_MACRO]
|
|
259
|
+
|
|
260
|
+
[MACRO] ENV_BUFFER_FREE %out_ok, %buffer
|
|
261
|
+
%out_ok = call @sa_env_buffer_free(^%buffer)
|
|
262
|
+
[END_MACRO]
|
|
263
|
+
|
|
264
|
+
// Rust-named aliases over the existing current-process env facade.
|
|
265
|
+
|
|
266
|
+
[MACRO] ENV_VAR %out_buf, %key_slice
|
|
267
|
+
EXPAND ENV_GET %out_buf, %key_slice
|
|
268
|
+
[END_MACRO]
|
|
269
|
+
|
|
270
|
+
[MACRO] ENV_VAR_OS %out_ok, %out_buf, %key_slice
|
|
271
|
+
EXPAND ENV_TRY_GET %out_ok, %out_buf, %key_slice
|
|
272
|
+
[END_MACRO]
|
|
273
|
+
|
|
274
|
+
[MACRO] ENV_ARGS %out_buf
|
|
275
|
+
EXPAND ENV_ARGS_JSON %out_buf
|
|
276
|
+
[END_MACRO]
|
|
277
|
+
|
|
278
|
+
[MACRO] ENV_VARS %out_buf
|
|
279
|
+
EXPAND ENV_VARS_JSON %out_buf
|
|
280
|
+
[END_MACRO]
|
|
281
|
+
|
|
282
|
+
// Rust/std naming aliases for current working directory and home queries.
|
|
283
|
+
[MACRO] ENV_CWD_GET %out_buf
|
|
284
|
+
EXPAND ENV_CURRENT_DIR %out_buf
|
|
285
|
+
[END_MACRO]
|
|
286
|
+
|
|
287
|
+
[MACRO] ENV_CWD_SET %out_status, %path_slice
|
|
288
|
+
EXPAND ENV_SET_CURRENT_DIR %out_status, %path_slice
|
|
289
|
+
[END_MACRO]
|
|
290
|
+
|
|
291
|
+
[MACRO] ENV_HOME %out_buf
|
|
292
|
+
EXPAND ENV_TRY_HOME_DIR __env_home_ok_%out_buf, %out_buf
|
|
293
|
+
!__env_home_ok_%out_buf
|
|
294
|
+
[END_MACRO]
|
|
295
|
+
|
|
296
|
+
[MACRO] ENV_RUST_ARGS %out_buf
|
|
297
|
+
EXPAND ENV_ARGS %out_buf
|
|
298
|
+
[END_MACRO]
|
|
299
|
+
|
|
300
|
+
[MACRO] ENV_RUST_VARS %out_buf
|
|
301
|
+
EXPAND ENV_VARS %out_buf
|
|
302
|
+
[END_MACRO]
|
|
303
|
+
[MACRO] ENV_SPLIT_PATHS %out_buf, %path_list_slice
|
|
304
|
+
EXPAND ENV_SPLIT_PATHS_JSON %out_buf, %path_list_slice
|
|
305
|
+
[END_MACRO]
|
|
306
|
+
|
|
307
|
+
[MACRO] ENV_JOIN_PATHS %out_buf, %paths_json_slice
|
|
308
|
+
EXPAND ENV_JOIN_PATHS_JSON %out_buf, %paths_json_slice
|
|
309
|
+
[END_MACRO]
|
|
310
|
+
|
|
311
|
+
[MACRO] ENV_HOME_DIR %out_ok, %out_buf
|
|
312
|
+
EXPAND ENV_TRY_HOME_DIR %out_ok, %out_buf
|
|
313
|
+
[END_MACRO]
|
|
314
|
+
|
|
315
|
+
// Rust-named Os-style aliases over the existing JSON/buffer process env facade.
|
|
316
|
+
// These intentionally return the same owned env buffers as ENV_ARGS/ENV_VARS rather
|
|
317
|
+
// than true OsString iterators.
|
|
318
|
+
|
|
319
|
+
[MACRO] ENV_ARGS_OS %out_buf
|
|
320
|
+
EXPAND ENV_ARGS_JSON %out_buf
|
|
321
|
+
[END_MACRO]
|
|
322
|
+
|
|
323
|
+
[MACRO] ENV_VARS_OS %out_buf
|
|
324
|
+
EXPAND ENV_VARS_JSON %out_buf
|
|
325
|
+
[END_MACRO]
|
|
326
|
+
|
|
327
|
+
[MACRO] ENV_SPLIT_PATHS_OS %out_buf, %path_list_slice
|
|
328
|
+
EXPAND ENV_SPLIT_PATHS_JSON %out_buf, %path_list_slice
|
|
329
|
+
[END_MACRO]
|
|
330
|
+
|
|
331
|
+
[MACRO] ENV_JOIN_PATHS_OS %out_buf, %paths_json_slice
|
|
332
|
+
EXPAND ENV_JOIN_PATHS_JSON %out_buf, %paths_json_slice
|
|
333
|
+
[END_MACRO]
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
// Extra rust-named aliases for common env path queries.
|
|
337
|
+
|
|
338
|
+
[MACRO] ENV_TEMP_DIR_OS %out_buf
|
|
339
|
+
EXPAND ENV_TEMP_DIR %out_buf
|
|
340
|
+
[END_MACRO]
|
|
341
|
+
|
|
342
|
+
[MACRO] ENV_CURRENT_EXE_OS %out_buf
|
|
343
|
+
EXPAND ENV_CURRENT_EXE %out_buf
|
|
344
|
+
[END_MACRO]
|
|
345
|
+
|
|
346
|
+
[MACRO] ENV_CURRENT_DIR_OS %out_buf
|
|
347
|
+
EXPAND ENV_CURRENT_DIR %out_buf
|
|
348
|
+
[END_MACRO]
|
|
349
|
+
|
|
350
|
+
[MACRO] ENV_SET_CURRENT_DIR_OS %out_status, %path_slice
|
|
351
|
+
EXPAND ENV_SET_CURRENT_DIR %out_status, %path_slice
|
|
352
|
+
[END_MACRO]
|
|
353
|
+
|
|
354
|
+
[MACRO] ENV_SET_VAR_OS %out_status, %key_slice, %value_slice
|
|
355
|
+
EXPAND ENV_SET_VAR %out_status, %key_slice, %value_slice
|
|
356
|
+
[END_MACRO]
|
|
357
|
+
|
|
358
|
+
[MACRO] ENV_REMOVE_VAR_OS %out_status, %key_slice
|
|
359
|
+
EXPAND ENV_REMOVE_VAR %out_status, %key_slice
|
|
360
|
+
[END_MACRO]
|
|
361
|
+
|
|
362
|
+
[MACRO] ENV_HOME_DIR_OS %out_ok, %out_buf
|
|
363
|
+
EXPAND ENV_HOME_DIR %out_ok, %out_buf
|
|
364
|
+
[END_MACRO]
|
|
365
|
+
|
|
366
|
+
// Os-style aliases over existing XDG directory/buffer helpers.
|
|
367
|
+
|
|
368
|
+
[MACRO] ENV_XDG_DATA_HOME_DIR_OS %out_buf
|
|
369
|
+
EXPAND ENV_XDG_DATA_HOME_DIR %out_buf
|
|
370
|
+
[END_MACRO]
|
|
371
|
+
|
|
372
|
+
[MACRO] ENV_XDG_CONFIG_HOME_DIR_OS %out_buf
|
|
373
|
+
EXPAND ENV_XDG_CONFIG_HOME_DIR %out_buf
|
|
374
|
+
[END_MACRO]
|
|
375
|
+
|
|
376
|
+
[MACRO] ENV_XDG_STATE_HOME_DIR_OS %out_buf
|
|
377
|
+
EXPAND ENV_XDG_STATE_HOME_DIR %out_buf
|
|
378
|
+
[END_MACRO]
|
|
379
|
+
|
|
380
|
+
[MACRO] ENV_XDG_CACHE_HOME_DIR_OS %out_buf
|
|
381
|
+
EXPAND ENV_XDG_CACHE_HOME_DIR %out_buf
|
|
382
|
+
[END_MACRO]
|
|
383
|
+
|
|
384
|
+
[MACRO] ENV_XDG_DATA_DIRS_OS %out_buf
|
|
385
|
+
EXPAND ENV_XDG_DATA_DIRS %out_buf
|
|
386
|
+
[END_MACRO]
|
|
387
|
+
|
|
388
|
+
[MACRO] ENV_XDG_CONFIG_DIRS_OS %out_buf
|
|
389
|
+
EXPAND ENV_XDG_CONFIG_DIRS %out_buf
|
|
390
|
+
[END_MACRO]
|
package/sa_std/env.sai
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SA-facing contracts for environment variable helpers.
|
|
2
|
+
// Env values are copied into owned buffer handles and must be freed explicitly.
|
|
3
|
+
@extern sa_env_get(key: ptr, key_len: u64) -> u64
|
|
4
|
+
@extern sa_env_has(key: ptr, key_len: u64) -> i32
|
|
5
|
+
@extern sa_env_set_var(key: ptr, key_len: u64, value: ptr, value_len: u64) -> i32
|
|
6
|
+
@extern sa_env_remove_var(key: ptr, key_len: u64) -> i32
|
|
7
|
+
@extern sa_env_current_dir() -> u64
|
|
8
|
+
@extern sa_env_set_current_dir(path: ptr, path_len: u64) -> i32
|
|
9
|
+
@extern sa_env_temp_dir() -> u64
|
|
10
|
+
@extern sa_env_current_exe() -> u64
|
|
11
|
+
@extern sa_env_home_dir() -> u64
|
|
12
|
+
@extern sa_env_args_json() -> u64
|
|
13
|
+
@extern sa_env_vars_json() -> u64
|
|
14
|
+
@extern sa_env_split_paths_json(path_list: ptr, path_list_len: u64) -> u64
|
|
15
|
+
@extern sa_env_join_paths_json(paths_json: ptr, paths_json_len: u64) -> u64
|
|
16
|
+
@extern sa_env_xdg_data_home_dir() -> u64
|
|
17
|
+
@extern sa_env_xdg_config_home_dir() -> u64
|
|
18
|
+
@extern sa_env_xdg_state_home_dir() -> u64
|
|
19
|
+
@extern sa_env_xdg_cache_home_dir() -> u64
|
|
20
|
+
@extern sa_env_xdg_data_dirs() -> u64
|
|
21
|
+
@extern sa_env_xdg_config_dirs() -> u64
|
|
22
|
+
|
|
23
|
+
@extern sa_env_buffer_data(buffer: u64) -> &ptr
|
|
24
|
+
@extern sa_env_buffer_len(buffer: u64) -> u64
|
|
25
|
+
@extern sa_env_buffer_free(^buffer: u64) -> i32
|
package/sa_std/error.sa
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
@import "error.sal"
|
|
2
|
+
@import "any.sal"
|
|
3
|
+
@import "core/slice.sal"
|
|
4
|
+
|
|
5
|
+
[MACRO] ERROR_TYPE_ID_GENERIC %type_id
|
|
6
|
+
store %type_id+TypeId_lo, ERROR_TYPE_GENERIC_LO as u64
|
|
7
|
+
store %type_id+TypeId_hi, ERROR_TYPE_ID_HI as u64
|
|
8
|
+
[END_MACRO]
|
|
9
|
+
|
|
10
|
+
[MACRO] ERROR_TYPE_ID_IO %type_id
|
|
11
|
+
store %type_id+TypeId_lo, ERROR_TYPE_IO_LO as u64
|
|
12
|
+
store %type_id+TypeId_hi, ERROR_TYPE_ID_HI as u64
|
|
13
|
+
[END_MACRO]
|
|
14
|
+
|
|
15
|
+
[MACRO] ERROR_TYPE_ID_PARSE %type_id
|
|
16
|
+
store %type_id+TypeId_lo, ERROR_TYPE_PARSE_LO as u64
|
|
17
|
+
store %type_id+TypeId_hi, ERROR_TYPE_ID_HI as u64
|
|
18
|
+
[END_MACRO]
|
|
19
|
+
|
|
20
|
+
[MACRO] ERROR_TYPE_ID_UTF8 %type_id
|
|
21
|
+
store %type_id+TypeId_lo, ERROR_TYPE_UTF8_LO as u64
|
|
22
|
+
store %type_id+TypeId_hi, ERROR_TYPE_ID_HI as u64
|
|
23
|
+
[END_MACRO]
|
|
24
|
+
|
|
25
|
+
[MACRO] ERROR_TYPE_ID_FMT %type_id
|
|
26
|
+
store %type_id+TypeId_lo, ERROR_TYPE_FMT_LO as u64
|
|
27
|
+
store %type_id+TypeId_hi, ERROR_TYPE_ID_HI as u64
|
|
28
|
+
[END_MACRO]
|
|
29
|
+
|
|
30
|
+
[MACRO] ERROR_REF_NEW %error_ref, %type_id, %code, %msg_ptr, %msg_len, %source_ptr
|
|
31
|
+
__error_new_type_lo_%error_ref = load %type_id+TypeId_lo as u64
|
|
32
|
+
__error_new_type_hi_%error_ref = load %type_id+TypeId_hi as u64
|
|
33
|
+
store %error_ref+ErrorRef_type_lo, __error_new_type_lo_%error_ref as u64
|
|
34
|
+
store %error_ref+ErrorRef_type_hi, __error_new_type_hi_%error_ref as u64
|
|
35
|
+
store %error_ref+ErrorRef_code, %code as u64
|
|
36
|
+
store %error_ref+ErrorRef_msg_ptr, %msg_ptr as ptr
|
|
37
|
+
store %error_ref+ErrorRef_msg_len, %msg_len as u64
|
|
38
|
+
store %error_ref+ErrorRef_source, %source_ptr as ptr
|
|
39
|
+
!__error_new_type_hi_%error_ref
|
|
40
|
+
!__error_new_type_lo_%error_ref
|
|
41
|
+
[END_MACRO]
|
|
42
|
+
|
|
43
|
+
[MACRO] ERROR_REF_STATIC %error_ref, %type_lo, %code, %msg_ptr, %msg_len
|
|
44
|
+
store %error_ref+ErrorRef_type_lo, %type_lo as u64
|
|
45
|
+
store %error_ref+ErrorRef_type_hi, ERROR_TYPE_ID_HI as u64
|
|
46
|
+
store %error_ref+ErrorRef_code, %code as u64
|
|
47
|
+
store %error_ref+ErrorRef_msg_ptr, %msg_ptr as ptr
|
|
48
|
+
store %error_ref+ErrorRef_msg_len, %msg_len as u64
|
|
49
|
+
store %error_ref+ErrorRef_source, 0 as ptr
|
|
50
|
+
[END_MACRO]
|
|
51
|
+
|
|
52
|
+
[MACRO] ERROR_REF_STATIC_WITH_SOURCE %error_ref, %type_lo, %code, %msg_ptr, %msg_len, %source_ptr
|
|
53
|
+
store %error_ref+ErrorRef_type_lo, %type_lo as u64
|
|
54
|
+
store %error_ref+ErrorRef_type_hi, ERROR_TYPE_ID_HI as u64
|
|
55
|
+
store %error_ref+ErrorRef_code, %code as u64
|
|
56
|
+
store %error_ref+ErrorRef_msg_ptr, %msg_ptr as ptr
|
|
57
|
+
store %error_ref+ErrorRef_msg_len, %msg_len as u64
|
|
58
|
+
store %error_ref+ErrorRef_source, %source_ptr as ptr
|
|
59
|
+
[END_MACRO]
|
|
60
|
+
|
|
61
|
+
[MACRO] ERROR_REF_TYPE_ID %type_id, %error_ref
|
|
62
|
+
__error_type_lo_%type_id = load %error_ref+ErrorRef_type_lo as u64
|
|
63
|
+
__error_type_hi_%type_id = load %error_ref+ErrorRef_type_hi as u64
|
|
64
|
+
store %type_id+TypeId_lo, __error_type_lo_%type_id as u64
|
|
65
|
+
store %type_id+TypeId_hi, __error_type_hi_%type_id as u64
|
|
66
|
+
!__error_type_hi_%type_id
|
|
67
|
+
!__error_type_lo_%type_id
|
|
68
|
+
[END_MACRO]
|
|
69
|
+
|
|
70
|
+
[MACRO] ERROR_REF_CODE %out_code, %error_ref
|
|
71
|
+
%out_code = load %error_ref+ErrorRef_code as u64
|
|
72
|
+
[END_MACRO]
|
|
73
|
+
|
|
74
|
+
[MACRO] ERROR_REF_MESSAGE %out_slice, %error_ref
|
|
75
|
+
__error_msg_ptr_%out_slice = load %error_ref+ErrorRef_msg_ptr as ptr
|
|
76
|
+
__error_msg_len_%out_slice = load %error_ref+ErrorRef_msg_len as u64
|
|
77
|
+
store %out_slice+Slice_ptr, __error_msg_ptr_%out_slice as ptr
|
|
78
|
+
store %out_slice+Slice_len, __error_msg_len_%out_slice as u64
|
|
79
|
+
!__error_msg_len_%out_slice
|
|
80
|
+
!__error_msg_ptr_%out_slice
|
|
81
|
+
[END_MACRO]
|
|
82
|
+
|
|
83
|
+
[MACRO] ERROR_REF_MESSAGE_PTR %out_ptr, %error_ref
|
|
84
|
+
%out_ptr = load %error_ref+ErrorRef_msg_ptr as ptr
|
|
85
|
+
[END_MACRO]
|
|
86
|
+
|
|
87
|
+
[MACRO] ERROR_REF_MESSAGE_LEN %out_len, %error_ref
|
|
88
|
+
%out_len = load %error_ref+ErrorRef_msg_len as u64
|
|
89
|
+
[END_MACRO]
|
|
90
|
+
|
|
91
|
+
[MACRO] ERROR_REF_SOURCE %out_has, %out_source, %error_ref
|
|
92
|
+
%out_source = load %error_ref+ErrorRef_source as ptr
|
|
93
|
+
%out_has = ne %out_source, 0
|
|
94
|
+
[END_MACRO]
|
|
95
|
+
|
|
96
|
+
[MACRO] ERROR_REF_HAS_SOURCE %out_bool, %error_ref
|
|
97
|
+
__error_source_%out_bool = load %error_ref+ErrorRef_source as ptr
|
|
98
|
+
%out_bool = ne __error_source_%out_bool, 0
|
|
99
|
+
!__error_source_%out_bool
|
|
100
|
+
[END_MACRO]
|
|
101
|
+
|
|
102
|
+
[MACRO] ERROR_REF_IS %out_bool, %error_ref, %type_id
|
|
103
|
+
__error_is_lo_%out_bool = load %error_ref+ErrorRef_type_lo as u64
|
|
104
|
+
__error_is_hi_%out_bool = load %error_ref+ErrorRef_type_hi as u64
|
|
105
|
+
__error_is_expected_lo_%out_bool = load %type_id+TypeId_lo as u64
|
|
106
|
+
__error_is_expected_hi_%out_bool = load %type_id+TypeId_hi as u64
|
|
107
|
+
__error_is_lo_eq_%out_bool = eq __error_is_lo_%out_bool, __error_is_expected_lo_%out_bool
|
|
108
|
+
__error_is_hi_eq_%out_bool = eq __error_is_hi_%out_bool, __error_is_expected_hi_%out_bool
|
|
109
|
+
%out_bool = and __error_is_lo_eq_%out_bool, __error_is_hi_eq_%out_bool
|
|
110
|
+
!__error_is_hi_eq_%out_bool
|
|
111
|
+
!__error_is_lo_eq_%out_bool
|
|
112
|
+
!__error_is_expected_hi_%out_bool
|
|
113
|
+
!__error_is_expected_lo_%out_bool
|
|
114
|
+
!__error_is_hi_%out_bool
|
|
115
|
+
!__error_is_lo_%out_bool
|
|
116
|
+
[END_MACRO]
|
|
117
|
+
|
|
118
|
+
[MACRO] ERROR_REF_DOWNCAST_PTR %out_ok, %out_ptr, %error_ref, %type_id
|
|
119
|
+
EXPAND ERROR_REF_IS __error_downcast_ok_%out_ok, %error_ref, %type_id
|
|
120
|
+
br __error_downcast_ok_%out_ok -> L_ERROR_DOWNCAST_HIT_%out_ok, L_ERROR_DOWNCAST_MISS_%out_ok
|
|
121
|
+
L_ERROR_DOWNCAST_HIT_%out_ok:
|
|
122
|
+
%out_ptr = & %error_ref
|
|
123
|
+
%out_ok = add 0, 1
|
|
124
|
+
!__error_downcast_ok_%out_ok
|
|
125
|
+
jmp L_ERROR_DOWNCAST_END_%out_ok
|
|
126
|
+
L_ERROR_DOWNCAST_MISS_%out_ok:
|
|
127
|
+
%out_ptr = 0 as ptr
|
|
128
|
+
%out_ok = add 0, 0
|
|
129
|
+
!__error_downcast_ok_%out_ok
|
|
130
|
+
L_ERROR_DOWNCAST_END_%out_ok:
|
|
131
|
+
[END_MACRO]
|
|
132
|
+
|
|
133
|
+
[MACRO] ERROR_REF_CODE_EQ %out_bool, %error_ref, %code
|
|
134
|
+
__error_code_%out_bool = load %error_ref+ErrorRef_code as u64
|
|
135
|
+
%out_bool = eq __error_code_%out_bool, %code
|
|
136
|
+
!__error_code_%out_bool
|
|
137
|
+
[END_MACRO]
|
|
138
|
+
|
|
139
|
+
[MACRO] ERROR_REF_IS_NOT_FOUND %out_bool, %error_ref
|
|
140
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_NOT_FOUND
|
|
141
|
+
[END_MACRO]
|
|
142
|
+
|
|
143
|
+
[MACRO] ERROR_REF_IS_NONE %out_bool, %error_ref
|
|
144
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_NONE
|
|
145
|
+
[END_MACRO]
|
|
146
|
+
|
|
147
|
+
[MACRO] ERROR_REF_IS_OTHER %out_bool, %error_ref
|
|
148
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_OTHER
|
|
149
|
+
[END_MACRO]
|
|
150
|
+
|
|
151
|
+
[MACRO] ERROR_REF_IS_UNSUPPORTED %out_bool, %error_ref
|
|
152
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_UNSUPPORTED
|
|
153
|
+
[END_MACRO]
|
|
154
|
+
|
|
155
|
+
[MACRO] ERROR_REF_IS_UNEXPECTED_EOF %out_bool, %error_ref
|
|
156
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_UNEXPECTED_EOF
|
|
157
|
+
[END_MACRO]
|
|
158
|
+
|
|
159
|
+
[MACRO] ERROR_REF_IS_PERMISSION_DENIED %out_bool, %error_ref
|
|
160
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_PERMISSION_DENIED
|
|
161
|
+
[END_MACRO]
|
|
162
|
+
|
|
163
|
+
[MACRO] ERROR_REF_IS_INVALID_INPUT %out_bool, %error_ref
|
|
164
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_INVALID_INPUT
|
|
165
|
+
[END_MACRO]
|
|
166
|
+
|
|
167
|
+
[MACRO] ERROR_REF_IS_INVALID_DATA %out_bool, %error_ref
|
|
168
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_INVALID_DATA
|
|
169
|
+
[END_MACRO]
|
|
170
|
+
|
|
171
|
+
[MACRO] ERROR_REF_IS_TIMED_OUT %out_bool, %error_ref
|
|
172
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_TIMED_OUT
|
|
173
|
+
[END_MACRO]
|
|
174
|
+
|
|
175
|
+
[MACRO] ERROR_REF_IS_INTERRUPTED %out_bool, %error_ref
|
|
176
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_INTERRUPTED
|
|
177
|
+
[END_MACRO]
|
|
178
|
+
|
|
179
|
+
[MACRO] ERROR_REF_IS_CONNECTION_REFUSED %out_bool, %error_ref
|
|
180
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_CONNECTION_REFUSED
|
|
181
|
+
[END_MACRO]
|
|
182
|
+
|
|
183
|
+
[MACRO] ERROR_REF_IS_CONNECTION_RESET %out_bool, %error_ref
|
|
184
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_CONNECTION_RESET
|
|
185
|
+
[END_MACRO]
|
|
186
|
+
|
|
187
|
+
[MACRO] ERROR_REF_IS_CONNECTION_ABORTED %out_bool, %error_ref
|
|
188
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_CONNECTION_ABORTED
|
|
189
|
+
[END_MACRO]
|
|
190
|
+
|
|
191
|
+
[MACRO] ERROR_REF_IS_NOT_CONNECTED %out_bool, %error_ref
|
|
192
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_NOT_CONNECTED
|
|
193
|
+
[END_MACRO]
|
|
194
|
+
|
|
195
|
+
[MACRO] ERROR_REF_IS_ADDR_IN_USE %out_bool, %error_ref
|
|
196
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_ADDR_IN_USE
|
|
197
|
+
[END_MACRO]
|
|
198
|
+
|
|
199
|
+
[MACRO] ERROR_REF_IS_ADDR_NOT_AVAILABLE %out_bool, %error_ref
|
|
200
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_ADDR_NOT_AVAILABLE
|
|
201
|
+
[END_MACRO]
|
|
202
|
+
|
|
203
|
+
[MACRO] ERROR_REF_IS_BROKEN_PIPE %out_bool, %error_ref
|
|
204
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_BROKEN_PIPE
|
|
205
|
+
[END_MACRO]
|
|
206
|
+
|
|
207
|
+
[MACRO] ERROR_REF_IS_ALREADY_EXISTS %out_bool, %error_ref
|
|
208
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_ALREADY_EXISTS
|
|
209
|
+
[END_MACRO]
|
|
210
|
+
|
|
211
|
+
[MACRO] ERROR_REF_IS_OUT_OF_MEMORY %out_bool, %error_ref
|
|
212
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_OUT_OF_MEMORY
|
|
213
|
+
[END_MACRO]
|
|
214
|
+
|
|
215
|
+
[MACRO] ERROR_REF_IS_NETWORK_UNREACHABLE %out_bool, %error_ref
|
|
216
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_NETWORK_UNREACHABLE
|
|
217
|
+
[END_MACRO]
|
|
218
|
+
|
|
219
|
+
[MACRO] ERROR_REF_IS_HOST_UNREACHABLE %out_bool, %error_ref
|
|
220
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_HOST_UNREACHABLE
|
|
221
|
+
[END_MACRO]
|
|
222
|
+
|
|
223
|
+
[MACRO] ERROR_REF_IS_IS_A_DIRECTORY %out_bool, %error_ref
|
|
224
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_IS_A_DIRECTORY
|
|
225
|
+
[END_MACRO]
|
|
226
|
+
|
|
227
|
+
[MACRO] ERROR_REF_IS_DIRECTORY_NOT_EMPTY %out_bool, %error_ref
|
|
228
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_DIRECTORY_NOT_EMPTY
|
|
229
|
+
[END_MACRO]
|
|
230
|
+
|
|
231
|
+
[MACRO] ERROR_REF_IS_READ_ONLY_FILESYSTEM %out_bool, %error_ref
|
|
232
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_READ_ONLY_FILESYSTEM
|
|
233
|
+
[END_MACRO]
|
|
234
|
+
|
|
235
|
+
[MACRO] ERROR_REF_IS_RESOURCE_BUSY %out_bool, %error_ref
|
|
236
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_RESOURCE_BUSY
|
|
237
|
+
[END_MACRO]
|
|
238
|
+
|
|
239
|
+
[MACRO] ERROR_REF_IS_ARGUMENT_LIST_TOO_LONG %out_bool, %error_ref
|
|
240
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_ARGUMENT_LIST_TOO_LONG
|
|
241
|
+
[END_MACRO]
|
|
242
|
+
|
|
243
|
+
[MACRO] ERROR_REF_IS_NAME_TOO_LONG %out_bool, %error_ref
|
|
244
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_NAME_TOO_LONG
|
|
245
|
+
[END_MACRO]
|
|
246
|
+
|
|
247
|
+
[MACRO] ERROR_REF_IS_TOO_MANY_LINKS %out_bool, %error_ref
|
|
248
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_TOO_MANY_LINKS
|
|
249
|
+
[END_MACRO]
|
|
250
|
+
|
|
251
|
+
[MACRO] ERROR_REF_IS_STORAGE_FULL %out_bool, %error_ref
|
|
252
|
+
EXPAND ERROR_REF_CODE_EQ %out_bool, %error_ref, ERROR_CODE_STORAGE_FULL
|
|
253
|
+
[END_MACRO]
|