node-macro: add CrateIdent struct containing resolved crate paths

This commit is contained in:
firestar99
2025-09-05 00:23:33 +02:00
parent 69f9ef30cc
commit b1a5ab17c8
10 changed files with 86 additions and 50 deletions
@@ -1,3 +1,4 @@
use crate::crate_ident::CrateIdent;
use crate::parsing::{NodeFnAttributes, ParsedNodeFn};
use crate::shader_nodes::per_pixel_adjust::PerPixelAdjust;
use proc_macro2::{Ident, TokenStream};
@@ -50,11 +51,11 @@ impl Parse for ShaderNodeType {
}
pub trait ShaderCodegen {
fn codegen(&self, parsed: &ParsedNodeFn) -> syn::Result<ShaderTokens>;
fn codegen(&self, crate_ident: &CrateIdent, parsed: &ParsedNodeFn) -> syn::Result<ShaderTokens>;
}
impl ShaderCodegen for ShaderNodeType {
fn codegen(&self, parsed: &ParsedNodeFn) -> syn::Result<ShaderTokens> {
fn codegen(&self, crate_ident: &CrateIdent, parsed: &ParsedNodeFn) -> syn::Result<ShaderTokens> {
match self {
ShaderNodeType::None | ShaderNodeType::ShaderNode => (),
_ => {
@@ -66,7 +67,7 @@ impl ShaderCodegen for ShaderNodeType {
match self {
ShaderNodeType::None | ShaderNodeType::ShaderNode => Ok(ShaderTokens::default()),
ShaderNodeType::PerPixelAdjust(x) => x.codegen(parsed),
ShaderNodeType::PerPixelAdjust(x) => x.codegen(crate_ident, parsed),
}
}
}