MCPcopy Create free account
hub / github.com/WasmEdge/WasmEdge / print_variant

Function print_variant

utils/wasi-cpp-header/src/cpp_header.rs:260–307  ·  view source on GitHub ↗
(ret: &mut String, name: &Id, v: &Variant)

Source from the content-addressed store, hash-verified

258}
259
260fn print_variant(ret: &mut String, name: &Id, v: &Variant) {
261 if v.is_enum() {
262 return print_enum(ret, name, v);
263 }
264
265 ret.push_str(&format!("union __wasi_{}_u_t {{\n", ident_name(name)));
266
267 for case in &v.cases {
268 if let Some(tref) = &case.tref {
269 if !case.docs.is_empty() {
270 ret.push_str(" /**\n");
271 for line in case.docs.lines() {
272 ret.push_str(&format!(" * {}\n", line));
273 }
274 ret.push_str(" */\n");
275 }
276 ret.push_str(&format!(
277 " {} {};\n",
278 typeref_name(tref),
279 ident_name(&case.name)
280 ));
281 }
282 }
283 ret.push_str("};\n");
284
285 ret.push_str(&format!("struct __wasi_{}_t {{\n", ident_name(name)));
286 ret.push_str(&format!(" {} tag;\n", intrepr_name(v.tag_repr)));
287 ret.push_str(&format!(" __wasi_{}_u_t u;\n", ident_name(name)));
288 ret.push_str("};\n\n");
289
290 ret.push_str(&format!(
291 "static_assert(sizeof(__wasi_{}_t) == {}, \"witx calculated size\");\n",
292 ident_name(name),
293 v.mem_size()
294 ));
295 ret.push_str(&format!(
296 "static_assert(alignof(__wasi_{}_t) == {}, \"witx calculated align\");\n",
297 ident_name(name),
298 v.mem_align()
299 ));
300 ret.push_str(&format!(
301 "static_assert(offsetof(__wasi_{}_t, u) == {}, \"witx calculated union offset\");\n",
302 ident_name(name),
303 v.payload_offset()
304 ));
305
306 ret.push_str("\n");
307}
308
309fn print_handle(ret: &mut String, name: &Id, h: &HandleDatatype) {
310 ret.push_str(&format!(

Callers 1

print_datatypeFunction · 0.85

Calls 1

print_enumFunction · 0.85

Tested by

no test coverage detected