1extern crate proc_macro;
4
5use proc_macro::TokenStream;
6
7mod shader;
8mod shader_args;
9mod spirv_bindgen;
10
11#[proc_macro_derive(Shader, attributes(shader, entry_point))]
12pub fn derive_shader(item: TokenStream) -> TokenStream {
13 shader::derive_shader(item)
14}
15
16#[proc_macro_derive(
17 ShaderArgs,
18 attributes(storage, uniform, push_constant, workgroup_size)
19)]
20pub fn derive_shader_args(item: TokenStream) -> TokenStream {
21 shader_args::derive_shader_args(item)
22}
23
24#[proc_macro_attribute]
25pub fn spirv_bindgen(attr: TokenStream, item: TokenStream) -> TokenStream {
26 spirv_bindgen::spirv_bindgen(attr, item)
27}