Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
base_visitor.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <sysio/vm/exceptions.hpp>
4#include <sysio/vm/opcodes.hpp>
5
6namespace sysio { namespace vm {
7
8 struct base_visitor {
9 [[gnu::always_inline]] inline void operator()(const unreachable_t& ) {}
10 [[gnu::always_inline]] inline void operator()(const nop_t& ) {}
11 [[gnu::always_inline]] inline void operator()(const exit_t& ) {}
12 [[gnu::always_inline]] inline void operator()(const end_t& ) {}
13 [[gnu::always_inline]] inline void operator()(const return_t& ) {}
14 [[gnu::always_inline]] inline void operator()(const block_t& ) {}
15 [[gnu::always_inline]] inline void operator()(const loop_t& ) {}
16 [[gnu::always_inline]] inline void operator()(const if_t& ) {}
17 [[gnu::always_inline]] inline void operator()(const else_t& ) {}
18 [[gnu::always_inline]] inline void operator()(const br_t& ) {}
19 [[gnu::always_inline]] inline void operator()(const br_if_t& ) {}
20 [[gnu::always_inline]] inline void operator()(const br_table_t& ) {}
21 [[gnu::always_inline]] inline void operator()(const call_t& ) {}
22 [[gnu::always_inline]] inline void operator()(const call_indirect_t& ) {}
23 [[gnu::always_inline]] inline void operator()(const drop_t& ) {}
24 [[gnu::always_inline]] inline void operator()(const select_t& ) {}
25 [[gnu::always_inline]] inline void operator()(const get_local_t& ) {}
26 [[gnu::always_inline]] inline void operator()(const set_local_t& ) {}
27 [[gnu::always_inline]] inline void operator()(const tee_local_t& ) {}
28 [[gnu::always_inline]] inline void operator()(const get_global_t& ) {}
29 [[gnu::always_inline]] inline void operator()(const set_global_t& ) {}
30 [[gnu::always_inline]] inline void operator()(const i32_load_t& ) {}
31 [[gnu::always_inline]] inline void operator()(const i32_load8_s_t& ) {}
32 [[gnu::always_inline]] inline void operator()(const i32_load16_s_t& ) {}
33 [[gnu::always_inline]] inline void operator()(const i32_load8_u_t& ) {}
34 [[gnu::always_inline]] inline void operator()(const i32_load16_u_t& ) {}
35 [[gnu::always_inline]] inline void operator()(const i64_load_t& ) {}
36 [[gnu::always_inline]] inline void operator()(const i64_load8_s_t& ) {}
37 [[gnu::always_inline]] inline void operator()(const i64_load16_s_t& ) {}
38 [[gnu::always_inline]] inline void operator()(const i64_load32_s_t& ) {}
39 [[gnu::always_inline]] inline void operator()(const i64_load8_u_t& ) {}
40 [[gnu::always_inline]] inline void operator()(const i64_load16_u_t& ) {}
41 [[gnu::always_inline]] inline void operator()(const i64_load32_u_t& ) {}
42 [[gnu::always_inline]] inline void operator()(const f32_load_t& ) {}
43 [[gnu::always_inline]] inline void operator()(const f64_load_t& ) {}
44 [[gnu::always_inline]] inline void operator()(const i32_store_t& ) {}
45 [[gnu::always_inline]] inline void operator()(const i32_store8_t& ) {}
46 [[gnu::always_inline]] inline void operator()(const i32_store16_t& ) {}
47 [[gnu::always_inline]] inline void operator()(const i64_store_t& ) {}
48 [[gnu::always_inline]] inline void operator()(const i64_store8_t& ) {}
49 [[gnu::always_inline]] inline void operator()(const i64_store16_t& ) {}
50 [[gnu::always_inline]] inline void operator()(const i64_store32_t& ) {}
51 [[gnu::always_inline]] inline void operator()(const f32_store_t& ) {}
52 [[gnu::always_inline]] inline void operator()(const f64_store_t& ) {}
53 [[gnu::always_inline]] inline void operator()(const current_memory_t& ) {}
54 [[gnu::always_inline]] inline void operator()(const grow_memory_t& ) {}
55 [[gnu::always_inline]] inline void operator()(const i32_const_t& ) {}
56 [[gnu::always_inline]] inline void operator()(const i64_const_t& ) {}
57 [[gnu::always_inline]] inline void operator()(const f32_const_t& ) {}
58 [[gnu::always_inline]] inline void operator()(const f64_const_t& ) {}
59 [[gnu::always_inline]] inline void operator()(const i32_eqz_t& ) {}
60 [[gnu::always_inline]] inline void operator()(const i32_eq_t& ) {}
61 [[gnu::always_inline]] inline void operator()(const i32_ne_t& ) {}
62 [[gnu::always_inline]] inline void operator()(const i32_lt_s_t& ) {}
63 [[gnu::always_inline]] inline void operator()(const i32_lt_u_t& ) {}
64 [[gnu::always_inline]] inline void operator()(const i32_le_s_t& ) {}
65 [[gnu::always_inline]] inline void operator()(const i32_le_u_t& ) {}
66 [[gnu::always_inline]] inline void operator()(const i32_gt_s_t& ) {}
67 [[gnu::always_inline]] inline void operator()(const i32_gt_u_t& ) {}
68 [[gnu::always_inline]] inline void operator()(const i32_ge_s_t& ) {}
69 [[gnu::always_inline]] inline void operator()(const i32_ge_u_t& ) {}
70 [[gnu::always_inline]] inline void operator()(const i64_eqz_t& ) {}
71 [[gnu::always_inline]] inline void operator()(const i64_eq_t& ) {}
72 [[gnu::always_inline]] inline void operator()(const i64_ne_t& ) {}
73 [[gnu::always_inline]] inline void operator()(const i64_lt_s_t& ) {}
74 [[gnu::always_inline]] inline void operator()(const i64_lt_u_t& ) {}
75 [[gnu::always_inline]] inline void operator()(const i64_le_s_t& ) {}
76 [[gnu::always_inline]] inline void operator()(const i64_le_u_t& ) {}
77 [[gnu::always_inline]] inline void operator()(const i64_gt_s_t& ) {}
78 [[gnu::always_inline]] inline void operator()(const i64_gt_u_t& ) {}
79 [[gnu::always_inline]] inline void operator()(const i64_ge_s_t& ) {}
80 [[gnu::always_inline]] inline void operator()(const i64_ge_u_t& ) {}
81 [[gnu::always_inline]] inline void operator()(const f32_eq_t& ) {}
82 [[gnu::always_inline]] inline void operator()(const f32_ne_t& ) {}
83 [[gnu::always_inline]] inline void operator()(const f32_lt_t& ) {}
84 [[gnu::always_inline]] inline void operator()(const f32_gt_t& ) {}
85 [[gnu::always_inline]] inline void operator()(const f32_le_t& ) {}
86 [[gnu::always_inline]] inline void operator()(const f32_ge_t& ) {}
87 [[gnu::always_inline]] inline void operator()(const f64_eq_t& ) {}
88 [[gnu::always_inline]] inline void operator()(const f64_ne_t& ) {}
89 [[gnu::always_inline]] inline void operator()(const f64_lt_t& ) {}
90 [[gnu::always_inline]] inline void operator()(const f64_gt_t& ) {}
91 [[gnu::always_inline]] inline void operator()(const f64_le_t& ) {}
92 [[gnu::always_inline]] inline void operator()(const f64_ge_t& ) {}
93 [[gnu::always_inline]] inline void operator()(const i32_clz_t& ) {}
94 [[gnu::always_inline]] inline void operator()(const i32_ctz_t& ) {}
95 [[gnu::always_inline]] inline void operator()(const i32_popcnt_t& ) {}
96 [[gnu::always_inline]] inline void operator()(const i32_add_t& ) {}
97 [[gnu::always_inline]] inline void operator()(const i32_sub_t& ) {}
98 [[gnu::always_inline]] inline void operator()(const i32_mul_t& ) {}
99 [[gnu::always_inline]] inline void operator()(const i32_div_s_t& ) {}
100 [[gnu::always_inline]] inline void operator()(const i32_div_u_t& ) {}
101 [[gnu::always_inline]] inline void operator()(const i32_rem_s_t& ) {}
102 [[gnu::always_inline]] inline void operator()(const i32_rem_u_t& ) {}
103 [[gnu::always_inline]] inline void operator()(const i32_and_t& ) {}
104 [[gnu::always_inline]] inline void operator()(const i32_or_t& ) {}
105 [[gnu::always_inline]] inline void operator()(const i32_xor_t& ) {}
106 [[gnu::always_inline]] inline void operator()(const i32_shl_t& ) {}
107 [[gnu::always_inline]] inline void operator()(const i32_shr_s_t& ) {}
108 [[gnu::always_inline]] inline void operator()(const i32_shr_u_t& ) {}
109 [[gnu::always_inline]] inline void operator()(const i32_rotl_t& ) {}
110 [[gnu::always_inline]] inline void operator()(const i32_rotr_t& ) {}
111 [[gnu::always_inline]] inline void operator()(const i64_clz_t& ) {}
112 [[gnu::always_inline]] inline void operator()(const i64_ctz_t& ) {}
113 [[gnu::always_inline]] inline void operator()(const i64_popcnt_t& ) {}
114 [[gnu::always_inline]] inline void operator()(const i64_add_t& ) {}
115 [[gnu::always_inline]] inline void operator()(const i64_sub_t& ) {}
116 [[gnu::always_inline]] inline void operator()(const i64_mul_t& ) {}
117 [[gnu::always_inline]] inline void operator()(const i64_div_s_t& ) {}
118 [[gnu::always_inline]] inline void operator()(const i64_div_u_t& ) {}
119 [[gnu::always_inline]] inline void operator()(const i64_rem_s_t& ) {}
120 [[gnu::always_inline]] inline void operator()(const i64_rem_u_t& ) {}
121 [[gnu::always_inline]] inline void operator()(const i64_and_t& ) {}
122 [[gnu::always_inline]] inline void operator()(const i64_or_t& ) {}
123 [[gnu::always_inline]] inline void operator()(const i64_xor_t& ) {}
124 [[gnu::always_inline]] inline void operator()(const i64_shl_t& ) {}
125 [[gnu::always_inline]] inline void operator()(const i64_shr_s_t& ) {}
126 [[gnu::always_inline]] inline void operator()(const i64_shr_u_t& ) {}
127 [[gnu::always_inline]] inline void operator()(const i64_rotl_t& ) {}
128 [[gnu::always_inline]] inline void operator()(const i64_rotr_t& ) {}
129 [[gnu::always_inline]] inline void operator()(const f32_abs_t& ) {}
130 [[gnu::always_inline]] inline void operator()(const f32_neg_t& ) {}
131 [[gnu::always_inline]] inline void operator()(const f32_ceil_t& ) {}
132 [[gnu::always_inline]] inline void operator()(const f32_floor_t& ) {}
133 [[gnu::always_inline]] inline void operator()(const f32_trunc_t& ) {}
134 [[gnu::always_inline]] inline void operator()(const f32_nearest_t& ) {}
135 [[gnu::always_inline]] inline void operator()(const f32_sqrt_t& ) {}
136 [[gnu::always_inline]] inline void operator()(const f32_add_t& ) {}
137 [[gnu::always_inline]] inline void operator()(const f32_sub_t& ) {}
138 [[gnu::always_inline]] inline void operator()(const f32_mul_t& ) {}
139 [[gnu::always_inline]] inline void operator()(const f32_div_t& ) {}
140 [[gnu::always_inline]] inline void operator()(const f32_min_t& ) {}
141 [[gnu::always_inline]] inline void operator()(const f32_max_t& ) {}
142 [[gnu::always_inline]] inline void operator()(const f32_copysign_t& ) {}
143 [[gnu::always_inline]] inline void operator()(const f64_abs_t& ) {}
144 [[gnu::always_inline]] inline void operator()(const f64_neg_t& ) {}
145 [[gnu::always_inline]] inline void operator()(const f64_ceil_t& ) {}
146 [[gnu::always_inline]] inline void operator()(const f64_floor_t& ) {}
147 [[gnu::always_inline]] inline void operator()(const f64_trunc_t& ) {}
148 [[gnu::always_inline]] inline void operator()(const f64_nearest_t& ) {}
149 [[gnu::always_inline]] inline void operator()(const f64_sqrt_t& ) {}
150 [[gnu::always_inline]] inline void operator()(const f64_add_t& ) {}
151 [[gnu::always_inline]] inline void operator()(const f64_sub_t& ) {}
152 [[gnu::always_inline]] inline void operator()(const f64_mul_t& ) {}
153 [[gnu::always_inline]] inline void operator()(const f64_div_t& ) {}
154 [[gnu::always_inline]] inline void operator()(const f64_min_t& ) {}
155 [[gnu::always_inline]] inline void operator()(const f64_max_t& ) {}
156 [[gnu::always_inline]] inline void operator()(const f64_copysign_t& ) {}
157 [[gnu::always_inline]] inline void operator()(const i32_wrap_i64_t& ) {}
158 [[gnu::always_inline]] inline void operator()(const i32_trunc_s_f32_t& ) {}
159 [[gnu::always_inline]] inline void operator()(const i32_trunc_u_f32_t& ) {}
160 [[gnu::always_inline]] inline void operator()(const i32_trunc_s_f64_t& ) {}
161 [[gnu::always_inline]] inline void operator()(const i32_trunc_u_f64_t& ) {}
162 [[gnu::always_inline]] inline void operator()(const i64_extend_s_i32_t& ) {}
163 [[gnu::always_inline]] inline void operator()(const i64_extend_u_i32_t& ) {}
164 [[gnu::always_inline]] inline void operator()(const i64_trunc_s_f32_t& ) {}
165 [[gnu::always_inline]] inline void operator()(const i64_trunc_u_f32_t& ) {}
166 [[gnu::always_inline]] inline void operator()(const i64_trunc_s_f64_t& ) {}
167 [[gnu::always_inline]] inline void operator()(const i64_trunc_u_f64_t& ) {}
168 [[gnu::always_inline]] inline void operator()(const f32_convert_s_i32_t& ) {}
169 [[gnu::always_inline]] inline void operator()(const f32_convert_u_i32_t& ) {}
170 [[gnu::always_inline]] inline void operator()(const f32_convert_s_i64_t& ) {}
171 [[gnu::always_inline]] inline void operator()(const f32_convert_u_i64_t& ) {}
172 [[gnu::always_inline]] inline void operator()(const f32_demote_f64_t& ) {}
173 [[gnu::always_inline]] inline void operator()(const f64_convert_s_i32_t& ) {}
174 [[gnu::always_inline]] inline void operator()(const f64_convert_u_i32_t& ) {}
175 [[gnu::always_inline]] inline void operator()(const f64_convert_s_i64_t& ) {}
176 [[gnu::always_inline]] inline void operator()(const f64_convert_u_i64_t& ) {}
177 [[gnu::always_inline]] inline void operator()(const f64_promote_f32_t& ) {}
178 [[gnu::always_inline]] inline void operator()(const i32_reinterpret_f32_t& ) {}
179 [[gnu::always_inline]] inline void operator()(const i64_reinterpret_f64_t& ) {}
180 [[gnu::always_inline]] inline void operator()(const f32_reinterpret_i32_t& ) {}
181 [[gnu::always_inline]] inline void operator()(const f64_reinterpret_i64_t& ) {}
182 template <typename T>
183 [[gnu::always_inline]] inline void operator()(T val) {
184 throw wasm_interpreter_exception{"invalid opcode"};
185 }
186 };
187
188}} // namespace sysio::vm
#define T(meth, val, expected)
void operator()(const i64_sub_t &)
void operator()(const i64_rotl_t &)
void operator()(const i32_wrap_i64_t &)
void operator()(const set_global_t &)
void operator()(const i32_gt_u_t &)
void operator()(const i32_load16_s_t &)
void operator()(const i32_load_t &)
void operator()(const f32_add_t &)
void operator()(const i32_rem_s_t &)
void operator()(const i64_trunc_u_f32_t &)
void operator()(const call_t &)
void operator()(const set_local_t &)
void operator()(const f32_mul_t &)
void operator()(const f32_max_t &)
void operator()(const f32_convert_s_i64_t &)
void operator()(const f32_demote_f64_t &)
void operator()(const i32_gt_s_t &)
void operator()(const f64_ceil_t &)
void operator()(const f64_trunc_t &)
void operator()(const f32_copysign_t &)
void operator()(const f32_ne_t &)
void operator()(const nop_t &)
void operator()(const i32_lt_u_t &)
void operator()(const i32_shr_s_t &)
void operator()(const i32_le_s_t &)
void operator()(const i32_trunc_u_f64_t &)
void operator()(const i64_trunc_s_f32_t &)
void operator()(const i64_store8_t &)
void operator()(const i64_or_t &)
void operator()(const br_table_t &)
void operator()(const br_if_t &)
void operator()(const drop_t &)
void operator()(const i64_store32_t &)
void operator()(const f32_convert_s_i32_t &)
void operator()(const i64_load16_s_t &)
void operator()(const loop_t &)
void operator()(const i64_shl_t &)
void operator()(const i32_load8_s_t &)
void operator()(const i64_shr_u_t &)
void operator()(const i32_div_u_t &)
void operator()(const i32_eqz_t &)
void operator()(const f64_store_t &)
void operator()(const f64_lt_t &)
void operator()(const i32_ctz_t &)
void operator()(const else_t &)
void operator()(const i64_trunc_u_f64_t &)
void operator()(const f64_le_t &)
void operator()(const f32_nearest_t &)
void operator()(const i64_extend_s_i32_t &)
void operator()(const i32_rem_u_t &)
void operator()(const f64_convert_u_i64_t &)
void operator()(const i64_rem_u_t &)
void operator()(const i64_clz_t &)
void operator()(const i64_load16_u_t &)
void operator()(const f64_copysign_t &)
void operator()(const if_t &)
void operator()(const f32_convert_u_i32_t &)
void operator()(const i32_shl_t &)
void operator()(const f64_min_t &)
void operator()(const i64_ge_s_t &)
void operator()(const f64_promote_f32_t &)
void operator()(const f64_ge_t &)
void operator()(const i64_ctz_t &)
void operator()(const i32_mul_t &)
void operator()(const f32_ceil_t &)
void operator()(const f64_gt_t &)
void operator()(const i32_eq_t &)
void operator()(const i64_load32_s_t &)
void operator()(const f64_reinterpret_i64_t &)
void operator()(const select_t &)
void operator()(const get_global_t &)
void operator()(const i64_eq_t &)
void operator()(const i64_rotr_t &)
void operator()(const f64_convert_u_i32_t &)
void operator()(const i32_or_t &)
void operator()(const i64_ne_t &)
void operator()(const f32_floor_t &)
void operator()(const f32_gt_t &)
void operator()(const i32_rotr_t &)
void operator()(const f32_min_t &)
void operator()(const f64_floor_t &)
void operator()(const i32_clz_t &)
void operator()(const f32_neg_t &)
void operator()(const f32_le_t &)
void operator()(const f32_convert_u_i64_t &)
void operator()(const f64_nearest_t &)
void operator()(const i64_gt_s_t &)
void operator()(const f64_eq_t &)
void operator()(const i64_popcnt_t &)
void operator()(const i32_store16_t &)
void operator()(const i64_le_u_t &)
void operator()(const end_t &)
void operator()(const f64_convert_s_i32_t &)
void operator()(const i32_rotl_t &)
void operator()(const i32_and_t &)
void operator()(const br_t &)
void operator()(const f32_eq_t &)
void operator()(const i64_lt_s_t &)
void operator()(const i64_store_t &)
void operator()(const i64_rem_s_t &)
void operator()(const i32_reinterpret_f32_t &)
void operator()(const i32_add_t &)
void operator()(const i64_load32_u_t &)
void operator()(const call_indirect_t &)
void operator()(const tee_local_t &)
void operator()(const grow_memory_t &)
void operator()(const i32_ge_u_t &)
void operator()(const block_t &)
void operator()(const i32_popcnt_t &)
void operator()(const i64_load_t &)
void operator()(const i32_le_u_t &)
void operator()(const i64_add_t &)
void operator()(const i64_gt_u_t &)
void operator()(const i64_div_u_t &)
void operator()(const i64_le_s_t &)
void operator()(const i64_store16_t &)
void operator()(const i32_load16_u_t &)
void operator()(const i64_lt_u_t &)
void operator()(const f32_sub_t &)
void operator()(const f64_neg_t &)
void operator()(const i32_div_s_t &)
void operator()(const i64_shr_s_t &)
void operator()(const f32_sqrt_t &)
void operator()(const f32_trunc_t &)
void operator()(const f32_lt_t &)
void operator()(const i64_reinterpret_f64_t &)
void operator()(const f64_sqrt_t &)
void operator()(const i32_store_t &)
void operator()(const f32_ge_t &)
void operator()(const f32_abs_t &)
void operator()(const f64_add_t &)
void operator()(const f64_const_t &)
void operator()(const i64_ge_u_t &)
void operator()(const i32_lt_s_t &)
void operator()(const i64_and_t &)
void operator()(const i32_const_t &)
void operator()(const i64_div_s_t &)
void operator()(const get_local_t &)
void operator()(const i64_load8_s_t &)
void operator()(const i64_extend_u_i32_t &)
void operator()(const current_memory_t &)
void operator()(const i32_trunc_s_f32_t &)
void operator()(const i64_trunc_s_f64_t &)
void operator()(const f64_ne_t &)
void operator()(const exit_t &)
void operator()(const f64_div_t &)
void operator()(const i32_trunc_s_f64_t &)
void operator()(const f64_convert_s_i64_t &)
void operator()(const f32_store_t &)
void operator()(const i32_ne_t &)
void operator()(const f32_reinterpret_i32_t &)
void operator()(const i32_xor_t &)
void operator()(const f64_abs_t &)
void operator()(const f64_mul_t &)
void operator()(const i32_trunc_u_f32_t &)
void operator()(const unreachable_t &)
void operator()(const f64_load_t &)
void operator()(const i64_xor_t &)
void operator()(const i64_mul_t &)
void operator()(const i32_sub_t &)
void operator()(const f32_const_t &)
void operator()(const i64_load8_u_t &)
void operator()(const i32_ge_s_t &)
void operator()(const f64_sub_t &)
void operator()(const i32_load8_u_t &)
void operator()(const f32_load_t &)
void operator()(const return_t &)
void operator()(const i64_eqz_t &)
void operator()(const i32_shr_u_t &)
void operator()(const f64_max_t &)
void operator()(const f32_div_t &)
void operator()(const i32_store8_t &)
void operator()(const i64_const_t &)