1macro_rules! wasi_try {
6 ($expr:expr) => {{
7 let res: Result<_, crate::syscalls::types::wasi::Errno> = $expr;
8 match res {
9 Ok(val) => {
10 val
12 }
13 Err(err) => {
14 return err;
16 }
17 }
18 }};
19}
20
21macro_rules! wasi_try_ok {
24 ($expr:expr) => {{
25 let res: Result<_, crate::syscalls::types::wasi::Errno> = $expr;
26 match res {
27 Ok(val) => {
28 val
30 }
31 Err(err) => {
32 return Ok(err);
34 }
35 }
36 }};
37}
38
39macro_rules! wasi_try_ok_ok {
40 ($expr:expr) => {{
41 let res: Result<_, crate::syscalls::types::wasi::Errno> = $expr;
42 match res {
43 Ok(val) => val,
44 Err(err) => {
45 return Ok(Err(err));
46 }
47 }
48 }};
49}
50
51macro_rules! wasi_try_mem {
53 ($expr:expr) => {{ wasi_try!($expr.map_err($crate::mem_error_to_wasi)) }};
54}
55
56macro_rules! wasi_try_mem_ok {
58 ($expr:expr) => {{ wasi_try_ok!($expr.map_err($crate::mem_error_to_wasi)) }};
59
60 ($expr:expr, $thread:expr) => {{ wasi_try_ok!($expr.map_err($crate::mem_error_to_wasi), $thread) }};
61}
62
63macro_rules! wasi_try_mem_ok_ok {
65 ($expr:expr) => {{ wasi_try_ok_ok!($expr.map_err($crate::mem_error_to_wasi)) }};
66
67 ($expr:expr, $thread:expr) => {{ wasi_try_ok_ok!($expr.map_err($crate::mem_error_to_wasi), $thread) }};
68}
69
70macro_rules! get_input_str {
72 ($memory:expr, $data:expr, $len:expr) => {{ wasi_try_mem!($data.read_utf8_string($memory, $len)) }};
73}
74
75macro_rules! get_input_str_ok {
76 ($memory:expr, $data:expr, $len:expr) => {{ wasi_try_mem_ok!($data.read_utf8_string($memory, $len)) }};
77}
78
79#[allow(unused_macros)]
80macro_rules! get_input_str_bus {
81 ($memory:expr, $data:expr, $len:expr) => {{ wasi_try_mem_bus!($data.read_utf8_string($memory, $len)) }};
82}
83
84#[allow(unused_macros)]
85macro_rules! get_input_str_bus_ok {
86 ($memory:expr, $data:expr, $len:expr) => {{ wasi_try_mem_bus_ok!($data.read_utf8_string($memory, $len)) }};
87}
88
89macro_rules! wasi_dl_err {
90 ($err:expr, $memory:ident, $err_buf:ident, $err_buf_len:ident) => {
91 wasi_try_mem_ok!(write_dl_error(
92 $err,
93 &$memory,
94 $err_buf,
95 $err_buf_len.into()
96 ));
97
98 return Ok(Errno::Unknown);
100 };
101}
102
103macro_rules! wasi_try_dl {
104 ($expr:expr, $fmt:tt, $memory:ident, $err_buf:ident, $err_buf_len:ident) => {
105 match $expr {
106 Ok(o) => o,
107 Err(err) => {
108 let err = format!($fmt, err);
109 wasi_dl_err!(&err, $memory, $err_buf, $err_buf_len);
110 }
111 }
112 };
113}