@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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@extern sa_str_is_ascii(ptr: ptr, len: u64) -> i32
|
|
2
|
+
@extern sa_str_eq_ignore_ascii_case(left: ptr, left_len: u64, right: ptr, right_len: u64) -> i32
|
|
3
|
+
@extern sa_str_trim_ascii_start_index(ptr: ptr, len: u64) -> u64
|
|
4
|
+
@extern sa_str_trim_ascii_end_len(ptr: ptr, len: u64) -> u64
|
|
5
|
+
@extern sa_str_utf8_char_count(ptr: ptr, len: u64) -> u64
|
|
6
|
+
@extern sa_str_utf8_validate(ptr: ptr, len: u64) -> i32
|
|
7
|
+
@extern sa_str_utf8_char_at(ptr: ptr, len: u64, char_index: u64, out_codepoint: ptr) -> i32
|
|
8
|
+
@extern sa_str_utf8_char_at_byte(ptr: ptr, len: u64, byte_index: u64, out_codepoint: ptr, out_len: ptr) -> i32
|
|
9
|
+
@extern sa_str_utf8_lossy_next(ptr: ptr, len: u64, byte_index: u64, out_codepoint: ptr, out_len: ptr) -> i32
|
|
10
|
+
@extern sa_str_utf8_char_range_at(ptr: ptr, len: u64, char_index: u64, out_start: ptr, out_len: ptr) -> i32
|
|
11
|
+
@extern sa_string_concat(left: ptr, left_len: u64, right: ptr, right_len: u64) -> u64
|
|
12
|
+
@extern sa_string_from_char_code(code: i32) -> u64
|
|
13
|
+
@extern sa_string_index_of(hay_ptr: ptr, hay_len: u64, ndl_ptr: ptr, ndl_len: u64, from: u64) -> i32
|
|
14
|
+
@extern sa_string_last_index_of(hay_ptr: ptr, hay_len: u64, ndl_ptr: ptr, ndl_len: u64, from: u64) -> i32
|
|
15
|
+
@extern sa_string_starts_with(hay_ptr: ptr, hay_len: u64, ndl_ptr: ptr, ndl_len: u64) -> i32
|
|
16
|
+
@extern sa_string_ends_with(hay_ptr: ptr, hay_len: u64, ndl_ptr: ptr, ndl_len: u64) -> i32
|
|
17
|
+
@extern sa_string_to_lower_ascii(ptr: ptr, len: u64) -> u64
|
|
18
|
+
@extern sa_string_to_upper_ascii(ptr: ptr, len: u64) -> u64
|
|
19
|
+
@extern sa_parse_float(ptr: ptr, len: u64) -> f64
|
|
20
|
+
@extern sa_string_repeat(ptr: ptr, len: u64, count: u64) -> u64
|
|
21
|
+
@extern sa_string_pad_start(ptr: ptr, len: u64, target_len: u64, pad_ptr: ptr, pad_len: u64) -> u64
|
|
22
|
+
@extern sa_string_pad_end(ptr: ptr, len: u64, target_len: u64, pad_ptr: ptr, pad_len: u64) -> u64
|
|
23
|
+
@extern sa_string_replace(hay_ptr: ptr, hay_len: u64, ndl_ptr: ptr, ndl_len: u64, rep_ptr: ptr, rep_len: u64, all: u64) -> u64
|
|
24
|
+
@extern sa_string_code_point_at(ptr: ptr, len: u64, idx: u64) -> i32
|
|
25
|
+
@extern sa_string_from_code_point(code: i32) -> u64
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@import "alloc/vec.sal"
|
|
2
|
+
@import "ffi.sal"
|
|
3
|
+
|
|
4
|
+
#def FromUtf8Error_SIZE = 40
|
|
5
|
+
#def FromUtf8Error_ALIGN = 8
|
|
6
|
+
#def FromUtf8Error_bytes = +0
|
|
7
|
+
#def FromUtf8Error_error = +24
|
|
8
|
+
#def FromUtf8Error_utf8_error = FromUtf8Error_error
|
|
9
|
+
|
|
10
|
+
#def FromUtf16Error_SIZE = 8
|
|
11
|
+
#def FromUtf16Error_ALIGN = 8
|
|
12
|
+
#def FromUtf16Error_kind = +0
|
|
13
|
+
#def FROM_UTF16_ERROR_LONE_SURROGATE = 0
|
|
14
|
+
#def FROM_UTF16_ERROR_ODD_BYTES = 1
|
|
15
|
+
|
|
16
|
+
#def ParseBoolError_SIZE = 0
|
|
17
|
+
#def ParseBoolError_ALIGN = 1
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
@import "fmt.sai"
|
|
2
|
+
@import "io.sai"
|
|
3
|
+
@import "vec.sa"
|
|
4
|
+
@import "core/slice.sal"
|
|
5
|
+
@import "core/slice.sa"
|
|
6
|
+
|
|
7
|
+
@const FORMAT_NEWLINE = utf8:"\n"
|
|
8
|
+
|
|
9
|
+
[MACRO] STRFMT_I64 %out_buf, %value, %base
|
|
10
|
+
%out_buf = call @sa_fmt_i64(%value, %base)
|
|
11
|
+
[END_MACRO]
|
|
12
|
+
|
|
13
|
+
[MACRO] STRFMT_U64 %out_buf, %value, %base
|
|
14
|
+
%out_buf = call @sa_fmt_u64(%value, %base)
|
|
15
|
+
[END_MACRO]
|
|
16
|
+
|
|
17
|
+
// Rust method-name alias over STRFMT_U64.
|
|
18
|
+
[MACRO] STRFMT %out_buf, %value, %base
|
|
19
|
+
EXPAND STRFMT_U64 %out_buf, %value, %base
|
|
20
|
+
[END_MACRO]
|
|
21
|
+
|
|
22
|
+
[MACRO] STRFMT_F64 %out_buf, %value, %precision
|
|
23
|
+
%out_buf = call @sa_fmt_f64(%value, %precision)
|
|
24
|
+
[END_MACRO]
|
|
25
|
+
|
|
26
|
+
[MACRO] STRFMT_BOOL %out_buf, %value
|
|
27
|
+
%out_buf = call @sa_fmt_bool(%value)
|
|
28
|
+
[END_MACRO]
|
|
29
|
+
|
|
30
|
+
[MACRO] STRFMT_BYTES %out_buf, %buf, %len
|
|
31
|
+
%out_buf = call @sa_fmt_bytes(&%buf, %len)
|
|
32
|
+
[END_MACRO]
|
|
33
|
+
|
|
34
|
+
[MACRO] STRFMT_I64_INTO %out_ok, %out_len_ptr, %value, %base, %buf, %cap
|
|
35
|
+
%out_ok = call @sa_fmt_i64_into(%value, %base, %buf, %cap, &%out_len_ptr)
|
|
36
|
+
[END_MACRO]
|
|
37
|
+
|
|
38
|
+
[MACRO] STRFMT_U64_INTO %out_ok, %out_len_ptr, %value, %base, %buf, %cap
|
|
39
|
+
%out_ok = call @sa_fmt_u64_into(%value, %base, %buf, %cap, &%out_len_ptr)
|
|
40
|
+
[END_MACRO]
|
|
41
|
+
|
|
42
|
+
[MACRO] STRFMT_F64_INTO %out_ok, %out_len_ptr, %value, %precision, %buf, %cap
|
|
43
|
+
%out_ok = call @sa_fmt_f64_into(%value, %precision, %buf, %cap, &%out_len_ptr)
|
|
44
|
+
[END_MACRO]
|
|
45
|
+
|
|
46
|
+
[MACRO] STRFMT_BOOL_INTO %out_ok, %out_len_ptr, %value, %buf, %cap
|
|
47
|
+
%out_ok = call @sa_fmt_bool_into(%value, %buf, %cap, &%out_len_ptr)
|
|
48
|
+
[END_MACRO]
|
|
49
|
+
|
|
50
|
+
[MACRO] STRFMT_BYTES_INTO %out_ok, %out_len_ptr, %src, %src_len, %buf, %cap
|
|
51
|
+
%out_ok = call @sa_fmt_bytes_into(&%src, %src_len, %buf, %cap, &%out_len_ptr)
|
|
52
|
+
[END_MACRO]
|
|
53
|
+
|
|
54
|
+
[MACRO] STRFMT_DATA %out_ptr, %buffer
|
|
55
|
+
%out_ptr = call @sa_fmt_buffer_data(%buffer)
|
|
56
|
+
[END_MACRO]
|
|
57
|
+
|
|
58
|
+
[MACRO] STRFMT_LEN %out_len, %buffer
|
|
59
|
+
%out_len = call @sa_fmt_buffer_len(%buffer)
|
|
60
|
+
[END_MACRO]
|
|
61
|
+
|
|
62
|
+
[MACRO] STRFMT_WRITE_TO %out_ok, %buffer, %writer
|
|
63
|
+
%out_ok = call @sa_fmt_buffer_write_to(%buffer, %writer)
|
|
64
|
+
[END_MACRO]
|
|
65
|
+
|
|
66
|
+
[MACRO] STRFMT_FREE %out_ok, %buffer
|
|
67
|
+
%out_ok = call @sa_fmt_buffer_free(^%buffer)
|
|
68
|
+
[END_MACRO]
|
|
69
|
+
|
|
70
|
+
[MACRO] FORMAT_BEGIN %out_string, %capacity
|
|
71
|
+
%out_string = call @sa_vec_with_capacity(%capacity, 1)
|
|
72
|
+
[END_MACRO]
|
|
73
|
+
|
|
74
|
+
[MACRO] FORMAT_PUSH_BYTES %tag, %string_reg, %src_ptr, %src_len
|
|
75
|
+
%string_reg = call @sa_vec_reserve(^%string_reg, %src_len, 1)
|
|
76
|
+
__format_view_%tag = & %string_reg
|
|
77
|
+
__format_dst_buf_%tag = load __format_view_%tag+Vec_ptr as ptr
|
|
78
|
+
__format_dst_len_%tag = load __format_view_%tag+Vec_len as u64
|
|
79
|
+
__format_dst_ptr_%tag = ptr_add __format_dst_buf_%tag, __format_dst_len_%tag
|
|
80
|
+
call @sa_mem_copy(&__format_dst_ptr_%tag, &%src_ptr, %src_len)
|
|
81
|
+
__format_next_len_%tag = add __format_dst_len_%tag, %src_len
|
|
82
|
+
store __format_view_%tag+Vec_len, __format_next_len_%tag as u64
|
|
83
|
+
!__format_next_len_%tag
|
|
84
|
+
!__format_dst_ptr_%tag
|
|
85
|
+
!__format_dst_len_%tag
|
|
86
|
+
!__format_dst_buf_%tag
|
|
87
|
+
!__format_view_%tag
|
|
88
|
+
[END_MACRO]
|
|
89
|
+
|
|
90
|
+
[MACRO] FORMAT_PUSH_SLICE %tag, %string_reg, %slice_reg
|
|
91
|
+
__format_slice_ptr_%tag = load %slice_reg+Slice_ptr as ptr
|
|
92
|
+
__format_slice_len_%tag = load %slice_reg+Slice_len as u64
|
|
93
|
+
EXPAND FORMAT_PUSH_BYTES %tag, %string_reg, __format_slice_ptr_%tag, __format_slice_len_%tag
|
|
94
|
+
!__format_slice_len_%tag
|
|
95
|
+
!__format_slice_ptr_%tag
|
|
96
|
+
[END_MACRO]
|
|
97
|
+
|
|
98
|
+
[MACRO] FORMAT_PUSH_I64 %tag, %string_reg, %value
|
|
99
|
+
EXPAND STRFMT_I64 __format_fmt_buf_%tag, %value, 10
|
|
100
|
+
EXPAND STRFMT_DATA __format_fmt_ptr_%tag, __format_fmt_buf_%tag
|
|
101
|
+
EXPAND STRFMT_LEN __format_fmt_len_%tag, __format_fmt_buf_%tag
|
|
102
|
+
EXPAND FORMAT_PUSH_BYTES %tag, %string_reg, __format_fmt_ptr_%tag, __format_fmt_len_%tag
|
|
103
|
+
EXPAND STRFMT_FREE __format_fmt_free_ok_%tag, __format_fmt_buf_%tag
|
|
104
|
+
!__format_fmt_free_ok_%tag
|
|
105
|
+
!__format_fmt_len_%tag
|
|
106
|
+
!__format_fmt_ptr_%tag
|
|
107
|
+
[END_MACRO]
|
|
108
|
+
|
|
109
|
+
[MACRO] FORMAT_PUSH_U64 %tag, %string_reg, %value
|
|
110
|
+
EXPAND STRFMT_U64 __format_fmt_buf_%tag, %value, 10
|
|
111
|
+
EXPAND STRFMT_DATA __format_fmt_ptr_%tag, __format_fmt_buf_%tag
|
|
112
|
+
EXPAND STRFMT_LEN __format_fmt_len_%tag, __format_fmt_buf_%tag
|
|
113
|
+
EXPAND FORMAT_PUSH_BYTES %tag, %string_reg, __format_fmt_ptr_%tag, __format_fmt_len_%tag
|
|
114
|
+
EXPAND STRFMT_FREE __format_fmt_free_ok_%tag, __format_fmt_buf_%tag
|
|
115
|
+
!__format_fmt_free_ok_%tag
|
|
116
|
+
!__format_fmt_len_%tag
|
|
117
|
+
!__format_fmt_ptr_%tag
|
|
118
|
+
[END_MACRO]
|
|
119
|
+
|
|
120
|
+
// Rust method-name alias over FORMAT_PUSH_U64.
|
|
121
|
+
[MACRO] FORMAT_PUSH %tag, %string_reg, %value
|
|
122
|
+
EXPAND FORMAT_PUSH_U64 %tag, %string_reg, %value
|
|
123
|
+
[END_MACRO]
|
|
124
|
+
|
|
125
|
+
[MACRO] FORMAT_PUSH_F64 %tag, %string_reg, %value, %precision
|
|
126
|
+
EXPAND STRFMT_F64 __format_fmt_buf_%tag, %value, %precision
|
|
127
|
+
EXPAND STRFMT_DATA __format_fmt_ptr_%tag, __format_fmt_buf_%tag
|
|
128
|
+
EXPAND STRFMT_LEN __format_fmt_len_%tag, __format_fmt_buf_%tag
|
|
129
|
+
EXPAND FORMAT_PUSH_BYTES %tag, %string_reg, __format_fmt_ptr_%tag, __format_fmt_len_%tag
|
|
130
|
+
EXPAND STRFMT_FREE __format_fmt_free_ok_%tag, __format_fmt_buf_%tag
|
|
131
|
+
!__format_fmt_free_ok_%tag
|
|
132
|
+
!__format_fmt_len_%tag
|
|
133
|
+
!__format_fmt_ptr_%tag
|
|
134
|
+
[END_MACRO]
|
|
135
|
+
|
|
136
|
+
[MACRO] FORMAT_PUSH_BOOL %tag, %string_reg, %value
|
|
137
|
+
EXPAND STRFMT_BOOL __format_fmt_buf_%tag, %value
|
|
138
|
+
EXPAND STRFMT_DATA __format_fmt_ptr_%tag, __format_fmt_buf_%tag
|
|
139
|
+
EXPAND STRFMT_LEN __format_fmt_len_%tag, __format_fmt_buf_%tag
|
|
140
|
+
EXPAND FORMAT_PUSH_BYTES %tag, %string_reg, __format_fmt_ptr_%tag, __format_fmt_len_%tag
|
|
141
|
+
EXPAND STRFMT_FREE __format_fmt_free_ok_%tag, __format_fmt_buf_%tag
|
|
142
|
+
!__format_fmt_free_ok_%tag
|
|
143
|
+
!__format_fmt_len_%tag
|
|
144
|
+
!__format_fmt_ptr_%tag
|
|
145
|
+
[END_MACRO]
|
|
146
|
+
|
|
147
|
+
[MACRO] FORMAT_AS_STR %out_slice, %string_reg
|
|
148
|
+
__format_as_str_view_%out_slice = & %string_reg
|
|
149
|
+
__format_as_str_ptr_%out_slice = load __format_as_str_view_%out_slice+Vec_ptr as ptr
|
|
150
|
+
__format_as_str_len_%out_slice = load __format_as_str_view_%out_slice+Vec_len as u64
|
|
151
|
+
%out_slice = alloc Slice_SIZE
|
|
152
|
+
EXPAND SLICE_NEW %out_slice, __format_as_str_ptr_%out_slice, __format_as_str_len_%out_slice
|
|
153
|
+
!__format_as_str_len_%out_slice
|
|
154
|
+
!__format_as_str_ptr_%out_slice
|
|
155
|
+
!__format_as_str_view_%out_slice
|
|
156
|
+
[END_MACRO]
|
|
157
|
+
|
|
158
|
+
[MACRO] FORMAT_FREE %string_reg
|
|
159
|
+
call @sa_vec_free(^%string_reg)
|
|
160
|
+
[END_MACRO]
|
|
161
|
+
|
|
162
|
+
// Fixed-arity formatting facades for the common Rust/std scalar surfaces.
|
|
163
|
+
[MACRO] FORMAT_U64_TO_STRING %out_buf, %value
|
|
164
|
+
EXPAND STRFMT_U64 %out_buf, %value, 10
|
|
165
|
+
[END_MACRO]
|
|
166
|
+
|
|
167
|
+
[MACRO] FORMAT_I64_TO_STRING %out_buf, %value
|
|
168
|
+
EXPAND STRFMT_I64 %out_buf, %value, 10
|
|
169
|
+
[END_MACRO]
|
|
170
|
+
|
|
171
|
+
[MACRO] FORMAT_F64_TO_STRING %out_buf, %value, %precision
|
|
172
|
+
EXPAND STRFMT_F64 %out_buf, %value, %precision
|
|
173
|
+
[END_MACRO]
|
|
174
|
+
|
|
175
|
+
[MACRO] FORMAT_BOOL_TO_STRING %out_buf, %value
|
|
176
|
+
EXPAND STRFMT_BOOL %out_buf, %value
|
|
177
|
+
[END_MACRO]
|
|
178
|
+
|
|
179
|
+
// Bare aliases default to the u64 concrete lowering, matching the existing
|
|
180
|
+
// method-name alias convention used throughout sa_std.
|
|
181
|
+
[MACRO] FORMAT_TO_STRING %out_buf, %value
|
|
182
|
+
EXPAND FORMAT_U64_TO_STRING %out_buf, %value
|
|
183
|
+
[END_MACRO]
|
|
184
|
+
|
|
185
|
+
// Concrete formatted writes. The returned status is zero on success; the
|
|
186
|
+
// writeln variants combine the value and newline write statuses.
|
|
187
|
+
[MACRO] FORMAT_WRITE_U64 %out_status, %handle, %value
|
|
188
|
+
EXPAND FORMAT_U64_TO_STRING __format_write_u64_buf_%out_status, %value
|
|
189
|
+
EXPAND STRFMT_DATA __format_write_u64_ptr_%out_status, __format_write_u64_buf_%out_status
|
|
190
|
+
EXPAND STRFMT_LEN __format_write_u64_len_%out_status, __format_write_u64_buf_%out_status
|
|
191
|
+
%out_status = call @sa_io_write_all(%handle, __format_write_u64_ptr_%out_status, __format_write_u64_len_%out_status)
|
|
192
|
+
EXPAND STRFMT_FREE __format_write_u64_free_%out_status, __format_write_u64_buf_%out_status
|
|
193
|
+
!__format_write_u64_free_%out_status
|
|
194
|
+
!__format_write_u64_len_%out_status
|
|
195
|
+
!__format_write_u64_ptr_%out_status
|
|
196
|
+
[END_MACRO]
|
|
197
|
+
|
|
198
|
+
[MACRO] FORMAT_WRITE_I64 %out_status, %handle, %value
|
|
199
|
+
EXPAND FORMAT_I64_TO_STRING __format_write_i64_buf_%out_status, %value
|
|
200
|
+
EXPAND STRFMT_DATA __format_write_i64_ptr_%out_status, __format_write_i64_buf_%out_status
|
|
201
|
+
EXPAND STRFMT_LEN __format_write_i64_len_%out_status, __format_write_i64_buf_%out_status
|
|
202
|
+
%out_status = call @sa_io_write_all(%handle, __format_write_i64_ptr_%out_status, __format_write_i64_len_%out_status)
|
|
203
|
+
EXPAND STRFMT_FREE __format_write_i64_free_%out_status, __format_write_i64_buf_%out_status
|
|
204
|
+
!__format_write_i64_free_%out_status
|
|
205
|
+
!__format_write_i64_len_%out_status
|
|
206
|
+
!__format_write_i64_ptr_%out_status
|
|
207
|
+
[END_MACRO]
|
|
208
|
+
|
|
209
|
+
[MACRO] FORMAT_WRITE_F64 %out_status, %handle, %value, %precision
|
|
210
|
+
EXPAND FORMAT_F64_TO_STRING __format_write_f64_buf_%out_status, %value, %precision
|
|
211
|
+
EXPAND STRFMT_DATA __format_write_f64_ptr_%out_status, __format_write_f64_buf_%out_status
|
|
212
|
+
EXPAND STRFMT_LEN __format_write_f64_len_%out_status, __format_write_f64_buf_%out_status
|
|
213
|
+
%out_status = call @sa_io_write_all(%handle, __format_write_f64_ptr_%out_status, __format_write_f64_len_%out_status)
|
|
214
|
+
EXPAND STRFMT_FREE __format_write_f64_free_%out_status, __format_write_f64_buf_%out_status
|
|
215
|
+
!__format_write_f64_free_%out_status
|
|
216
|
+
!__format_write_f64_len_%out_status
|
|
217
|
+
!__format_write_f64_ptr_%out_status
|
|
218
|
+
[END_MACRO]
|
|
219
|
+
|
|
220
|
+
[MACRO] FORMAT_WRITE_BOOL %out_status, %handle, %value
|
|
221
|
+
EXPAND FORMAT_BOOL_TO_STRING __format_write_bool_buf_%out_status, %value
|
|
222
|
+
EXPAND STRFMT_DATA __format_write_bool_ptr_%out_status, __format_write_bool_buf_%out_status
|
|
223
|
+
EXPAND STRFMT_LEN __format_write_bool_len_%out_status, __format_write_bool_buf_%out_status
|
|
224
|
+
%out_status = call @sa_io_write_all(%handle, __format_write_bool_ptr_%out_status, __format_write_bool_len_%out_status)
|
|
225
|
+
EXPAND STRFMT_FREE __format_write_bool_free_%out_status, __format_write_bool_buf_%out_status
|
|
226
|
+
!__format_write_bool_free_%out_status
|
|
227
|
+
!__format_write_bool_len_%out_status
|
|
228
|
+
!__format_write_bool_ptr_%out_status
|
|
229
|
+
[END_MACRO]
|
|
230
|
+
|
|
231
|
+
[MACRO] FORMAT_WRITELN_U64 %out_status, %handle, %value
|
|
232
|
+
EXPAND FORMAT_WRITE_U64 __format_writeln_u64_value_status_%out_status, %handle, %value
|
|
233
|
+
__format_writeln_u64_newline_status_%out_status = call @sa_io_write_all(%handle, &FORMAT_NEWLINE, 1)
|
|
234
|
+
%out_status = add __format_writeln_u64_value_status_%out_status, __format_writeln_u64_newline_status_%out_status
|
|
235
|
+
!__format_writeln_u64_value_status_%out_status
|
|
236
|
+
!__format_writeln_u64_newline_status_%out_status
|
|
237
|
+
[END_MACRO]
|
|
238
|
+
|
|
239
|
+
[MACRO] FORMAT_WRITELN_I64 %out_status, %handle, %value
|
|
240
|
+
EXPAND FORMAT_WRITE_I64 __format_writeln_i64_value_status_%out_status, %handle, %value
|
|
241
|
+
__format_writeln_i64_newline_status_%out_status = call @sa_io_write_all(%handle, &FORMAT_NEWLINE, 1)
|
|
242
|
+
%out_status = add __format_writeln_i64_value_status_%out_status, __format_writeln_i64_newline_status_%out_status
|
|
243
|
+
!__format_writeln_i64_value_status_%out_status
|
|
244
|
+
!__format_writeln_i64_newline_status_%out_status
|
|
245
|
+
[END_MACRO]
|
|
246
|
+
|
|
247
|
+
[MACRO] FORMAT_WRITELN_F64 %out_status, %handle, %value, %precision
|
|
248
|
+
EXPAND FORMAT_WRITE_F64 __format_writeln_f64_value_status_%out_status, %handle, %value, %precision
|
|
249
|
+
__format_writeln_f64_newline_status_%out_status = call @sa_io_write_all(%handle, &FORMAT_NEWLINE, 1)
|
|
250
|
+
%out_status = add __format_writeln_f64_value_status_%out_status, __format_writeln_f64_newline_status_%out_status
|
|
251
|
+
!__format_writeln_f64_value_status_%out_status
|
|
252
|
+
!__format_writeln_f64_newline_status_%out_status
|
|
253
|
+
[END_MACRO]
|
|
254
|
+
|
|
255
|
+
[MACRO] FORMAT_WRITELN_BOOL %out_status, %handle, %value
|
|
256
|
+
EXPAND FORMAT_WRITE_BOOL __format_writeln_bool_value_status_%out_status, %handle, %value
|
|
257
|
+
__format_writeln_bool_newline_status_%out_status = call @sa_io_write_all(%handle, &FORMAT_NEWLINE, 1)
|
|
258
|
+
%out_status = add __format_writeln_bool_value_status_%out_status, __format_writeln_bool_newline_status_%out_status
|
|
259
|
+
!__format_writeln_bool_value_status_%out_status
|
|
260
|
+
!__format_writeln_bool_newline_status_%out_status
|
|
261
|
+
[END_MACRO]
|
|
262
|
+
|
|
263
|
+
[MACRO] FORMAT_WRITE %out_status, %handle, %value
|
|
264
|
+
EXPAND FORMAT_WRITE_U64 %out_status, %handle, %value
|
|
265
|
+
[END_MACRO]
|
|
266
|
+
|
|
267
|
+
[MACRO] FORMAT_WRITELN %out_status, %handle, %value
|
|
268
|
+
EXPAND FORMAT_WRITELN_U64 %out_status, %handle, %value
|
|
269
|
+
[END_MACRO]
|