Restructure node graph project layout

This commit is contained in:
Dennis
2022-04-02 14:50:00 +02:00
committed by Keavon Chambers
parent f8d4e10f35
commit 800fb4dbc1
19 changed files with 1958 additions and 598 deletions

View File

@@ -7,33 +7,45 @@ name = "graph-proc-macros"
version = "0.1.0"
dependencies = [
"proc-macro2",
"proc_macro_roids",
"quote",
"syn",
]
[[package]]
name = "proc-macro2"
version = "1.0.27"
version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
version = "1.0.9"
name = "proc_macro_roids"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
checksum = "06675fa2c577f52bcf77fbb511123927547d154faa08097cc012c66ec3c9611a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "quote"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58"
dependencies = [
"proc-macro2",
]
[[package]]
name = "syn"
version = "1.0.73"
version = "1.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7"
checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f"
dependencies = [
"proc-macro2",
"quote",

View File

@@ -10,6 +10,8 @@ path = "src/lib.rs"
proc-macro = true
[dependencies]
proc-macro2 = "1.0.26"
syn = { version = "1.0.68", features = ["full"] }
quote = "1.0.9"
proc-macro2 = "1.0"
proc_macro_roids = "0.7"
syn = { version = "1.0", features = ["full"] }
quote = "1.0"
graphene-core = {path = "../gcore"}

View File

@@ -1,4 +1,6 @@
use graphene_core;
use proc_macro::TokenStream;
use proc_macro_roids::*;
use quote::{quote, ToTokens};
use syn::punctuated::Punctuated;
use syn::{parse_macro_input, FnArg, ItemFn, Pat, Type};
@@ -55,10 +57,8 @@ fn generate_to_string(parsed: ItemFn, string: String) -> TokenStream {
.map(|t| t.to_token_stream())
.collect::<Vec<_>>();
let node_fn_name = syn::Ident::new(
&(fn_name.to_string() + "_node"),
proc_macro2::Span::call_site(),
); // function name/identifier
let node_fn_name = fn_name.append("_node");
let struct_name = fn_name.append("_node");
let return_type_string = fn_return_type
.to_token_stream()
.to_string()
@@ -72,6 +72,13 @@ fn generate_to_string(parsed: ItemFn, string: String) -> TokenStream {
let x = quote! {
//#whole_function
mod #fn_name {
struct #struct_name {
}
impl
}
fn #node_fn_name #generics() -> Node<'static> {
Node { func: Box::new(move |x| {
let args = x.downcast::<(#(#types,)*)>().expect(#error);