crevice_derive/
lib.rs

1mod glsl;
2mod layout;
3
4use proc_macro::TokenStream as CompilerTokenStream;
5
6use syn::{parse_macro_input, DeriveInput};
7
8#[proc_macro_derive(AsStd140)]
9pub fn derive_as_std140(input: CompilerTokenStream) -> CompilerTokenStream {
10    let input = parse_macro_input!(input as DeriveInput);
11    let expanded = layout::emit(input, "Std140", "std140", 16);
12
13    CompilerTokenStream::from(expanded)
14}
15
16#[proc_macro_derive(AsStd430)]
17pub fn derive_as_std430(input: CompilerTokenStream) -> CompilerTokenStream {
18    let input = parse_macro_input!(input as DeriveInput);
19    let expanded = layout::emit(input, "Std430", "std430", 0);
20
21    CompilerTokenStream::from(expanded)
22}
23
24#[proc_macro_derive(GlslStruct)]
25pub fn derive_glsl_struct(input: CompilerTokenStream) -> CompilerTokenStream {
26    let input = parse_macro_input!(input as DeriveInput);
27    let expanded = glsl::emit(input);
28
29    CompilerTokenStream::from(expanded)
30}