| 190 | struct Param(Type, Option<usize>); |
| 191 | |
| 192 | fn make_echo_component(type_definition: &str, type_size: u32) -> String { |
| 193 | let mut offset = 0; |
| 194 | make_echo_component_with_params( |
| 195 | type_definition, |
| 196 | &iter::repeat(Type::I32) |
| 197 | .map(|ty| { |
| 198 | let param = Param(ty, Some(offset)); |
| 199 | offset += 4; |
| 200 | param |
| 201 | }) |
| 202 | .take(usize::try_from(type_size).unwrap() / 4) |
| 203 | .collect::<Vec<_>>(), |
| 204 | ) |
| 205 | } |
| 206 | |
| 207 | fn make_echo_component_with_params(type_definition: &str, params: &[Param]) -> String { |
| 208 | let func = if params.len() == 0 { |