shaders: add trait BufferStruct and derive macro

This commit is contained in:
firestar99
2025-09-05 00:23:33 +02:00
parent b1a5ab17c8
commit 987430762c
16 changed files with 631 additions and 20 deletions
+9
View File
@@ -1,7 +1,9 @@
use crate::crate_ident::CrateIdent;
use proc_macro::TokenStream;
use proc_macro_error2::proc_macro_error;
use syn::GenericParam;
mod buffer_struct;
mod codegen;
mod crate_ident;
mod derive_choice_type;
@@ -30,3 +32,10 @@ pub fn node(attr: TokenStream, item: TokenStream) -> TokenStream {
pub fn derive_choice_type(input_item: TokenStream) -> TokenStream {
derive_choice_type::derive_choice_type_impl(input_item.into()).unwrap_or_else(|err| err.to_compile_error()).into()
}
/// Derive a struct to implement `ShaderStruct`, see that for docs.
#[proc_macro_derive(BufferStruct)]
pub fn derive_buffer_struct(input_item: TokenStream) -> TokenStream {
let crate_ident = CrateIdent::default();
TokenStream::from(buffer_struct::derive_buffer_struct(&crate_ident, input_item.into()).unwrap_or_else(|err| err.to_compile_error()))
}