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