MCPcopy Create free account
hub / github.com/WebAssembly/wasi-webgpu / main

Function main

generate/src/main.rs:4–65  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2use webidl2wit::{ConversionOptions, ResourceInheritance};
3
4fn main() {
5 let webidl = fs::read_to_string(Path::new("./webgpu-spec/spec/webgpu.idl")).unwrap();
6 let webidl_ast = weedle::parse(&webidl).unwrap();
7 let wit_ast = webidl2wit::webidl_to_wit(
8 webidl_ast,
9 ConversionOptions {
10 phantom_interface: vec![
11 "Navigator".into(),
12 "WorkerNavigator".into(),
13 "HTMLVideoElement".into(),
14 "HTMLImageElement".into(),
15 "VideoFrame".into(),
16 "ImageBitmap".into(),
17 "ImageData".into(),
18 "EventTarget".into(),
19 "DOMException".into(),
20 "Event".into(),
21 ],
22 phantom_dictionaries: vec![
23 "EventInit".into(),
24 "PredefinedColorSpace".into(),
25 "HTMLCanvasElement".into(),
26 "OffscreenCanvas".into(),
27 ],
28 resource_inheritance: ResourceInheritance::DuplicateMethods,
29 package_name: webidl2wit::PackageName::new("wasi", "webgpu", Some(package_version())),
30 interface_name: "webgpu".into(),
31 ..Default::default()
32 },
33 )
34 .unwrap();
35 let wit = wit_ast.to_string();
36
37 let mut resolve = wit_parser::Resolve::new();
38
39 resolve.push_str("", &wit).unwrap();
40
41 let mut packages = wit_encoder::packages_from_parsed(&resolve);
42
43 assert!(packages.len() == 1, "Should create exactly one package");
44 let mut package = packages.remove(0);
45 assert!(
46 package.items().len() == 1,
47 "Package should contain exactly one interface"
48 );
49 let item = package.items_mut().remove(0);
50 let interface = match item {
51 wit_encoder::PackageItem::Interface(interface) => interface,
52 wit_encoder::PackageItem::World(_) => {
53 panic!("Package should contain exactly one interface")
54 }
55 };
56 let transforms = serde_json::from_str(include_str!("../webgpu-transforms.json")).unwrap();
57 let mut interface = wit_transforms::transform(interface, transforms);
58 interface.uses_mut().sort();
59 interface.items_mut().sort();
60 package.item(wit_encoder::PackageItem::Interface(interface));
61

Callers

nothing calls this directly

Calls 1

package_versionFunction · 0.85

Tested by

no test coverage detected