@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/char.sa
ADDED
|
@@ -0,0 +1,1309 @@
|
|
|
1
|
+
@import "char.sal"
|
|
2
|
+
@import "ascii.sa"
|
|
3
|
+
|
|
4
|
+
[MACRO] CHAR_IS_VALID_SCALAR %out_bool, %code
|
|
5
|
+
__char_in_max_%out_bool = ule %code, CHAR_MAX
|
|
6
|
+
__char_ge_sur_%out_bool = uge %code, CHAR_SURROGATE_MIN
|
|
7
|
+
__char_le_sur_%out_bool = ule %code, CHAR_SURROGATE_MAX
|
|
8
|
+
__char_is_sur_%out_bool = and __char_ge_sur_%out_bool, __char_le_sur_%out_bool
|
|
9
|
+
__char_not_sur_%out_bool = eq __char_is_sur_%out_bool, 0
|
|
10
|
+
%out_bool = and __char_in_max_%out_bool, __char_not_sur_%out_bool
|
|
11
|
+
!__char_not_sur_%out_bool
|
|
12
|
+
!__char_is_sur_%out_bool
|
|
13
|
+
!__char_le_sur_%out_bool
|
|
14
|
+
!__char_ge_sur_%out_bool
|
|
15
|
+
!__char_in_max_%out_bool
|
|
16
|
+
[END_MACRO]
|
|
17
|
+
|
|
18
|
+
[MACRO] CHAR_FROM_U32 %out_ok, %out_char, %code
|
|
19
|
+
EXPAND CHAR_IS_VALID_SCALAR __char_valid_%out_ok, %code
|
|
20
|
+
br __char_valid_%out_ok -> L_CHAR_FROM_U32_OK_%out_ok, L_CHAR_FROM_U32_ERR_%out_ok
|
|
21
|
+
|
|
22
|
+
L_CHAR_FROM_U32_OK_%out_ok:
|
|
23
|
+
%out_char = add %code, 0
|
|
24
|
+
%out_ok = add 0, 1
|
|
25
|
+
!__char_valid_%out_ok
|
|
26
|
+
jmp L_CHAR_FROM_U32_END_%out_ok
|
|
27
|
+
|
|
28
|
+
L_CHAR_FROM_U32_ERR_%out_ok:
|
|
29
|
+
%out_char = add 0, 0
|
|
30
|
+
%out_ok = add 0, 0
|
|
31
|
+
!__char_valid_%out_ok
|
|
32
|
+
|
|
33
|
+
L_CHAR_FROM_U32_END_%out_ok:
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] CHAR_FROM_U32_UNCHECKED %out_char, %code
|
|
37
|
+
%out_char = add %code, 0
|
|
38
|
+
[END_MACRO]
|
|
39
|
+
|
|
40
|
+
[MACRO] CHAR_LEN_UTF8 %out_len, %code
|
|
41
|
+
__char_one_%out_len = ule %code, CHAR_UTF8_ONE_MAX
|
|
42
|
+
br __char_one_%out_len -> L_CHAR_LEN_UTF8_ONE_%out_len, L_CHAR_LEN_UTF8_CHECK_TWO_%out_len
|
|
43
|
+
|
|
44
|
+
L_CHAR_LEN_UTF8_CHECK_TWO_%out_len:
|
|
45
|
+
__char_two_%out_len = ule %code, CHAR_UTF8_TWO_MAX
|
|
46
|
+
br __char_two_%out_len -> L_CHAR_LEN_UTF8_TWO_%out_len, L_CHAR_LEN_UTF8_CHECK_THREE_%out_len
|
|
47
|
+
|
|
48
|
+
L_CHAR_LEN_UTF8_CHECK_THREE_%out_len:
|
|
49
|
+
__char_three_%out_len = ule %code, CHAR_UTF8_THREE_MAX
|
|
50
|
+
br __char_three_%out_len -> L_CHAR_LEN_UTF8_THREE_%out_len, L_CHAR_LEN_UTF8_FOUR_%out_len
|
|
51
|
+
|
|
52
|
+
L_CHAR_LEN_UTF8_ONE_%out_len:
|
|
53
|
+
%out_len = add 0, 1
|
|
54
|
+
!__char_one_%out_len
|
|
55
|
+
jmp L_CHAR_LEN_UTF8_END_%out_len
|
|
56
|
+
|
|
57
|
+
L_CHAR_LEN_UTF8_TWO_%out_len:
|
|
58
|
+
%out_len = add 0, 2
|
|
59
|
+
!__char_two_%out_len
|
|
60
|
+
!__char_one_%out_len
|
|
61
|
+
jmp L_CHAR_LEN_UTF8_END_%out_len
|
|
62
|
+
|
|
63
|
+
L_CHAR_LEN_UTF8_THREE_%out_len:
|
|
64
|
+
%out_len = add 0, 3
|
|
65
|
+
!__char_three_%out_len
|
|
66
|
+
!__char_two_%out_len
|
|
67
|
+
!__char_one_%out_len
|
|
68
|
+
jmp L_CHAR_LEN_UTF8_END_%out_len
|
|
69
|
+
|
|
70
|
+
L_CHAR_LEN_UTF8_FOUR_%out_len:
|
|
71
|
+
%out_len = add 0, 4
|
|
72
|
+
!__char_three_%out_len
|
|
73
|
+
!__char_two_%out_len
|
|
74
|
+
!__char_one_%out_len
|
|
75
|
+
|
|
76
|
+
L_CHAR_LEN_UTF8_END_%out_len:
|
|
77
|
+
[END_MACRO]
|
|
78
|
+
|
|
79
|
+
[MACRO] CHAR_LEN_UTF16 %out_len, %code
|
|
80
|
+
__char_bmp_%out_len = ule %code, CHAR_UTF8_THREE_MAX
|
|
81
|
+
br __char_bmp_%out_len -> L_CHAR_LEN_UTF16_ONE_%out_len, L_CHAR_LEN_UTF16_TWO_%out_len
|
|
82
|
+
|
|
83
|
+
L_CHAR_LEN_UTF16_ONE_%out_len:
|
|
84
|
+
%out_len = add 0, 1
|
|
85
|
+
!__char_bmp_%out_len
|
|
86
|
+
jmp L_CHAR_LEN_UTF16_END_%out_len
|
|
87
|
+
|
|
88
|
+
L_CHAR_LEN_UTF16_TWO_%out_len:
|
|
89
|
+
%out_len = add 0, 2
|
|
90
|
+
!__char_bmp_%out_len
|
|
91
|
+
|
|
92
|
+
L_CHAR_LEN_UTF16_END_%out_len:
|
|
93
|
+
[END_MACRO]
|
|
94
|
+
|
|
95
|
+
[MACRO] CHAR_IS_ASCII %out_bool, %code
|
|
96
|
+
EXPAND ASCII_IS_ASCII %out_bool, %code
|
|
97
|
+
[END_MACRO]
|
|
98
|
+
|
|
99
|
+
[MACRO] CHAR_IS_ASCII_ALPHABETIC %out_bool, %code
|
|
100
|
+
EXPAND ASCII_IS_ALPHABETIC %out_bool, %code
|
|
101
|
+
[END_MACRO]
|
|
102
|
+
|
|
103
|
+
[MACRO] CHAR_IS_ASCII_ALPHANUMERIC %out_bool, %code
|
|
104
|
+
EXPAND ASCII_IS_ALPHANUMERIC %out_bool, %code
|
|
105
|
+
[END_MACRO]
|
|
106
|
+
|
|
107
|
+
[MACRO] CHAR_IS_ASCII_DIGIT %out_bool, %code
|
|
108
|
+
EXPAND ASCII_IS_DIGIT %out_bool, %code
|
|
109
|
+
[END_MACRO]
|
|
110
|
+
|
|
111
|
+
[MACRO] CHAR_IS_ASCII_HEXDIGIT %out_bool, %code
|
|
112
|
+
EXPAND ASCII_IS_HEXDIGIT %out_bool, %code
|
|
113
|
+
[END_MACRO]
|
|
114
|
+
|
|
115
|
+
[MACRO] CHAR_IS_ASCII_WHITESPACE %out_bool, %code
|
|
116
|
+
EXPAND ASCII_IS_WHITESPACE %out_bool, %code
|
|
117
|
+
[END_MACRO]
|
|
118
|
+
|
|
119
|
+
[MACRO] CHAR_TO_ASCII_UPPERCASE %out_code, %code
|
|
120
|
+
EXPAND ASCII_TO_UPPERCASE %out_code, %code
|
|
121
|
+
[END_MACRO]
|
|
122
|
+
|
|
123
|
+
[MACRO] CHAR_TO_ASCII_LOWERCASE %out_code, %code
|
|
124
|
+
EXPAND ASCII_TO_LOWERCASE %out_code, %code
|
|
125
|
+
[END_MACRO]
|
|
126
|
+
|
|
127
|
+
[MACRO] CHAR_EQ_IGNORE_ASCII_CASE %out_bool, %left_code, %right_code
|
|
128
|
+
EXPAND ASCII_EQ_IGNORE_CASE %out_bool, %left_code, %right_code
|
|
129
|
+
[END_MACRO]
|
|
130
|
+
|
|
131
|
+
[MACRO] CHAR_TO_DIGIT %out_ok, %out_value, %code, %radix
|
|
132
|
+
__char_radix_ge_%out_ok = uge %radix, 2
|
|
133
|
+
__char_radix_le_%out_ok = ule %radix, 36
|
|
134
|
+
__char_radix_ok_%out_ok = and __char_radix_ge_%out_ok, __char_radix_le_%out_ok
|
|
135
|
+
br __char_radix_ok_%out_ok -> L_CHAR_TO_DIGIT_CHECK_DEC_%out_ok, L_CHAR_TO_DIGIT_NONE_%out_ok
|
|
136
|
+
|
|
137
|
+
L_CHAR_TO_DIGIT_CHECK_DEC_%out_ok:
|
|
138
|
+
__char_digit_ge_%out_ok = uge %code, 48
|
|
139
|
+
__char_digit_le_%out_ok = ule %code, 57
|
|
140
|
+
__char_digit_dec_%out_ok = and __char_digit_ge_%out_ok, __char_digit_le_%out_ok
|
|
141
|
+
br __char_digit_dec_%out_ok -> L_CHAR_TO_DIGIT_DEC_%out_ok, L_CHAR_TO_DIGIT_CHECK_ALPHA_%out_ok
|
|
142
|
+
|
|
143
|
+
L_CHAR_TO_DIGIT_DEC_%out_ok:
|
|
144
|
+
__char_dec_value_%out_ok = sub %code, 48
|
|
145
|
+
__char_dec_in_radix_%out_ok = ult __char_dec_value_%out_ok, %radix
|
|
146
|
+
br __char_dec_in_radix_%out_ok -> L_CHAR_TO_DIGIT_DEC_OK_%out_ok, L_CHAR_TO_DIGIT_DEC_BAD_%out_ok
|
|
147
|
+
|
|
148
|
+
L_CHAR_TO_DIGIT_DEC_OK_%out_ok:
|
|
149
|
+
%out_value = add __char_dec_value_%out_ok, 0
|
|
150
|
+
%out_ok = add 0, 1
|
|
151
|
+
!__char_dec_in_radix_%out_ok
|
|
152
|
+
!__char_dec_value_%out_ok
|
|
153
|
+
!__char_digit_dec_%out_ok
|
|
154
|
+
!__char_digit_le_%out_ok
|
|
155
|
+
!__char_digit_ge_%out_ok
|
|
156
|
+
!__char_radix_ok_%out_ok
|
|
157
|
+
!__char_radix_le_%out_ok
|
|
158
|
+
!__char_radix_ge_%out_ok
|
|
159
|
+
jmp L_CHAR_TO_DIGIT_END_%out_ok
|
|
160
|
+
|
|
161
|
+
L_CHAR_TO_DIGIT_DEC_BAD_%out_ok:
|
|
162
|
+
!__char_dec_in_radix_%out_ok
|
|
163
|
+
!__char_dec_value_%out_ok
|
|
164
|
+
jmp L_CHAR_TO_DIGIT_NONE_AFTER_DEC_%out_ok
|
|
165
|
+
|
|
166
|
+
L_CHAR_TO_DIGIT_CHECK_ALPHA_%out_ok:
|
|
167
|
+
EXPAND ASCII_TO_UPPERCASE __char_upper_%out_ok, %code
|
|
168
|
+
__char_alpha_ge_%out_ok = uge __char_upper_%out_ok, 65
|
|
169
|
+
__char_alpha_le_%out_ok = ule __char_upper_%out_ok, 90
|
|
170
|
+
__char_alpha_%out_ok = and __char_alpha_ge_%out_ok, __char_alpha_le_%out_ok
|
|
171
|
+
br __char_alpha_%out_ok -> L_CHAR_TO_DIGIT_ALPHA_%out_ok, L_CHAR_TO_DIGIT_NONE_ALPHA_%out_ok
|
|
172
|
+
|
|
173
|
+
L_CHAR_TO_DIGIT_ALPHA_%out_ok:
|
|
174
|
+
__char_alpha_base_%out_ok = sub __char_upper_%out_ok, 65
|
|
175
|
+
__char_alpha_value_%out_ok = add __char_alpha_base_%out_ok, 10
|
|
176
|
+
__char_alpha_in_radix_%out_ok = ult __char_alpha_value_%out_ok, %radix
|
|
177
|
+
br __char_alpha_in_radix_%out_ok -> L_CHAR_TO_DIGIT_ALPHA_OK_%out_ok, L_CHAR_TO_DIGIT_ALPHA_BAD_%out_ok
|
|
178
|
+
|
|
179
|
+
L_CHAR_TO_DIGIT_ALPHA_OK_%out_ok:
|
|
180
|
+
%out_value = add __char_alpha_value_%out_ok, 0
|
|
181
|
+
%out_ok = add 0, 1
|
|
182
|
+
!__char_alpha_in_radix_%out_ok
|
|
183
|
+
!__char_alpha_value_%out_ok
|
|
184
|
+
!__char_alpha_base_%out_ok
|
|
185
|
+
!__char_alpha_%out_ok
|
|
186
|
+
!__char_alpha_le_%out_ok
|
|
187
|
+
!__char_alpha_ge_%out_ok
|
|
188
|
+
!__char_upper_%out_ok
|
|
189
|
+
!__char_digit_dec_%out_ok
|
|
190
|
+
!__char_digit_le_%out_ok
|
|
191
|
+
!__char_digit_ge_%out_ok
|
|
192
|
+
!__char_radix_ok_%out_ok
|
|
193
|
+
!__char_radix_le_%out_ok
|
|
194
|
+
!__char_radix_ge_%out_ok
|
|
195
|
+
jmp L_CHAR_TO_DIGIT_END_%out_ok
|
|
196
|
+
|
|
197
|
+
L_CHAR_TO_DIGIT_ALPHA_BAD_%out_ok:
|
|
198
|
+
!__char_alpha_in_radix_%out_ok
|
|
199
|
+
!__char_alpha_value_%out_ok
|
|
200
|
+
!__char_alpha_base_%out_ok
|
|
201
|
+
jmp L_CHAR_TO_DIGIT_NONE_ALPHA_%out_ok
|
|
202
|
+
|
|
203
|
+
L_CHAR_TO_DIGIT_NONE_ALPHA_%out_ok:
|
|
204
|
+
!__char_alpha_%out_ok
|
|
205
|
+
!__char_alpha_le_%out_ok
|
|
206
|
+
!__char_alpha_ge_%out_ok
|
|
207
|
+
!__char_upper_%out_ok
|
|
208
|
+
jmp L_CHAR_TO_DIGIT_NONE_AFTER_DEC_%out_ok
|
|
209
|
+
|
|
210
|
+
L_CHAR_TO_DIGIT_NONE_AFTER_DEC_%out_ok:
|
|
211
|
+
!__char_digit_dec_%out_ok
|
|
212
|
+
!__char_digit_le_%out_ok
|
|
213
|
+
!__char_digit_ge_%out_ok
|
|
214
|
+
|
|
215
|
+
L_CHAR_TO_DIGIT_NONE_%out_ok:
|
|
216
|
+
%out_value = add 0, 0
|
|
217
|
+
%out_ok = add 0, 0
|
|
218
|
+
!__char_radix_ok_%out_ok
|
|
219
|
+
!__char_radix_le_%out_ok
|
|
220
|
+
!__char_radix_ge_%out_ok
|
|
221
|
+
|
|
222
|
+
L_CHAR_TO_DIGIT_END_%out_ok:
|
|
223
|
+
[END_MACRO]
|
|
224
|
+
|
|
225
|
+
[MACRO] CHAR_IS_DIGIT %out_bool, %code, %radix
|
|
226
|
+
EXPAND CHAR_TO_DIGIT __char_digit_ok_%out_bool, __char_digit_value_%out_bool, %code, %radix
|
|
227
|
+
%out_bool = add __char_digit_ok_%out_bool, 0
|
|
228
|
+
!__char_digit_value_%out_bool
|
|
229
|
+
!__char_digit_ok_%out_bool
|
|
230
|
+
[END_MACRO]
|
|
231
|
+
|
|
232
|
+
[MACRO] CHAR_FROM_DIGIT %out_ok, %out_char, %digit, %radix
|
|
233
|
+
__char_from_radix_ge_%out_ok = uge %radix, 2
|
|
234
|
+
__char_from_radix_le_%out_ok = ule %radix, 36
|
|
235
|
+
__char_from_radix_ok_%out_ok = and __char_from_radix_ge_%out_ok, __char_from_radix_le_%out_ok
|
|
236
|
+
__char_from_in_radix_%out_ok = ult %digit, %radix
|
|
237
|
+
__char_from_ok_%out_ok = and __char_from_radix_ok_%out_ok, __char_from_in_radix_%out_ok
|
|
238
|
+
br __char_from_ok_%out_ok -> L_CHAR_FROM_DIGIT_OK_%out_ok, L_CHAR_FROM_DIGIT_NONE_%out_ok
|
|
239
|
+
|
|
240
|
+
L_CHAR_FROM_DIGIT_OK_%out_ok:
|
|
241
|
+
__char_from_decimal_%out_ok = ult %digit, 10
|
|
242
|
+
br __char_from_decimal_%out_ok -> L_CHAR_FROM_DIGIT_DEC_%out_ok, L_CHAR_FROM_DIGIT_ALPHA_%out_ok
|
|
243
|
+
|
|
244
|
+
L_CHAR_FROM_DIGIT_DEC_%out_ok:
|
|
245
|
+
%out_char = add %digit, 48
|
|
246
|
+
%out_ok = add 0, 1
|
|
247
|
+
!__char_from_decimal_%out_ok
|
|
248
|
+
!__char_from_ok_%out_ok
|
|
249
|
+
!__char_from_in_radix_%out_ok
|
|
250
|
+
!__char_from_radix_ok_%out_ok
|
|
251
|
+
!__char_from_radix_le_%out_ok
|
|
252
|
+
!__char_from_radix_ge_%out_ok
|
|
253
|
+
jmp L_CHAR_FROM_DIGIT_END_%out_ok
|
|
254
|
+
|
|
255
|
+
L_CHAR_FROM_DIGIT_ALPHA_%out_ok:
|
|
256
|
+
__char_from_alpha_base_%out_ok = sub %digit, 10
|
|
257
|
+
%out_char = add __char_from_alpha_base_%out_ok, 97
|
|
258
|
+
%out_ok = add 0, 1
|
|
259
|
+
!__char_from_alpha_base_%out_ok
|
|
260
|
+
!__char_from_decimal_%out_ok
|
|
261
|
+
!__char_from_ok_%out_ok
|
|
262
|
+
!__char_from_in_radix_%out_ok
|
|
263
|
+
!__char_from_radix_ok_%out_ok
|
|
264
|
+
!__char_from_radix_le_%out_ok
|
|
265
|
+
!__char_from_radix_ge_%out_ok
|
|
266
|
+
jmp L_CHAR_FROM_DIGIT_END_%out_ok
|
|
267
|
+
|
|
268
|
+
L_CHAR_FROM_DIGIT_NONE_%out_ok:
|
|
269
|
+
%out_char = add 0, 0
|
|
270
|
+
%out_ok = add 0, 0
|
|
271
|
+
!__char_from_ok_%out_ok
|
|
272
|
+
!__char_from_in_radix_%out_ok
|
|
273
|
+
!__char_from_radix_ok_%out_ok
|
|
274
|
+
!__char_from_radix_le_%out_ok
|
|
275
|
+
!__char_from_radix_ge_%out_ok
|
|
276
|
+
|
|
277
|
+
L_CHAR_FROM_DIGIT_END_%out_ok:
|
|
278
|
+
[END_MACRO]
|
|
279
|
+
|
|
280
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
281
|
+
EXPAND CHAR_IS_VALID_SCALAR __char_escape_valid_%out_ok, %code
|
|
282
|
+
br __char_escape_valid_%out_ok -> L_CHAR_ESCAPE_CHECK_1_%out_ok, L_CHAR_ESCAPE_FAIL_%out_ok
|
|
283
|
+
|
|
284
|
+
L_CHAR_ESCAPE_CHECK_1_%out_ok:
|
|
285
|
+
__char_escape_le_1_%out_ok = ule %code, 15
|
|
286
|
+
br __char_escape_le_1_%out_ok -> L_CHAR_ESCAPE_WRITE_1_%out_ok, L_CHAR_ESCAPE_CHECK_2_%out_ok
|
|
287
|
+
|
|
288
|
+
L_CHAR_ESCAPE_WRITE_1_%out_ok:
|
|
289
|
+
!__char_escape_le_1_%out_ok
|
|
290
|
+
!__char_escape_valid_%out_ok
|
|
291
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE_1 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
292
|
+
jmp L_CHAR_ESCAPE_END_%out_ok
|
|
293
|
+
|
|
294
|
+
L_CHAR_ESCAPE_CHECK_2_%out_ok:
|
|
295
|
+
__char_escape_le_2_%out_ok = ule %code, 255
|
|
296
|
+
br __char_escape_le_2_%out_ok -> L_CHAR_ESCAPE_WRITE_2_%out_ok, L_CHAR_ESCAPE_CHECK_3_%out_ok
|
|
297
|
+
|
|
298
|
+
L_CHAR_ESCAPE_WRITE_2_%out_ok:
|
|
299
|
+
!__char_escape_le_2_%out_ok
|
|
300
|
+
!__char_escape_le_1_%out_ok
|
|
301
|
+
!__char_escape_valid_%out_ok
|
|
302
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE_2 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
303
|
+
jmp L_CHAR_ESCAPE_END_%out_ok
|
|
304
|
+
|
|
305
|
+
L_CHAR_ESCAPE_CHECK_3_%out_ok:
|
|
306
|
+
__char_escape_le_3_%out_ok = ule %code, 4095
|
|
307
|
+
br __char_escape_le_3_%out_ok -> L_CHAR_ESCAPE_WRITE_3_%out_ok, L_CHAR_ESCAPE_CHECK_4_%out_ok
|
|
308
|
+
|
|
309
|
+
L_CHAR_ESCAPE_WRITE_3_%out_ok:
|
|
310
|
+
!__char_escape_le_3_%out_ok
|
|
311
|
+
!__char_escape_le_2_%out_ok
|
|
312
|
+
!__char_escape_le_1_%out_ok
|
|
313
|
+
!__char_escape_valid_%out_ok
|
|
314
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE_3 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
315
|
+
jmp L_CHAR_ESCAPE_END_%out_ok
|
|
316
|
+
|
|
317
|
+
L_CHAR_ESCAPE_CHECK_4_%out_ok:
|
|
318
|
+
__char_escape_le_4_%out_ok = ule %code, 65535
|
|
319
|
+
br __char_escape_le_4_%out_ok -> L_CHAR_ESCAPE_WRITE_4_%out_ok, L_CHAR_ESCAPE_CHECK_5_%out_ok
|
|
320
|
+
|
|
321
|
+
L_CHAR_ESCAPE_WRITE_4_%out_ok:
|
|
322
|
+
!__char_escape_le_4_%out_ok
|
|
323
|
+
!__char_escape_le_3_%out_ok
|
|
324
|
+
!__char_escape_le_2_%out_ok
|
|
325
|
+
!__char_escape_le_1_%out_ok
|
|
326
|
+
!__char_escape_valid_%out_ok
|
|
327
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE_4 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
328
|
+
jmp L_CHAR_ESCAPE_END_%out_ok
|
|
329
|
+
|
|
330
|
+
L_CHAR_ESCAPE_CHECK_5_%out_ok:
|
|
331
|
+
__char_escape_le_5_%out_ok = ule %code, 1048575
|
|
332
|
+
br __char_escape_le_5_%out_ok -> L_CHAR_ESCAPE_WRITE_5_%out_ok, L_CHAR_ESCAPE_WRITE_6_%out_ok
|
|
333
|
+
|
|
334
|
+
L_CHAR_ESCAPE_WRITE_5_%out_ok:
|
|
335
|
+
!__char_escape_le_5_%out_ok
|
|
336
|
+
!__char_escape_le_4_%out_ok
|
|
337
|
+
!__char_escape_le_3_%out_ok
|
|
338
|
+
!__char_escape_le_2_%out_ok
|
|
339
|
+
!__char_escape_le_1_%out_ok
|
|
340
|
+
!__char_escape_valid_%out_ok
|
|
341
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE_5 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
342
|
+
jmp L_CHAR_ESCAPE_END_%out_ok
|
|
343
|
+
|
|
344
|
+
L_CHAR_ESCAPE_WRITE_6_%out_ok:
|
|
345
|
+
!__char_escape_le_5_%out_ok
|
|
346
|
+
!__char_escape_le_4_%out_ok
|
|
347
|
+
!__char_escape_le_3_%out_ok
|
|
348
|
+
!__char_escape_le_2_%out_ok
|
|
349
|
+
!__char_escape_le_1_%out_ok
|
|
350
|
+
!__char_escape_valid_%out_ok
|
|
351
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE_6 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
352
|
+
jmp L_CHAR_ESCAPE_END_%out_ok
|
|
353
|
+
|
|
354
|
+
L_CHAR_ESCAPE_FAIL_%out_ok:
|
|
355
|
+
%out_len = add 0, 0
|
|
356
|
+
%out_ok = add 0, 0
|
|
357
|
+
!__char_escape_valid_%out_ok
|
|
358
|
+
|
|
359
|
+
L_CHAR_ESCAPE_END_%out_ok:
|
|
360
|
+
[END_MACRO]
|
|
361
|
+
|
|
362
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE_1 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
363
|
+
__char_escape_fits1_%out_ok = uge %dst_len, 5
|
|
364
|
+
br __char_escape_fits1_%out_ok -> L_CHAR_ESCAPE_WRITE1_OK_%out_ok, L_CHAR_ESCAPE_WRITE1_FAIL_%out_ok
|
|
365
|
+
|
|
366
|
+
L_CHAR_ESCAPE_WRITE1_OK_%out_ok:
|
|
367
|
+
__char_escape_n0_1_%out_ok = and %code, 15
|
|
368
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d0_1_%out_ok, __char_escape_n0_1_%out_ok
|
|
369
|
+
store %dst_ptr+0, CHAR_ESCAPE_BACKSLASH as u8
|
|
370
|
+
__char_escape_p1_1_%out_ok = ptr_add %dst_ptr, 1
|
|
371
|
+
__char_escape_p2_1_%out_ok = ptr_add %dst_ptr, 2
|
|
372
|
+
__char_escape_p3_1_%out_ok = ptr_add %dst_ptr, 3
|
|
373
|
+
__char_escape_p4_1_%out_ok = ptr_add %dst_ptr, 4
|
|
374
|
+
store __char_escape_p1_1_%out_ok+0, CHAR_ESCAPE_U as u8
|
|
375
|
+
store __char_escape_p2_1_%out_ok+0, CHAR_ESCAPE_LBRACE as u8
|
|
376
|
+
store __char_escape_p3_1_%out_ok+0, __char_escape_d0_1_%out_ok as u8
|
|
377
|
+
store __char_escape_p4_1_%out_ok+0, CHAR_ESCAPE_RBRACE as u8
|
|
378
|
+
%out_len = add 0, 5
|
|
379
|
+
%out_ok = add 0, 1
|
|
380
|
+
!__char_escape_p4_1_%out_ok
|
|
381
|
+
!__char_escape_p3_1_%out_ok
|
|
382
|
+
!__char_escape_p2_1_%out_ok
|
|
383
|
+
!__char_escape_p1_1_%out_ok
|
|
384
|
+
!__char_escape_d0_1_%out_ok
|
|
385
|
+
!__char_escape_n0_1_%out_ok
|
|
386
|
+
!__char_escape_fits1_%out_ok
|
|
387
|
+
jmp L_CHAR_ESCAPE_WRITE1_END_%out_ok
|
|
388
|
+
|
|
389
|
+
L_CHAR_ESCAPE_WRITE1_FAIL_%out_ok:
|
|
390
|
+
%out_len = add 0, 0
|
|
391
|
+
%out_ok = add 0, 0
|
|
392
|
+
!__char_escape_fits1_%out_ok
|
|
393
|
+
|
|
394
|
+
L_CHAR_ESCAPE_WRITE1_END_%out_ok:
|
|
395
|
+
[END_MACRO]
|
|
396
|
+
|
|
397
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE_2 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
398
|
+
__char_escape_fits2_%out_ok = uge %dst_len, 6
|
|
399
|
+
br __char_escape_fits2_%out_ok -> L_CHAR_ESCAPE_WRITE2_OK_%out_ok, L_CHAR_ESCAPE_WRITE2_FAIL_%out_ok
|
|
400
|
+
|
|
401
|
+
L_CHAR_ESCAPE_WRITE2_OK_%out_ok:
|
|
402
|
+
__char_escape_s4_2_%out_ok = shr %code, 4
|
|
403
|
+
__char_escape_n1_2_%out_ok = and __char_escape_s4_2_%out_ok, 15
|
|
404
|
+
__char_escape_n0_2_%out_ok = and %code, 15
|
|
405
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d1_2_%out_ok, __char_escape_n1_2_%out_ok
|
|
406
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d0_2_%out_ok, __char_escape_n0_2_%out_ok
|
|
407
|
+
store %dst_ptr+0, CHAR_ESCAPE_BACKSLASH as u8
|
|
408
|
+
__char_escape_p1_2_%out_ok = ptr_add %dst_ptr, 1
|
|
409
|
+
__char_escape_p2_2_%out_ok = ptr_add %dst_ptr, 2
|
|
410
|
+
__char_escape_p3_2_%out_ok = ptr_add %dst_ptr, 3
|
|
411
|
+
__char_escape_p4_2_%out_ok = ptr_add %dst_ptr, 4
|
|
412
|
+
__char_escape_p5_2_%out_ok = ptr_add %dst_ptr, 5
|
|
413
|
+
store __char_escape_p1_2_%out_ok+0, CHAR_ESCAPE_U as u8
|
|
414
|
+
store __char_escape_p2_2_%out_ok+0, CHAR_ESCAPE_LBRACE as u8
|
|
415
|
+
store __char_escape_p3_2_%out_ok+0, __char_escape_d1_2_%out_ok as u8
|
|
416
|
+
store __char_escape_p4_2_%out_ok+0, __char_escape_d0_2_%out_ok as u8
|
|
417
|
+
store __char_escape_p5_2_%out_ok+0, CHAR_ESCAPE_RBRACE as u8
|
|
418
|
+
%out_len = add 0, 6
|
|
419
|
+
%out_ok = add 0, 1
|
|
420
|
+
!__char_escape_p5_2_%out_ok
|
|
421
|
+
!__char_escape_p4_2_%out_ok
|
|
422
|
+
!__char_escape_p3_2_%out_ok
|
|
423
|
+
!__char_escape_p2_2_%out_ok
|
|
424
|
+
!__char_escape_p1_2_%out_ok
|
|
425
|
+
!__char_escape_d0_2_%out_ok
|
|
426
|
+
!__char_escape_d1_2_%out_ok
|
|
427
|
+
!__char_escape_n0_2_%out_ok
|
|
428
|
+
!__char_escape_n1_2_%out_ok
|
|
429
|
+
!__char_escape_s4_2_%out_ok
|
|
430
|
+
!__char_escape_fits2_%out_ok
|
|
431
|
+
jmp L_CHAR_ESCAPE_WRITE2_END_%out_ok
|
|
432
|
+
|
|
433
|
+
L_CHAR_ESCAPE_WRITE2_FAIL_%out_ok:
|
|
434
|
+
%out_len = add 0, 0
|
|
435
|
+
%out_ok = add 0, 0
|
|
436
|
+
!__char_escape_fits2_%out_ok
|
|
437
|
+
|
|
438
|
+
L_CHAR_ESCAPE_WRITE2_END_%out_ok:
|
|
439
|
+
[END_MACRO]
|
|
440
|
+
|
|
441
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE_3 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
442
|
+
__char_escape_fits3_%out_ok = uge %dst_len, 7
|
|
443
|
+
br __char_escape_fits3_%out_ok -> L_CHAR_ESCAPE_WRITE3_OK_%out_ok, L_CHAR_ESCAPE_WRITE3_FAIL_%out_ok
|
|
444
|
+
|
|
445
|
+
L_CHAR_ESCAPE_WRITE3_OK_%out_ok:
|
|
446
|
+
__char_escape_s8_3_%out_ok = shr %code, 8
|
|
447
|
+
__char_escape_s4_3_%out_ok = shr %code, 4
|
|
448
|
+
__char_escape_n2_3_%out_ok = and __char_escape_s8_3_%out_ok, 15
|
|
449
|
+
__char_escape_n1_3_%out_ok = and __char_escape_s4_3_%out_ok, 15
|
|
450
|
+
__char_escape_n0_3_%out_ok = and %code, 15
|
|
451
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d2_3_%out_ok, __char_escape_n2_3_%out_ok
|
|
452
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d1_3_%out_ok, __char_escape_n1_3_%out_ok
|
|
453
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d0_3_%out_ok, __char_escape_n0_3_%out_ok
|
|
454
|
+
store %dst_ptr+0, CHAR_ESCAPE_BACKSLASH as u8
|
|
455
|
+
__char_escape_p1_3_%out_ok = ptr_add %dst_ptr, 1
|
|
456
|
+
__char_escape_p2_3_%out_ok = ptr_add %dst_ptr, 2
|
|
457
|
+
__char_escape_p3_3_%out_ok = ptr_add %dst_ptr, 3
|
|
458
|
+
__char_escape_p4_3_%out_ok = ptr_add %dst_ptr, 4
|
|
459
|
+
__char_escape_p5_3_%out_ok = ptr_add %dst_ptr, 5
|
|
460
|
+
__char_escape_p6_3_%out_ok = ptr_add %dst_ptr, 6
|
|
461
|
+
store __char_escape_p1_3_%out_ok+0, CHAR_ESCAPE_U as u8
|
|
462
|
+
store __char_escape_p2_3_%out_ok+0, CHAR_ESCAPE_LBRACE as u8
|
|
463
|
+
store __char_escape_p3_3_%out_ok+0, __char_escape_d2_3_%out_ok as u8
|
|
464
|
+
store __char_escape_p4_3_%out_ok+0, __char_escape_d1_3_%out_ok as u8
|
|
465
|
+
store __char_escape_p5_3_%out_ok+0, __char_escape_d0_3_%out_ok as u8
|
|
466
|
+
store __char_escape_p6_3_%out_ok+0, CHAR_ESCAPE_RBRACE as u8
|
|
467
|
+
%out_len = add 0, 7
|
|
468
|
+
%out_ok = add 0, 1
|
|
469
|
+
!__char_escape_p6_3_%out_ok
|
|
470
|
+
!__char_escape_p5_3_%out_ok
|
|
471
|
+
!__char_escape_p4_3_%out_ok
|
|
472
|
+
!__char_escape_p3_3_%out_ok
|
|
473
|
+
!__char_escape_p2_3_%out_ok
|
|
474
|
+
!__char_escape_p1_3_%out_ok
|
|
475
|
+
!__char_escape_d0_3_%out_ok
|
|
476
|
+
!__char_escape_d1_3_%out_ok
|
|
477
|
+
!__char_escape_d2_3_%out_ok
|
|
478
|
+
!__char_escape_n0_3_%out_ok
|
|
479
|
+
!__char_escape_n1_3_%out_ok
|
|
480
|
+
!__char_escape_n2_3_%out_ok
|
|
481
|
+
!__char_escape_s4_3_%out_ok
|
|
482
|
+
!__char_escape_s8_3_%out_ok
|
|
483
|
+
!__char_escape_fits3_%out_ok
|
|
484
|
+
jmp L_CHAR_ESCAPE_WRITE3_END_%out_ok
|
|
485
|
+
|
|
486
|
+
L_CHAR_ESCAPE_WRITE3_FAIL_%out_ok:
|
|
487
|
+
%out_len = add 0, 0
|
|
488
|
+
%out_ok = add 0, 0
|
|
489
|
+
!__char_escape_fits3_%out_ok
|
|
490
|
+
|
|
491
|
+
L_CHAR_ESCAPE_WRITE3_END_%out_ok:
|
|
492
|
+
[END_MACRO]
|
|
493
|
+
|
|
494
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE_4 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
495
|
+
__char_escape_fits4_%out_ok = uge %dst_len, 8
|
|
496
|
+
br __char_escape_fits4_%out_ok -> L_CHAR_ESCAPE_WRITE4_OK_%out_ok, L_CHAR_ESCAPE_WRITE4_FAIL_%out_ok
|
|
497
|
+
|
|
498
|
+
L_CHAR_ESCAPE_WRITE4_OK_%out_ok:
|
|
499
|
+
__char_escape_s12_4_%out_ok = shr %code, 12
|
|
500
|
+
__char_escape_s8_4_%out_ok = shr %code, 8
|
|
501
|
+
__char_escape_s4_4_%out_ok = shr %code, 4
|
|
502
|
+
__char_escape_n3_4_%out_ok = and __char_escape_s12_4_%out_ok, 15
|
|
503
|
+
__char_escape_n2_4_%out_ok = and __char_escape_s8_4_%out_ok, 15
|
|
504
|
+
__char_escape_n1_4_%out_ok = and __char_escape_s4_4_%out_ok, 15
|
|
505
|
+
__char_escape_n0_4_%out_ok = and %code, 15
|
|
506
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d3_4_%out_ok, __char_escape_n3_4_%out_ok
|
|
507
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d2_4_%out_ok, __char_escape_n2_4_%out_ok
|
|
508
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d1_4_%out_ok, __char_escape_n1_4_%out_ok
|
|
509
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d0_4_%out_ok, __char_escape_n0_4_%out_ok
|
|
510
|
+
store %dst_ptr+0, CHAR_ESCAPE_BACKSLASH as u8
|
|
511
|
+
__char_escape_p1_4_%out_ok = ptr_add %dst_ptr, 1
|
|
512
|
+
__char_escape_p2_4_%out_ok = ptr_add %dst_ptr, 2
|
|
513
|
+
__char_escape_p3_4_%out_ok = ptr_add %dst_ptr, 3
|
|
514
|
+
__char_escape_p4_4_%out_ok = ptr_add %dst_ptr, 4
|
|
515
|
+
__char_escape_p5_4_%out_ok = ptr_add %dst_ptr, 5
|
|
516
|
+
__char_escape_p6_4_%out_ok = ptr_add %dst_ptr, 6
|
|
517
|
+
__char_escape_p7_4_%out_ok = ptr_add %dst_ptr, 7
|
|
518
|
+
store __char_escape_p1_4_%out_ok+0, CHAR_ESCAPE_U as u8
|
|
519
|
+
store __char_escape_p2_4_%out_ok+0, CHAR_ESCAPE_LBRACE as u8
|
|
520
|
+
store __char_escape_p3_4_%out_ok+0, __char_escape_d3_4_%out_ok as u8
|
|
521
|
+
store __char_escape_p4_4_%out_ok+0, __char_escape_d2_4_%out_ok as u8
|
|
522
|
+
store __char_escape_p5_4_%out_ok+0, __char_escape_d1_4_%out_ok as u8
|
|
523
|
+
store __char_escape_p6_4_%out_ok+0, __char_escape_d0_4_%out_ok as u8
|
|
524
|
+
store __char_escape_p7_4_%out_ok+0, CHAR_ESCAPE_RBRACE as u8
|
|
525
|
+
%out_len = add 0, 8
|
|
526
|
+
%out_ok = add 0, 1
|
|
527
|
+
!__char_escape_p7_4_%out_ok
|
|
528
|
+
!__char_escape_p6_4_%out_ok
|
|
529
|
+
!__char_escape_p5_4_%out_ok
|
|
530
|
+
!__char_escape_p4_4_%out_ok
|
|
531
|
+
!__char_escape_p3_4_%out_ok
|
|
532
|
+
!__char_escape_p2_4_%out_ok
|
|
533
|
+
!__char_escape_p1_4_%out_ok
|
|
534
|
+
!__char_escape_d0_4_%out_ok
|
|
535
|
+
!__char_escape_d1_4_%out_ok
|
|
536
|
+
!__char_escape_d2_4_%out_ok
|
|
537
|
+
!__char_escape_d3_4_%out_ok
|
|
538
|
+
!__char_escape_n0_4_%out_ok
|
|
539
|
+
!__char_escape_n1_4_%out_ok
|
|
540
|
+
!__char_escape_n2_4_%out_ok
|
|
541
|
+
!__char_escape_n3_4_%out_ok
|
|
542
|
+
!__char_escape_s4_4_%out_ok
|
|
543
|
+
!__char_escape_s8_4_%out_ok
|
|
544
|
+
!__char_escape_s12_4_%out_ok
|
|
545
|
+
!__char_escape_fits4_%out_ok
|
|
546
|
+
jmp L_CHAR_ESCAPE_WRITE4_END_%out_ok
|
|
547
|
+
|
|
548
|
+
L_CHAR_ESCAPE_WRITE4_FAIL_%out_ok:
|
|
549
|
+
%out_len = add 0, 0
|
|
550
|
+
%out_ok = add 0, 0
|
|
551
|
+
!__char_escape_fits4_%out_ok
|
|
552
|
+
|
|
553
|
+
L_CHAR_ESCAPE_WRITE4_END_%out_ok:
|
|
554
|
+
[END_MACRO]
|
|
555
|
+
|
|
556
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE_5 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
557
|
+
__char_escape_fits5_%out_ok = uge %dst_len, 9
|
|
558
|
+
br __char_escape_fits5_%out_ok -> L_CHAR_ESCAPE_WRITE5_OK_%out_ok, L_CHAR_ESCAPE_WRITE5_FAIL_%out_ok
|
|
559
|
+
|
|
560
|
+
L_CHAR_ESCAPE_WRITE5_OK_%out_ok:
|
|
561
|
+
__char_escape_s16_5_%out_ok = shr %code, 16
|
|
562
|
+
__char_escape_s12_5_%out_ok = shr %code, 12
|
|
563
|
+
__char_escape_s8_5_%out_ok = shr %code, 8
|
|
564
|
+
__char_escape_s4_5_%out_ok = shr %code, 4
|
|
565
|
+
__char_escape_n4_5_%out_ok = and __char_escape_s16_5_%out_ok, 15
|
|
566
|
+
__char_escape_n3_5_%out_ok = and __char_escape_s12_5_%out_ok, 15
|
|
567
|
+
__char_escape_n2_5_%out_ok = and __char_escape_s8_5_%out_ok, 15
|
|
568
|
+
__char_escape_n1_5_%out_ok = and __char_escape_s4_5_%out_ok, 15
|
|
569
|
+
__char_escape_n0_5_%out_ok = and %code, 15
|
|
570
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d4_5_%out_ok, __char_escape_n4_5_%out_ok
|
|
571
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d3_5_%out_ok, __char_escape_n3_5_%out_ok
|
|
572
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d2_5_%out_ok, __char_escape_n2_5_%out_ok
|
|
573
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d1_5_%out_ok, __char_escape_n1_5_%out_ok
|
|
574
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d0_5_%out_ok, __char_escape_n0_5_%out_ok
|
|
575
|
+
store %dst_ptr+0, CHAR_ESCAPE_BACKSLASH as u8
|
|
576
|
+
__char_escape_p1_5_%out_ok = ptr_add %dst_ptr, 1
|
|
577
|
+
__char_escape_p2_5_%out_ok = ptr_add %dst_ptr, 2
|
|
578
|
+
__char_escape_p3_5_%out_ok = ptr_add %dst_ptr, 3
|
|
579
|
+
__char_escape_p4_5_%out_ok = ptr_add %dst_ptr, 4
|
|
580
|
+
__char_escape_p5_5_%out_ok = ptr_add %dst_ptr, 5
|
|
581
|
+
__char_escape_p6_5_%out_ok = ptr_add %dst_ptr, 6
|
|
582
|
+
__char_escape_p7_5_%out_ok = ptr_add %dst_ptr, 7
|
|
583
|
+
__char_escape_p8_5_%out_ok = ptr_add %dst_ptr, 8
|
|
584
|
+
store __char_escape_p1_5_%out_ok+0, CHAR_ESCAPE_U as u8
|
|
585
|
+
store __char_escape_p2_5_%out_ok+0, CHAR_ESCAPE_LBRACE as u8
|
|
586
|
+
store __char_escape_p3_5_%out_ok+0, __char_escape_d4_5_%out_ok as u8
|
|
587
|
+
store __char_escape_p4_5_%out_ok+0, __char_escape_d3_5_%out_ok as u8
|
|
588
|
+
store __char_escape_p5_5_%out_ok+0, __char_escape_d2_5_%out_ok as u8
|
|
589
|
+
store __char_escape_p6_5_%out_ok+0, __char_escape_d1_5_%out_ok as u8
|
|
590
|
+
store __char_escape_p7_5_%out_ok+0, __char_escape_d0_5_%out_ok as u8
|
|
591
|
+
store __char_escape_p8_5_%out_ok+0, CHAR_ESCAPE_RBRACE as u8
|
|
592
|
+
%out_len = add 0, 9
|
|
593
|
+
%out_ok = add 0, 1
|
|
594
|
+
!__char_escape_p8_5_%out_ok
|
|
595
|
+
!__char_escape_p7_5_%out_ok
|
|
596
|
+
!__char_escape_p6_5_%out_ok
|
|
597
|
+
!__char_escape_p5_5_%out_ok
|
|
598
|
+
!__char_escape_p4_5_%out_ok
|
|
599
|
+
!__char_escape_p3_5_%out_ok
|
|
600
|
+
!__char_escape_p2_5_%out_ok
|
|
601
|
+
!__char_escape_p1_5_%out_ok
|
|
602
|
+
!__char_escape_d0_5_%out_ok
|
|
603
|
+
!__char_escape_d1_5_%out_ok
|
|
604
|
+
!__char_escape_d2_5_%out_ok
|
|
605
|
+
!__char_escape_d3_5_%out_ok
|
|
606
|
+
!__char_escape_d4_5_%out_ok
|
|
607
|
+
!__char_escape_n0_5_%out_ok
|
|
608
|
+
!__char_escape_n1_5_%out_ok
|
|
609
|
+
!__char_escape_n2_5_%out_ok
|
|
610
|
+
!__char_escape_n3_5_%out_ok
|
|
611
|
+
!__char_escape_n4_5_%out_ok
|
|
612
|
+
!__char_escape_s4_5_%out_ok
|
|
613
|
+
!__char_escape_s8_5_%out_ok
|
|
614
|
+
!__char_escape_s12_5_%out_ok
|
|
615
|
+
!__char_escape_s16_5_%out_ok
|
|
616
|
+
!__char_escape_fits5_%out_ok
|
|
617
|
+
jmp L_CHAR_ESCAPE_WRITE5_END_%out_ok
|
|
618
|
+
|
|
619
|
+
L_CHAR_ESCAPE_WRITE5_FAIL_%out_ok:
|
|
620
|
+
%out_len = add 0, 0
|
|
621
|
+
%out_ok = add 0, 0
|
|
622
|
+
!__char_escape_fits5_%out_ok
|
|
623
|
+
|
|
624
|
+
L_CHAR_ESCAPE_WRITE5_END_%out_ok:
|
|
625
|
+
[END_MACRO]
|
|
626
|
+
|
|
627
|
+
[MACRO] CHAR_ESCAPE_UNICODE_WRITE_6 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
628
|
+
__char_escape_fits6_%out_ok = uge %dst_len, 10
|
|
629
|
+
br __char_escape_fits6_%out_ok -> L_CHAR_ESCAPE_WRITE6_OK_%out_ok, L_CHAR_ESCAPE_WRITE6_FAIL_%out_ok
|
|
630
|
+
|
|
631
|
+
L_CHAR_ESCAPE_WRITE6_OK_%out_ok:
|
|
632
|
+
__char_escape_s20_6_%out_ok = shr %code, 20
|
|
633
|
+
__char_escape_s16_6_%out_ok = shr %code, 16
|
|
634
|
+
__char_escape_s12_6_%out_ok = shr %code, 12
|
|
635
|
+
__char_escape_s8_6_%out_ok = shr %code, 8
|
|
636
|
+
__char_escape_s4_6_%out_ok = shr %code, 4
|
|
637
|
+
__char_escape_n5_6_%out_ok = and __char_escape_s20_6_%out_ok, 15
|
|
638
|
+
__char_escape_n4_6_%out_ok = and __char_escape_s16_6_%out_ok, 15
|
|
639
|
+
__char_escape_n3_6_%out_ok = and __char_escape_s12_6_%out_ok, 15
|
|
640
|
+
__char_escape_n2_6_%out_ok = and __char_escape_s8_6_%out_ok, 15
|
|
641
|
+
__char_escape_n1_6_%out_ok = and __char_escape_s4_6_%out_ok, 15
|
|
642
|
+
__char_escape_n0_6_%out_ok = and %code, 15
|
|
643
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d5_6_%out_ok, __char_escape_n5_6_%out_ok
|
|
644
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d4_6_%out_ok, __char_escape_n4_6_%out_ok
|
|
645
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d3_6_%out_ok, __char_escape_n3_6_%out_ok
|
|
646
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d2_6_%out_ok, __char_escape_n2_6_%out_ok
|
|
647
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d1_6_%out_ok, __char_escape_n1_6_%out_ok
|
|
648
|
+
EXPAND ASCII_NIBBLE_TO_LOWER_HEX __char_escape_d0_6_%out_ok, __char_escape_n0_6_%out_ok
|
|
649
|
+
store %dst_ptr+0, CHAR_ESCAPE_BACKSLASH as u8
|
|
650
|
+
__char_escape_p1_6_%out_ok = ptr_add %dst_ptr, 1
|
|
651
|
+
__char_escape_p2_6_%out_ok = ptr_add %dst_ptr, 2
|
|
652
|
+
__char_escape_p3_6_%out_ok = ptr_add %dst_ptr, 3
|
|
653
|
+
__char_escape_p4_6_%out_ok = ptr_add %dst_ptr, 4
|
|
654
|
+
__char_escape_p5_6_%out_ok = ptr_add %dst_ptr, 5
|
|
655
|
+
__char_escape_p6_6_%out_ok = ptr_add %dst_ptr, 6
|
|
656
|
+
__char_escape_p7_6_%out_ok = ptr_add %dst_ptr, 7
|
|
657
|
+
__char_escape_p8_6_%out_ok = ptr_add %dst_ptr, 8
|
|
658
|
+
__char_escape_p9_6_%out_ok = ptr_add %dst_ptr, 9
|
|
659
|
+
store __char_escape_p1_6_%out_ok+0, CHAR_ESCAPE_U as u8
|
|
660
|
+
store __char_escape_p2_6_%out_ok+0, CHAR_ESCAPE_LBRACE as u8
|
|
661
|
+
store __char_escape_p3_6_%out_ok+0, __char_escape_d5_6_%out_ok as u8
|
|
662
|
+
store __char_escape_p4_6_%out_ok+0, __char_escape_d4_6_%out_ok as u8
|
|
663
|
+
store __char_escape_p5_6_%out_ok+0, __char_escape_d3_6_%out_ok as u8
|
|
664
|
+
store __char_escape_p6_6_%out_ok+0, __char_escape_d2_6_%out_ok as u8
|
|
665
|
+
store __char_escape_p7_6_%out_ok+0, __char_escape_d1_6_%out_ok as u8
|
|
666
|
+
store __char_escape_p8_6_%out_ok+0, __char_escape_d0_6_%out_ok as u8
|
|
667
|
+
store __char_escape_p9_6_%out_ok+0, CHAR_ESCAPE_RBRACE as u8
|
|
668
|
+
%out_len = add 0, 10
|
|
669
|
+
%out_ok = add 0, 1
|
|
670
|
+
!__char_escape_p9_6_%out_ok
|
|
671
|
+
!__char_escape_p8_6_%out_ok
|
|
672
|
+
!__char_escape_p7_6_%out_ok
|
|
673
|
+
!__char_escape_p6_6_%out_ok
|
|
674
|
+
!__char_escape_p5_6_%out_ok
|
|
675
|
+
!__char_escape_p4_6_%out_ok
|
|
676
|
+
!__char_escape_p3_6_%out_ok
|
|
677
|
+
!__char_escape_p2_6_%out_ok
|
|
678
|
+
!__char_escape_p1_6_%out_ok
|
|
679
|
+
!__char_escape_d0_6_%out_ok
|
|
680
|
+
!__char_escape_d1_6_%out_ok
|
|
681
|
+
!__char_escape_d2_6_%out_ok
|
|
682
|
+
!__char_escape_d3_6_%out_ok
|
|
683
|
+
!__char_escape_d4_6_%out_ok
|
|
684
|
+
!__char_escape_d5_6_%out_ok
|
|
685
|
+
!__char_escape_n0_6_%out_ok
|
|
686
|
+
!__char_escape_n1_6_%out_ok
|
|
687
|
+
!__char_escape_n2_6_%out_ok
|
|
688
|
+
!__char_escape_n3_6_%out_ok
|
|
689
|
+
!__char_escape_n4_6_%out_ok
|
|
690
|
+
!__char_escape_n5_6_%out_ok
|
|
691
|
+
!__char_escape_s4_6_%out_ok
|
|
692
|
+
!__char_escape_s8_6_%out_ok
|
|
693
|
+
!__char_escape_s12_6_%out_ok
|
|
694
|
+
!__char_escape_s16_6_%out_ok
|
|
695
|
+
!__char_escape_s20_6_%out_ok
|
|
696
|
+
!__char_escape_fits6_%out_ok
|
|
697
|
+
jmp L_CHAR_ESCAPE_WRITE6_END_%out_ok
|
|
698
|
+
|
|
699
|
+
L_CHAR_ESCAPE_WRITE6_FAIL_%out_ok:
|
|
700
|
+
%out_len = add 0, 0
|
|
701
|
+
%out_ok = add 0, 0
|
|
702
|
+
!__char_escape_fits6_%out_ok
|
|
703
|
+
|
|
704
|
+
L_CHAR_ESCAPE_WRITE6_END_%out_ok:
|
|
705
|
+
[END_MACRO]
|
|
706
|
+
|
|
707
|
+
[MACRO] CHAR_ESCAPE_DEFAULT_WRITE %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
708
|
+
__char_default_pair_slot_%out_ok = stack_alloc 8
|
|
709
|
+
EXPAND CHAR_IS_VALID_SCALAR __char_default_valid_%out_ok, %code
|
|
710
|
+
br __char_default_valid_%out_ok -> L_CHAR_DEFAULT_CHECK_TAB_%out_ok, L_CHAR_DEFAULT_FAIL_%out_ok
|
|
711
|
+
|
|
712
|
+
L_CHAR_DEFAULT_CHECK_TAB_%out_ok:
|
|
713
|
+
__char_default_is_tab_%out_ok = eq %code, ASCII_TAB
|
|
714
|
+
br __char_default_is_tab_%out_ok -> L_CHAR_DEFAULT_TAB_%out_ok, L_CHAR_DEFAULT_CHECK_LF_%out_ok
|
|
715
|
+
|
|
716
|
+
L_CHAR_DEFAULT_CHECK_LF_%out_ok:
|
|
717
|
+
__char_default_is_lf_%out_ok = eq %code, ASCII_LF
|
|
718
|
+
br __char_default_is_lf_%out_ok -> L_CHAR_DEFAULT_LF_%out_ok, L_CHAR_DEFAULT_CHECK_CR_%out_ok
|
|
719
|
+
|
|
720
|
+
L_CHAR_DEFAULT_CHECK_CR_%out_ok:
|
|
721
|
+
__char_default_is_cr_%out_ok = eq %code, ASCII_CR
|
|
722
|
+
br __char_default_is_cr_%out_ok -> L_CHAR_DEFAULT_CR_%out_ok, L_CHAR_DEFAULT_CHECK_BACKSLASH_%out_ok
|
|
723
|
+
|
|
724
|
+
L_CHAR_DEFAULT_CHECK_BACKSLASH_%out_ok:
|
|
725
|
+
__char_default_is_backslash_%out_ok = eq %code, ASCII_BACKSLASH
|
|
726
|
+
br __char_default_is_backslash_%out_ok -> L_CHAR_DEFAULT_BACKSLASH_%out_ok, L_CHAR_DEFAULT_CHECK_SINGLE_%out_ok
|
|
727
|
+
|
|
728
|
+
L_CHAR_DEFAULT_CHECK_SINGLE_%out_ok:
|
|
729
|
+
__char_default_is_single_%out_ok = eq %code, ASCII_SINGLE_QUOTE
|
|
730
|
+
br __char_default_is_single_%out_ok -> L_CHAR_DEFAULT_SINGLE_%out_ok, L_CHAR_DEFAULT_CHECK_DOUBLE_%out_ok
|
|
731
|
+
|
|
732
|
+
L_CHAR_DEFAULT_CHECK_DOUBLE_%out_ok:
|
|
733
|
+
__char_default_is_double_%out_ok = eq %code, ASCII_DOUBLE_QUOTE
|
|
734
|
+
br __char_default_is_double_%out_ok -> L_CHAR_DEFAULT_DOUBLE_%out_ok, L_CHAR_DEFAULT_CHECK_PRINTABLE_%out_ok
|
|
735
|
+
|
|
736
|
+
L_CHAR_DEFAULT_CHECK_PRINTABLE_%out_ok:
|
|
737
|
+
__char_default_ge_space_%out_ok = uge %code, ASCII_SPACE
|
|
738
|
+
__char_default_le_tilde_%out_ok = ule %code, ASCII_GRAPHIC_MAX
|
|
739
|
+
__char_default_printable_%out_ok = and __char_default_ge_space_%out_ok, __char_default_le_tilde_%out_ok
|
|
740
|
+
br __char_default_printable_%out_ok -> L_CHAR_DEFAULT_RAW_%out_ok, L_CHAR_DEFAULT_UNICODE_%out_ok
|
|
741
|
+
|
|
742
|
+
L_CHAR_DEFAULT_TAB_%out_ok:
|
|
743
|
+
store __char_default_pair_slot_%out_ok+0, ASCII_ESCAPE_T as u8
|
|
744
|
+
!__char_default_is_tab_%out_ok
|
|
745
|
+
!__char_default_valid_%out_ok
|
|
746
|
+
jmp L_CHAR_DEFAULT_PAIR_%out_ok
|
|
747
|
+
|
|
748
|
+
L_CHAR_DEFAULT_LF_%out_ok:
|
|
749
|
+
store __char_default_pair_slot_%out_ok+0, ASCII_ESCAPE_N as u8
|
|
750
|
+
!__char_default_is_lf_%out_ok
|
|
751
|
+
!__char_default_is_tab_%out_ok
|
|
752
|
+
!__char_default_valid_%out_ok
|
|
753
|
+
jmp L_CHAR_DEFAULT_PAIR_%out_ok
|
|
754
|
+
|
|
755
|
+
L_CHAR_DEFAULT_CR_%out_ok:
|
|
756
|
+
store __char_default_pair_slot_%out_ok+0, ASCII_ESCAPE_R as u8
|
|
757
|
+
!__char_default_is_cr_%out_ok
|
|
758
|
+
!__char_default_is_lf_%out_ok
|
|
759
|
+
!__char_default_is_tab_%out_ok
|
|
760
|
+
!__char_default_valid_%out_ok
|
|
761
|
+
jmp L_CHAR_DEFAULT_PAIR_%out_ok
|
|
762
|
+
|
|
763
|
+
L_CHAR_DEFAULT_BACKSLASH_%out_ok:
|
|
764
|
+
store __char_default_pair_slot_%out_ok+0, ASCII_BACKSLASH as u8
|
|
765
|
+
!__char_default_is_backslash_%out_ok
|
|
766
|
+
!__char_default_is_cr_%out_ok
|
|
767
|
+
!__char_default_is_lf_%out_ok
|
|
768
|
+
!__char_default_is_tab_%out_ok
|
|
769
|
+
!__char_default_valid_%out_ok
|
|
770
|
+
jmp L_CHAR_DEFAULT_PAIR_%out_ok
|
|
771
|
+
|
|
772
|
+
L_CHAR_DEFAULT_SINGLE_%out_ok:
|
|
773
|
+
store __char_default_pair_slot_%out_ok+0, ASCII_SINGLE_QUOTE as u8
|
|
774
|
+
!__char_default_is_single_%out_ok
|
|
775
|
+
!__char_default_is_backslash_%out_ok
|
|
776
|
+
!__char_default_is_cr_%out_ok
|
|
777
|
+
!__char_default_is_lf_%out_ok
|
|
778
|
+
!__char_default_is_tab_%out_ok
|
|
779
|
+
!__char_default_valid_%out_ok
|
|
780
|
+
jmp L_CHAR_DEFAULT_PAIR_%out_ok
|
|
781
|
+
|
|
782
|
+
L_CHAR_DEFAULT_DOUBLE_%out_ok:
|
|
783
|
+
store __char_default_pair_slot_%out_ok+0, ASCII_DOUBLE_QUOTE as u8
|
|
784
|
+
!__char_default_is_double_%out_ok
|
|
785
|
+
!__char_default_is_single_%out_ok
|
|
786
|
+
!__char_default_is_backslash_%out_ok
|
|
787
|
+
!__char_default_is_cr_%out_ok
|
|
788
|
+
!__char_default_is_lf_%out_ok
|
|
789
|
+
!__char_default_is_tab_%out_ok
|
|
790
|
+
!__char_default_valid_%out_ok
|
|
791
|
+
jmp L_CHAR_DEFAULT_PAIR_%out_ok
|
|
792
|
+
|
|
793
|
+
L_CHAR_DEFAULT_PAIR_%out_ok:
|
|
794
|
+
__char_default_pair_byte_%out_ok = load __char_default_pair_slot_%out_ok+0 as u8
|
|
795
|
+
EXPAND ASCII_ESCAPE_DEFAULT_WRITE_PAIR %out_ok, %out_len, %dst_ptr, %dst_len, __char_default_pair_byte_%out_ok
|
|
796
|
+
!__char_default_pair_byte_%out_ok
|
|
797
|
+
jmp L_CHAR_DEFAULT_END_%out_ok
|
|
798
|
+
|
|
799
|
+
L_CHAR_DEFAULT_RAW_%out_ok:
|
|
800
|
+
__char_default_raw_fits_%out_ok = uge %dst_len, 1
|
|
801
|
+
br __char_default_raw_fits_%out_ok -> L_CHAR_DEFAULT_RAW_WRITE_%out_ok, L_CHAR_DEFAULT_RAW_FAIL_%out_ok
|
|
802
|
+
|
|
803
|
+
L_CHAR_DEFAULT_RAW_WRITE_%out_ok:
|
|
804
|
+
store %dst_ptr+0, %code as u8
|
|
805
|
+
%out_len = add 0, 1
|
|
806
|
+
%out_ok = add 0, 1
|
|
807
|
+
!__char_default_raw_fits_%out_ok
|
|
808
|
+
!__char_default_printable_%out_ok
|
|
809
|
+
!__char_default_le_tilde_%out_ok
|
|
810
|
+
!__char_default_ge_space_%out_ok
|
|
811
|
+
!__char_default_is_double_%out_ok
|
|
812
|
+
!__char_default_is_single_%out_ok
|
|
813
|
+
!__char_default_is_backslash_%out_ok
|
|
814
|
+
!__char_default_is_cr_%out_ok
|
|
815
|
+
!__char_default_is_lf_%out_ok
|
|
816
|
+
!__char_default_is_tab_%out_ok
|
|
817
|
+
!__char_default_valid_%out_ok
|
|
818
|
+
jmp L_CHAR_DEFAULT_END_%out_ok
|
|
819
|
+
|
|
820
|
+
L_CHAR_DEFAULT_RAW_FAIL_%out_ok:
|
|
821
|
+
%out_len = add 0, 0
|
|
822
|
+
%out_ok = add 0, 0
|
|
823
|
+
!__char_default_raw_fits_%out_ok
|
|
824
|
+
!__char_default_printable_%out_ok
|
|
825
|
+
!__char_default_le_tilde_%out_ok
|
|
826
|
+
!__char_default_ge_space_%out_ok
|
|
827
|
+
!__char_default_is_double_%out_ok
|
|
828
|
+
!__char_default_is_single_%out_ok
|
|
829
|
+
!__char_default_is_backslash_%out_ok
|
|
830
|
+
!__char_default_is_cr_%out_ok
|
|
831
|
+
!__char_default_is_lf_%out_ok
|
|
832
|
+
!__char_default_is_tab_%out_ok
|
|
833
|
+
!__char_default_valid_%out_ok
|
|
834
|
+
jmp L_CHAR_DEFAULT_END_%out_ok
|
|
835
|
+
|
|
836
|
+
L_CHAR_DEFAULT_UNICODE_%out_ok:
|
|
837
|
+
!__char_default_printable_%out_ok
|
|
838
|
+
!__char_default_le_tilde_%out_ok
|
|
839
|
+
!__char_default_ge_space_%out_ok
|
|
840
|
+
!__char_default_is_double_%out_ok
|
|
841
|
+
!__char_default_is_single_%out_ok
|
|
842
|
+
!__char_default_is_backslash_%out_ok
|
|
843
|
+
!__char_default_is_cr_%out_ok
|
|
844
|
+
!__char_default_is_lf_%out_ok
|
|
845
|
+
!__char_default_is_tab_%out_ok
|
|
846
|
+
!__char_default_valid_%out_ok
|
|
847
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
848
|
+
jmp L_CHAR_DEFAULT_END_%out_ok
|
|
849
|
+
|
|
850
|
+
L_CHAR_DEFAULT_FAIL_%out_ok:
|
|
851
|
+
%out_len = add 0, 0
|
|
852
|
+
%out_ok = add 0, 0
|
|
853
|
+
!__char_default_valid_%out_ok
|
|
854
|
+
|
|
855
|
+
L_CHAR_DEFAULT_END_%out_ok:
|
|
856
|
+
[END_MACRO]
|
|
857
|
+
|
|
858
|
+
[MACRO] CHAR_TRY_ENCODE_UTF8 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
859
|
+
EXPAND CHAR_IS_VALID_SCALAR __char_enc_valid_%out_ok, %code
|
|
860
|
+
EXPAND CHAR_LEN_UTF8 __char_enc_len_%out_ok, %code
|
|
861
|
+
__char_enc_fits_%out_ok = uge %dst_len, __char_enc_len_%out_ok
|
|
862
|
+
__char_enc_can_%out_ok = and __char_enc_valid_%out_ok, __char_enc_fits_%out_ok
|
|
863
|
+
br __char_enc_can_%out_ok -> L_CHAR_ENC_DISPATCH_%out_ok, L_CHAR_ENC_FAIL_%out_ok
|
|
864
|
+
|
|
865
|
+
L_CHAR_ENC_DISPATCH_%out_ok:
|
|
866
|
+
__char_enc_is_one_%out_ok = eq __char_enc_len_%out_ok, 1
|
|
867
|
+
br __char_enc_is_one_%out_ok -> L_CHAR_ENC_ONE_%out_ok, L_CHAR_ENC_CHECK_TWO_%out_ok
|
|
868
|
+
|
|
869
|
+
L_CHAR_ENC_CHECK_TWO_%out_ok:
|
|
870
|
+
__char_enc_is_two_%out_ok = eq __char_enc_len_%out_ok, 2
|
|
871
|
+
br __char_enc_is_two_%out_ok -> L_CHAR_ENC_TWO_%out_ok, L_CHAR_ENC_CHECK_THREE_%out_ok
|
|
872
|
+
|
|
873
|
+
L_CHAR_ENC_CHECK_THREE_%out_ok:
|
|
874
|
+
__char_enc_is_three_%out_ok = eq __char_enc_len_%out_ok, 3
|
|
875
|
+
br __char_enc_is_three_%out_ok -> L_CHAR_ENC_THREE_%out_ok, L_CHAR_ENC_FOUR_%out_ok
|
|
876
|
+
|
|
877
|
+
L_CHAR_ENC_ONE_%out_ok:
|
|
878
|
+
store %dst_ptr+0, %code as u8
|
|
879
|
+
%out_len = add 0, 1
|
|
880
|
+
%out_ok = add 0, 1
|
|
881
|
+
!__char_enc_is_one_%out_ok
|
|
882
|
+
!__char_enc_can_%out_ok
|
|
883
|
+
!__char_enc_fits_%out_ok
|
|
884
|
+
!__char_enc_len_%out_ok
|
|
885
|
+
!__char_enc_valid_%out_ok
|
|
886
|
+
jmp L_CHAR_ENC_END_%out_ok
|
|
887
|
+
|
|
888
|
+
L_CHAR_ENC_TWO_%out_ok:
|
|
889
|
+
__char_enc_two_tail_raw_%out_ok = and %code, CHAR_UTF8_CONT_MASK
|
|
890
|
+
__char_enc_two_tail_%out_ok = or __char_enc_two_tail_raw_%out_ok, CHAR_UTF8_CONT_TAG
|
|
891
|
+
__char_enc_two_head_raw_%out_ok = shr %code, 6
|
|
892
|
+
__char_enc_two_head_%out_ok = or __char_enc_two_head_raw_%out_ok, CHAR_UTF8_TWO_TAG
|
|
893
|
+
store %dst_ptr+0, __char_enc_two_head_%out_ok as u8
|
|
894
|
+
__char_enc_two_p1_%out_ok = ptr_add %dst_ptr, 1
|
|
895
|
+
store __char_enc_two_p1_%out_ok+0, __char_enc_two_tail_%out_ok as u8
|
|
896
|
+
%out_len = add 0, 2
|
|
897
|
+
%out_ok = add 0, 1
|
|
898
|
+
!__char_enc_two_p1_%out_ok
|
|
899
|
+
!__char_enc_two_head_%out_ok
|
|
900
|
+
!__char_enc_two_head_raw_%out_ok
|
|
901
|
+
!__char_enc_two_tail_%out_ok
|
|
902
|
+
!__char_enc_two_tail_raw_%out_ok
|
|
903
|
+
!__char_enc_is_two_%out_ok
|
|
904
|
+
!__char_enc_is_one_%out_ok
|
|
905
|
+
!__char_enc_can_%out_ok
|
|
906
|
+
!__char_enc_fits_%out_ok
|
|
907
|
+
!__char_enc_len_%out_ok
|
|
908
|
+
!__char_enc_valid_%out_ok
|
|
909
|
+
jmp L_CHAR_ENC_END_%out_ok
|
|
910
|
+
|
|
911
|
+
L_CHAR_ENC_THREE_%out_ok:
|
|
912
|
+
__char_enc_three_tail1_raw_%out_ok = and %code, CHAR_UTF8_CONT_MASK
|
|
913
|
+
__char_enc_three_tail1_%out_ok = or __char_enc_three_tail1_raw_%out_ok, CHAR_UTF8_CONT_TAG
|
|
914
|
+
__char_enc_three_mid_source_%out_ok = shr %code, 6
|
|
915
|
+
__char_enc_three_tail2_raw_%out_ok = and __char_enc_three_mid_source_%out_ok, CHAR_UTF8_CONT_MASK
|
|
916
|
+
__char_enc_three_tail2_%out_ok = or __char_enc_three_tail2_raw_%out_ok, CHAR_UTF8_CONT_TAG
|
|
917
|
+
__char_enc_three_head_raw_%out_ok = shr %code, 12
|
|
918
|
+
__char_enc_three_head_%out_ok = or __char_enc_three_head_raw_%out_ok, CHAR_UTF8_THREE_TAG
|
|
919
|
+
store %dst_ptr+0, __char_enc_three_head_%out_ok as u8
|
|
920
|
+
__char_enc_three_p1_%out_ok = ptr_add %dst_ptr, 1
|
|
921
|
+
__char_enc_three_p2_%out_ok = ptr_add %dst_ptr, 2
|
|
922
|
+
store __char_enc_three_p1_%out_ok+0, __char_enc_three_tail2_%out_ok as u8
|
|
923
|
+
store __char_enc_three_p2_%out_ok+0, __char_enc_three_tail1_%out_ok as u8
|
|
924
|
+
%out_len = add 0, 3
|
|
925
|
+
%out_ok = add 0, 1
|
|
926
|
+
!__char_enc_three_p2_%out_ok
|
|
927
|
+
!__char_enc_three_p1_%out_ok
|
|
928
|
+
!__char_enc_three_head_%out_ok
|
|
929
|
+
!__char_enc_three_head_raw_%out_ok
|
|
930
|
+
!__char_enc_three_tail2_%out_ok
|
|
931
|
+
!__char_enc_three_tail2_raw_%out_ok
|
|
932
|
+
!__char_enc_three_mid_source_%out_ok
|
|
933
|
+
!__char_enc_three_tail1_%out_ok
|
|
934
|
+
!__char_enc_three_tail1_raw_%out_ok
|
|
935
|
+
!__char_enc_is_three_%out_ok
|
|
936
|
+
!__char_enc_is_two_%out_ok
|
|
937
|
+
!__char_enc_is_one_%out_ok
|
|
938
|
+
!__char_enc_can_%out_ok
|
|
939
|
+
!__char_enc_fits_%out_ok
|
|
940
|
+
!__char_enc_len_%out_ok
|
|
941
|
+
!__char_enc_valid_%out_ok
|
|
942
|
+
jmp L_CHAR_ENC_END_%out_ok
|
|
943
|
+
|
|
944
|
+
L_CHAR_ENC_FOUR_%out_ok:
|
|
945
|
+
__char_enc_four_tail1_raw_%out_ok = and %code, CHAR_UTF8_CONT_MASK
|
|
946
|
+
__char_enc_four_tail1_%out_ok = or __char_enc_four_tail1_raw_%out_ok, CHAR_UTF8_CONT_TAG
|
|
947
|
+
__char_enc_four_s6_%out_ok = shr %code, 6
|
|
948
|
+
__char_enc_four_tail2_raw_%out_ok = and __char_enc_four_s6_%out_ok, CHAR_UTF8_CONT_MASK
|
|
949
|
+
__char_enc_four_tail2_%out_ok = or __char_enc_four_tail2_raw_%out_ok, CHAR_UTF8_CONT_TAG
|
|
950
|
+
__char_enc_four_s12_%out_ok = shr %code, 12
|
|
951
|
+
__char_enc_four_tail3_raw_%out_ok = and __char_enc_four_s12_%out_ok, CHAR_UTF8_CONT_MASK
|
|
952
|
+
__char_enc_four_tail3_%out_ok = or __char_enc_four_tail3_raw_%out_ok, CHAR_UTF8_CONT_TAG
|
|
953
|
+
__char_enc_four_head_raw_%out_ok = shr %code, 18
|
|
954
|
+
__char_enc_four_head_%out_ok = or __char_enc_four_head_raw_%out_ok, CHAR_UTF8_FOUR_TAG
|
|
955
|
+
store %dst_ptr+0, __char_enc_four_head_%out_ok as u8
|
|
956
|
+
__char_enc_four_p1_%out_ok = ptr_add %dst_ptr, 1
|
|
957
|
+
__char_enc_four_p2_%out_ok = ptr_add %dst_ptr, 2
|
|
958
|
+
__char_enc_four_p3_%out_ok = ptr_add %dst_ptr, 3
|
|
959
|
+
store __char_enc_four_p1_%out_ok+0, __char_enc_four_tail3_%out_ok as u8
|
|
960
|
+
store __char_enc_four_p2_%out_ok+0, __char_enc_four_tail2_%out_ok as u8
|
|
961
|
+
store __char_enc_four_p3_%out_ok+0, __char_enc_four_tail1_%out_ok as u8
|
|
962
|
+
%out_len = add 0, 4
|
|
963
|
+
%out_ok = add 0, 1
|
|
964
|
+
!__char_enc_four_p3_%out_ok
|
|
965
|
+
!__char_enc_four_p2_%out_ok
|
|
966
|
+
!__char_enc_four_p1_%out_ok
|
|
967
|
+
!__char_enc_four_head_%out_ok
|
|
968
|
+
!__char_enc_four_head_raw_%out_ok
|
|
969
|
+
!__char_enc_four_tail3_%out_ok
|
|
970
|
+
!__char_enc_four_tail3_raw_%out_ok
|
|
971
|
+
!__char_enc_four_s12_%out_ok
|
|
972
|
+
!__char_enc_four_tail2_%out_ok
|
|
973
|
+
!__char_enc_four_tail2_raw_%out_ok
|
|
974
|
+
!__char_enc_four_s6_%out_ok
|
|
975
|
+
!__char_enc_four_tail1_%out_ok
|
|
976
|
+
!__char_enc_four_tail1_raw_%out_ok
|
|
977
|
+
!__char_enc_is_three_%out_ok
|
|
978
|
+
!__char_enc_is_two_%out_ok
|
|
979
|
+
!__char_enc_is_one_%out_ok
|
|
980
|
+
!__char_enc_can_%out_ok
|
|
981
|
+
!__char_enc_fits_%out_ok
|
|
982
|
+
!__char_enc_len_%out_ok
|
|
983
|
+
!__char_enc_valid_%out_ok
|
|
984
|
+
jmp L_CHAR_ENC_END_%out_ok
|
|
985
|
+
|
|
986
|
+
L_CHAR_ENC_FAIL_%out_ok:
|
|
987
|
+
%out_len = add 0, 0
|
|
988
|
+
%out_ok = add 0, 0
|
|
989
|
+
!__char_enc_can_%out_ok
|
|
990
|
+
!__char_enc_fits_%out_ok
|
|
991
|
+
!__char_enc_len_%out_ok
|
|
992
|
+
!__char_enc_valid_%out_ok
|
|
993
|
+
|
|
994
|
+
L_CHAR_ENC_END_%out_ok:
|
|
995
|
+
[END_MACRO]
|
|
996
|
+
|
|
997
|
+
// Rust method-name alias over CHAR_TRY_ENCODE_UTF8.
|
|
998
|
+
[MACRO] CHAR_ENCODE_UTF8 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
999
|
+
EXPAND CHAR_TRY_ENCODE_UTF8 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1000
|
+
[END_MACRO]
|
|
1001
|
+
|
|
1002
|
+
[MACRO] CHAR_ESCAPE_DEBUG_WRITE %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1003
|
+
__char_debug_pair_slot_%out_ok = stack_alloc 8
|
|
1004
|
+
EXPAND CHAR_IS_VALID_SCALAR __char_debug_valid_%out_ok, %code
|
|
1005
|
+
br __char_debug_valid_%out_ok -> L_CHAR_DEBUG_CHECK_TAB_%out_ok, L_CHAR_DEBUG_FAIL_%out_ok
|
|
1006
|
+
|
|
1007
|
+
L_CHAR_DEBUG_CHECK_TAB_%out_ok:
|
|
1008
|
+
__char_debug_is_tab_%out_ok = eq %code, ASCII_TAB
|
|
1009
|
+
br __char_debug_is_tab_%out_ok -> L_CHAR_DEBUG_TAB_%out_ok, L_CHAR_DEBUG_CHECK_LF_%out_ok
|
|
1010
|
+
|
|
1011
|
+
L_CHAR_DEBUG_CHECK_LF_%out_ok:
|
|
1012
|
+
__char_debug_is_lf_%out_ok = eq %code, ASCII_LF
|
|
1013
|
+
br __char_debug_is_lf_%out_ok -> L_CHAR_DEBUG_LF_%out_ok, L_CHAR_DEBUG_CHECK_CR_%out_ok
|
|
1014
|
+
|
|
1015
|
+
L_CHAR_DEBUG_CHECK_CR_%out_ok:
|
|
1016
|
+
__char_debug_is_cr_%out_ok = eq %code, ASCII_CR
|
|
1017
|
+
br __char_debug_is_cr_%out_ok -> L_CHAR_DEBUG_CR_%out_ok, L_CHAR_DEBUG_CHECK_BACKSLASH_%out_ok
|
|
1018
|
+
|
|
1019
|
+
L_CHAR_DEBUG_CHECK_BACKSLASH_%out_ok:
|
|
1020
|
+
__char_debug_is_backslash_%out_ok = eq %code, ASCII_BACKSLASH
|
|
1021
|
+
br __char_debug_is_backslash_%out_ok -> L_CHAR_DEBUG_BACKSLASH_%out_ok, L_CHAR_DEBUG_CHECK_SINGLE_%out_ok
|
|
1022
|
+
|
|
1023
|
+
L_CHAR_DEBUG_CHECK_SINGLE_%out_ok:
|
|
1024
|
+
__char_debug_is_single_%out_ok = eq %code, ASCII_SINGLE_QUOTE
|
|
1025
|
+
br __char_debug_is_single_%out_ok -> L_CHAR_DEBUG_SINGLE_%out_ok, L_CHAR_DEBUG_CHECK_DOUBLE_%out_ok
|
|
1026
|
+
|
|
1027
|
+
L_CHAR_DEBUG_CHECK_DOUBLE_%out_ok:
|
|
1028
|
+
__char_debug_is_double_%out_ok = eq %code, ASCII_DOUBLE_QUOTE
|
|
1029
|
+
br __char_debug_is_double_%out_ok -> L_CHAR_DEBUG_DOUBLE_%out_ok, L_CHAR_DEBUG_CHECK_ASCII_PRINTABLE_%out_ok
|
|
1030
|
+
|
|
1031
|
+
L_CHAR_DEBUG_CHECK_ASCII_PRINTABLE_%out_ok:
|
|
1032
|
+
__char_debug_ge_space_%out_ok = uge %code, ASCII_SPACE
|
|
1033
|
+
__char_debug_le_tilde_%out_ok = ule %code, ASCII_GRAPHIC_MAX
|
|
1034
|
+
__char_debug_ascii_printable_%out_ok = and __char_debug_ge_space_%out_ok, __char_debug_le_tilde_%out_ok
|
|
1035
|
+
br __char_debug_ascii_printable_%out_ok -> L_CHAR_DEBUG_ASCII_RAW_%out_ok, L_CHAR_DEBUG_CHECK_UNICODE_PRINTABLE_%out_ok
|
|
1036
|
+
|
|
1037
|
+
L_CHAR_DEBUG_CHECK_UNICODE_PRINTABLE_%out_ok:
|
|
1038
|
+
__char_debug_is_ascii_%out_ok = ule %code, 127
|
|
1039
|
+
br __char_debug_is_ascii_%out_ok -> L_CHAR_DEBUG_UNICODE_%out_ok, L_CHAR_DEBUG_UNICODE_RAW_%out_ok
|
|
1040
|
+
|
|
1041
|
+
L_CHAR_DEBUG_TAB_%out_ok:
|
|
1042
|
+
store __char_debug_pair_slot_%out_ok+0, ASCII_ESCAPE_T as u8
|
|
1043
|
+
!__char_debug_is_tab_%out_ok
|
|
1044
|
+
!__char_debug_valid_%out_ok
|
|
1045
|
+
jmp L_CHAR_DEBUG_PAIR_%out_ok
|
|
1046
|
+
|
|
1047
|
+
L_CHAR_DEBUG_LF_%out_ok:
|
|
1048
|
+
store __char_debug_pair_slot_%out_ok+0, ASCII_ESCAPE_N as u8
|
|
1049
|
+
!__char_debug_is_lf_%out_ok
|
|
1050
|
+
!__char_debug_is_tab_%out_ok
|
|
1051
|
+
!__char_debug_valid_%out_ok
|
|
1052
|
+
jmp L_CHAR_DEBUG_PAIR_%out_ok
|
|
1053
|
+
|
|
1054
|
+
L_CHAR_DEBUG_CR_%out_ok:
|
|
1055
|
+
store __char_debug_pair_slot_%out_ok+0, ASCII_ESCAPE_R as u8
|
|
1056
|
+
!__char_debug_is_cr_%out_ok
|
|
1057
|
+
!__char_debug_is_lf_%out_ok
|
|
1058
|
+
!__char_debug_is_tab_%out_ok
|
|
1059
|
+
!__char_debug_valid_%out_ok
|
|
1060
|
+
jmp L_CHAR_DEBUG_PAIR_%out_ok
|
|
1061
|
+
|
|
1062
|
+
L_CHAR_DEBUG_BACKSLASH_%out_ok:
|
|
1063
|
+
store __char_debug_pair_slot_%out_ok+0, ASCII_BACKSLASH as u8
|
|
1064
|
+
!__char_debug_is_backslash_%out_ok
|
|
1065
|
+
!__char_debug_is_cr_%out_ok
|
|
1066
|
+
!__char_debug_is_lf_%out_ok
|
|
1067
|
+
!__char_debug_is_tab_%out_ok
|
|
1068
|
+
!__char_debug_valid_%out_ok
|
|
1069
|
+
jmp L_CHAR_DEBUG_PAIR_%out_ok
|
|
1070
|
+
|
|
1071
|
+
L_CHAR_DEBUG_SINGLE_%out_ok:
|
|
1072
|
+
store __char_debug_pair_slot_%out_ok+0, ASCII_SINGLE_QUOTE as u8
|
|
1073
|
+
!__char_debug_is_single_%out_ok
|
|
1074
|
+
!__char_debug_is_backslash_%out_ok
|
|
1075
|
+
!__char_debug_is_cr_%out_ok
|
|
1076
|
+
!__char_debug_is_lf_%out_ok
|
|
1077
|
+
!__char_debug_is_tab_%out_ok
|
|
1078
|
+
!__char_debug_valid_%out_ok
|
|
1079
|
+
jmp L_CHAR_DEBUG_PAIR_%out_ok
|
|
1080
|
+
|
|
1081
|
+
L_CHAR_DEBUG_DOUBLE_%out_ok:
|
|
1082
|
+
store __char_debug_pair_slot_%out_ok+0, ASCII_DOUBLE_QUOTE as u8
|
|
1083
|
+
!__char_debug_is_double_%out_ok
|
|
1084
|
+
!__char_debug_is_single_%out_ok
|
|
1085
|
+
!__char_debug_is_backslash_%out_ok
|
|
1086
|
+
!__char_debug_is_cr_%out_ok
|
|
1087
|
+
!__char_debug_is_lf_%out_ok
|
|
1088
|
+
!__char_debug_is_tab_%out_ok
|
|
1089
|
+
!__char_debug_valid_%out_ok
|
|
1090
|
+
jmp L_CHAR_DEBUG_PAIR_%out_ok
|
|
1091
|
+
|
|
1092
|
+
L_CHAR_DEBUG_PAIR_%out_ok:
|
|
1093
|
+
__char_debug_pair_byte_%out_ok = load __char_debug_pair_slot_%out_ok+0 as u8
|
|
1094
|
+
EXPAND ASCII_ESCAPE_DEFAULT_WRITE_PAIR %out_ok, %out_len, %dst_ptr, %dst_len, __char_debug_pair_byte_%out_ok
|
|
1095
|
+
!__char_debug_pair_byte_%out_ok
|
|
1096
|
+
jmp L_CHAR_DEBUG_END_%out_ok
|
|
1097
|
+
|
|
1098
|
+
L_CHAR_DEBUG_ASCII_RAW_%out_ok:
|
|
1099
|
+
__char_debug_raw_fits_%out_ok = uge %dst_len, 1
|
|
1100
|
+
br __char_debug_raw_fits_%out_ok -> L_CHAR_DEBUG_ASCII_RAW_WRITE_%out_ok, L_CHAR_DEBUG_ASCII_RAW_FAIL_%out_ok
|
|
1101
|
+
|
|
1102
|
+
L_CHAR_DEBUG_ASCII_RAW_WRITE_%out_ok:
|
|
1103
|
+
store %dst_ptr+0, %code as u8
|
|
1104
|
+
%out_len = add 0, 1
|
|
1105
|
+
%out_ok = add 0, 1
|
|
1106
|
+
!__char_debug_raw_fits_%out_ok
|
|
1107
|
+
!__char_debug_ascii_printable_%out_ok
|
|
1108
|
+
!__char_debug_le_tilde_%out_ok
|
|
1109
|
+
!__char_debug_ge_space_%out_ok
|
|
1110
|
+
!__char_debug_is_double_%out_ok
|
|
1111
|
+
!__char_debug_is_single_%out_ok
|
|
1112
|
+
!__char_debug_is_backslash_%out_ok
|
|
1113
|
+
!__char_debug_is_cr_%out_ok
|
|
1114
|
+
!__char_debug_is_lf_%out_ok
|
|
1115
|
+
!__char_debug_is_tab_%out_ok
|
|
1116
|
+
!__char_debug_valid_%out_ok
|
|
1117
|
+
jmp L_CHAR_DEBUG_END_%out_ok
|
|
1118
|
+
|
|
1119
|
+
L_CHAR_DEBUG_ASCII_RAW_FAIL_%out_ok:
|
|
1120
|
+
%out_len = add 0, 0
|
|
1121
|
+
%out_ok = add 0, 0
|
|
1122
|
+
!__char_debug_raw_fits_%out_ok
|
|
1123
|
+
!__char_debug_ascii_printable_%out_ok
|
|
1124
|
+
!__char_debug_le_tilde_%out_ok
|
|
1125
|
+
!__char_debug_ge_space_%out_ok
|
|
1126
|
+
!__char_debug_is_double_%out_ok
|
|
1127
|
+
!__char_debug_is_single_%out_ok
|
|
1128
|
+
!__char_debug_is_backslash_%out_ok
|
|
1129
|
+
!__char_debug_is_cr_%out_ok
|
|
1130
|
+
!__char_debug_is_lf_%out_ok
|
|
1131
|
+
!__char_debug_is_tab_%out_ok
|
|
1132
|
+
!__char_debug_valid_%out_ok
|
|
1133
|
+
jmp L_CHAR_DEBUG_END_%out_ok
|
|
1134
|
+
|
|
1135
|
+
L_CHAR_DEBUG_UNICODE_RAW_%out_ok:
|
|
1136
|
+
!__char_debug_is_ascii_%out_ok
|
|
1137
|
+
!__char_debug_ascii_printable_%out_ok
|
|
1138
|
+
!__char_debug_le_tilde_%out_ok
|
|
1139
|
+
!__char_debug_ge_space_%out_ok
|
|
1140
|
+
!__char_debug_is_double_%out_ok
|
|
1141
|
+
!__char_debug_is_single_%out_ok
|
|
1142
|
+
!__char_debug_is_backslash_%out_ok
|
|
1143
|
+
!__char_debug_is_cr_%out_ok
|
|
1144
|
+
!__char_debug_is_lf_%out_ok
|
|
1145
|
+
!__char_debug_is_tab_%out_ok
|
|
1146
|
+
!__char_debug_valid_%out_ok
|
|
1147
|
+
EXPAND CHAR_TRY_ENCODE_UTF8 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1148
|
+
jmp L_CHAR_DEBUG_END_%out_ok
|
|
1149
|
+
|
|
1150
|
+
L_CHAR_DEBUG_UNICODE_%out_ok:
|
|
1151
|
+
!__char_debug_is_ascii_%out_ok
|
|
1152
|
+
!__char_debug_ascii_printable_%out_ok
|
|
1153
|
+
!__char_debug_le_tilde_%out_ok
|
|
1154
|
+
!__char_debug_ge_space_%out_ok
|
|
1155
|
+
!__char_debug_is_double_%out_ok
|
|
1156
|
+
!__char_debug_is_single_%out_ok
|
|
1157
|
+
!__char_debug_is_backslash_%out_ok
|
|
1158
|
+
!__char_debug_is_cr_%out_ok
|
|
1159
|
+
!__char_debug_is_lf_%out_ok
|
|
1160
|
+
!__char_debug_is_tab_%out_ok
|
|
1161
|
+
!__char_debug_valid_%out_ok
|
|
1162
|
+
EXPAND CHAR_ESCAPE_UNICODE_WRITE %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1163
|
+
jmp L_CHAR_DEBUG_END_%out_ok
|
|
1164
|
+
|
|
1165
|
+
L_CHAR_DEBUG_FAIL_%out_ok:
|
|
1166
|
+
%out_len = add 0, 0
|
|
1167
|
+
%out_ok = add 0, 0
|
|
1168
|
+
!__char_debug_valid_%out_ok
|
|
1169
|
+
|
|
1170
|
+
L_CHAR_DEBUG_END_%out_ok:
|
|
1171
|
+
[END_MACRO]
|
|
1172
|
+
|
|
1173
|
+
[MACRO] CHAR_TRY_ENCODE_UTF16 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1174
|
+
EXPAND CHAR_IS_VALID_SCALAR __char_enc16_valid_%out_ok, %code
|
|
1175
|
+
EXPAND CHAR_LEN_UTF16 __char_enc16_len_%out_ok, %code
|
|
1176
|
+
__char_enc16_fits_%out_ok = uge %dst_len, __char_enc16_len_%out_ok
|
|
1177
|
+
__char_enc16_can_%out_ok = and __char_enc16_valid_%out_ok, __char_enc16_fits_%out_ok
|
|
1178
|
+
br __char_enc16_can_%out_ok -> L_CHAR_ENC16_DISPATCH_%out_ok, L_CHAR_ENC16_FAIL_%out_ok
|
|
1179
|
+
|
|
1180
|
+
L_CHAR_ENC16_DISPATCH_%out_ok:
|
|
1181
|
+
__char_enc16_one_%out_ok = eq __char_enc16_len_%out_ok, 1
|
|
1182
|
+
br __char_enc16_one_%out_ok -> L_CHAR_ENC16_ONE_%out_ok, L_CHAR_ENC16_PAIR_%out_ok
|
|
1183
|
+
|
|
1184
|
+
L_CHAR_ENC16_ONE_%out_ok:
|
|
1185
|
+
store %dst_ptr+0, %code as u16
|
|
1186
|
+
%out_len = add 0, 1
|
|
1187
|
+
%out_ok = add 0, 1
|
|
1188
|
+
!__char_enc16_one_%out_ok
|
|
1189
|
+
!__char_enc16_can_%out_ok
|
|
1190
|
+
!__char_enc16_fits_%out_ok
|
|
1191
|
+
!__char_enc16_len_%out_ok
|
|
1192
|
+
!__char_enc16_valid_%out_ok
|
|
1193
|
+
jmp L_CHAR_ENC16_END_%out_ok
|
|
1194
|
+
|
|
1195
|
+
L_CHAR_ENC16_PAIR_%out_ok:
|
|
1196
|
+
__char_enc16_shifted_%out_ok = sub %code, CHAR_UTF16_SUPPLEMENTARY_BASE
|
|
1197
|
+
__char_enc16_high_bits_%out_ok = shr __char_enc16_shifted_%out_ok, 10
|
|
1198
|
+
__char_enc16_high_%out_ok = add __char_enc16_high_bits_%out_ok, CHAR_UTF16_HIGH_SURROGATE_MIN
|
|
1199
|
+
__char_enc16_low_bits_%out_ok = and __char_enc16_shifted_%out_ok, CHAR_UTF16_TRAIL_MASK
|
|
1200
|
+
__char_enc16_low_%out_ok = add __char_enc16_low_bits_%out_ok, CHAR_UTF16_LOW_SURROGATE_MIN
|
|
1201
|
+
store %dst_ptr+0, __char_enc16_high_%out_ok as u16
|
|
1202
|
+
__char_enc16_p1_%out_ok = ptr_add %dst_ptr, 2
|
|
1203
|
+
store __char_enc16_p1_%out_ok+0, __char_enc16_low_%out_ok as u16
|
|
1204
|
+
%out_len = add 0, 2
|
|
1205
|
+
%out_ok = add 0, 1
|
|
1206
|
+
!__char_enc16_p1_%out_ok
|
|
1207
|
+
!__char_enc16_low_%out_ok
|
|
1208
|
+
!__char_enc16_low_bits_%out_ok
|
|
1209
|
+
!__char_enc16_high_%out_ok
|
|
1210
|
+
!__char_enc16_high_bits_%out_ok
|
|
1211
|
+
!__char_enc16_shifted_%out_ok
|
|
1212
|
+
!__char_enc16_one_%out_ok
|
|
1213
|
+
!__char_enc16_can_%out_ok
|
|
1214
|
+
!__char_enc16_fits_%out_ok
|
|
1215
|
+
!__char_enc16_len_%out_ok
|
|
1216
|
+
!__char_enc16_valid_%out_ok
|
|
1217
|
+
jmp L_CHAR_ENC16_END_%out_ok
|
|
1218
|
+
|
|
1219
|
+
L_CHAR_ENC16_FAIL_%out_ok:
|
|
1220
|
+
%out_len = add 0, 0
|
|
1221
|
+
%out_ok = add 0, 0
|
|
1222
|
+
!__char_enc16_can_%out_ok
|
|
1223
|
+
!__char_enc16_fits_%out_ok
|
|
1224
|
+
!__char_enc16_len_%out_ok
|
|
1225
|
+
!__char_enc16_valid_%out_ok
|
|
1226
|
+
|
|
1227
|
+
L_CHAR_ENC16_END_%out_ok:
|
|
1228
|
+
[END_MACRO]
|
|
1229
|
+
|
|
1230
|
+
// Rust method-name alias over CHAR_TRY_ENCODE_UTF16.
|
|
1231
|
+
[MACRO] CHAR_ENCODE_UTF16 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1232
|
+
EXPAND CHAR_TRY_ENCODE_UTF16 %out_ok, %out_len, %dst_ptr, %dst_len, %code
|
|
1233
|
+
[END_MACRO]
|
|
1234
|
+
|
|
1235
|
+
[MACRO] CHAR_DECODE_UTF16_UNIT %out_ok, %out_char, %out_units, %lead, %trail
|
|
1236
|
+
__char_dec16_high_ge_%out_ok = uge %lead, CHAR_UTF16_HIGH_SURROGATE_MIN
|
|
1237
|
+
__char_dec16_high_le_%out_ok = ule %lead, CHAR_UTF16_HIGH_SURROGATE_MAX
|
|
1238
|
+
__char_dec16_is_high_%out_ok = and __char_dec16_high_ge_%out_ok, __char_dec16_high_le_%out_ok
|
|
1239
|
+
br __char_dec16_is_high_%out_ok -> L_CHAR_DEC16_HIGH_%out_ok, L_CHAR_DEC16_NOT_HIGH_%out_ok
|
|
1240
|
+
|
|
1241
|
+
L_CHAR_DEC16_NOT_HIGH_%out_ok:
|
|
1242
|
+
__char_dec16_low_ge_alone_%out_ok = uge %lead, CHAR_UTF16_LOW_SURROGATE_MIN
|
|
1243
|
+
__char_dec16_low_le_alone_%out_ok = ule %lead, CHAR_UTF16_LOW_SURROGATE_MAX
|
|
1244
|
+
__char_dec16_is_low_alone_%out_ok = and __char_dec16_low_ge_alone_%out_ok, __char_dec16_low_le_alone_%out_ok
|
|
1245
|
+
br __char_dec16_is_low_alone_%out_ok -> L_CHAR_DEC16_ERR_LOW_%out_ok, L_CHAR_DEC16_BMP_%out_ok
|
|
1246
|
+
|
|
1247
|
+
L_CHAR_DEC16_BMP_%out_ok:
|
|
1248
|
+
%out_char = add %lead, 0
|
|
1249
|
+
%out_units = add 0, 1
|
|
1250
|
+
%out_ok = add 0, 1
|
|
1251
|
+
!__char_dec16_is_low_alone_%out_ok
|
|
1252
|
+
!__char_dec16_low_le_alone_%out_ok
|
|
1253
|
+
!__char_dec16_low_ge_alone_%out_ok
|
|
1254
|
+
!__char_dec16_is_high_%out_ok
|
|
1255
|
+
!__char_dec16_high_le_%out_ok
|
|
1256
|
+
!__char_dec16_high_ge_%out_ok
|
|
1257
|
+
jmp L_CHAR_DEC16_END_%out_ok
|
|
1258
|
+
|
|
1259
|
+
L_CHAR_DEC16_ERR_LOW_%out_ok:
|
|
1260
|
+
%out_char = add 0, 0
|
|
1261
|
+
%out_units = add 0, 1
|
|
1262
|
+
%out_ok = add 0, 0
|
|
1263
|
+
!__char_dec16_is_low_alone_%out_ok
|
|
1264
|
+
!__char_dec16_low_le_alone_%out_ok
|
|
1265
|
+
!__char_dec16_low_ge_alone_%out_ok
|
|
1266
|
+
!__char_dec16_is_high_%out_ok
|
|
1267
|
+
!__char_dec16_high_le_%out_ok
|
|
1268
|
+
!__char_dec16_high_ge_%out_ok
|
|
1269
|
+
jmp L_CHAR_DEC16_END_%out_ok
|
|
1270
|
+
|
|
1271
|
+
L_CHAR_DEC16_HIGH_%out_ok:
|
|
1272
|
+
__char_dec16_trail_ge_%out_ok = uge %trail, CHAR_UTF16_LOW_SURROGATE_MIN
|
|
1273
|
+
__char_dec16_trail_le_%out_ok = ule %trail, CHAR_UTF16_LOW_SURROGATE_MAX
|
|
1274
|
+
__char_dec16_trail_ok_%out_ok = and __char_dec16_trail_ge_%out_ok, __char_dec16_trail_le_%out_ok
|
|
1275
|
+
br __char_dec16_trail_ok_%out_ok -> L_CHAR_DEC16_PAIR_%out_ok, L_CHAR_DEC16_ERR_HIGH_%out_ok
|
|
1276
|
+
|
|
1277
|
+
L_CHAR_DEC16_PAIR_%out_ok:
|
|
1278
|
+
__char_dec16_high_part_%out_ok = sub %lead, CHAR_UTF16_HIGH_SURROGATE_MIN
|
|
1279
|
+
__char_dec16_high_shift_%out_ok = shl __char_dec16_high_part_%out_ok, 10
|
|
1280
|
+
__char_dec16_low_part_%out_ok = sub %trail, CHAR_UTF16_LOW_SURROGATE_MIN
|
|
1281
|
+
__char_dec16_pair_payload_%out_ok = or __char_dec16_high_shift_%out_ok, __char_dec16_low_part_%out_ok
|
|
1282
|
+
%out_char = add __char_dec16_pair_payload_%out_ok, CHAR_UTF16_SUPPLEMENTARY_BASE
|
|
1283
|
+
%out_units = add 0, 2
|
|
1284
|
+
%out_ok = add 0, 1
|
|
1285
|
+
!__char_dec16_pair_payload_%out_ok
|
|
1286
|
+
!__char_dec16_low_part_%out_ok
|
|
1287
|
+
!__char_dec16_high_shift_%out_ok
|
|
1288
|
+
!__char_dec16_high_part_%out_ok
|
|
1289
|
+
!__char_dec16_trail_ok_%out_ok
|
|
1290
|
+
!__char_dec16_trail_le_%out_ok
|
|
1291
|
+
!__char_dec16_trail_ge_%out_ok
|
|
1292
|
+
!__char_dec16_is_high_%out_ok
|
|
1293
|
+
!__char_dec16_high_le_%out_ok
|
|
1294
|
+
!__char_dec16_high_ge_%out_ok
|
|
1295
|
+
jmp L_CHAR_DEC16_END_%out_ok
|
|
1296
|
+
|
|
1297
|
+
L_CHAR_DEC16_ERR_HIGH_%out_ok:
|
|
1298
|
+
%out_char = add 0, 0
|
|
1299
|
+
%out_units = add 0, 1
|
|
1300
|
+
%out_ok = add 0, 0
|
|
1301
|
+
!__char_dec16_trail_ok_%out_ok
|
|
1302
|
+
!__char_dec16_trail_le_%out_ok
|
|
1303
|
+
!__char_dec16_trail_ge_%out_ok
|
|
1304
|
+
!__char_dec16_is_high_%out_ok
|
|
1305
|
+
!__char_dec16_high_le_%out_ok
|
|
1306
|
+
!__char_dec16_high_ge_%out_ok
|
|
1307
|
+
|
|
1308
|
+
L_CHAR_DEC16_END_%out_ok:
|
|
1309
|
+
[END_MACRO]
|