59 lines
2.7 KiB
Rust
59 lines
2.7 KiB
Rust
use crate::spec::BuildSpec;
|
|
use leaf_enum_build_fn::make_leaf_enum_build_fn;
|
|
use leaf_struct_build_fn::make_leaf_struct_build_fn;
|
|
use node_production_build_fn::make_node_production_build_fn;
|
|
use polymorphic_enum_inner_build_build_fn::make_polymorphic_enum_inner_build_build_fn;
|
|
use polymorphic_enum_loop_build_fn::make_polymorphic_enum_loop_build_fn;
|
|
use polymorphic_leaf_enum_build_fn::make_polymorphic_leaf_enum_build_fn;
|
|
use polymorphic_pass_through_build_fn::make_polymorphic_pass_through_build_fn;
|
|
use polymorphic_tree_enum_build_fn::make_polymorphic_tree_enum_build_fn;
|
|
use polymorphic_type_build_fn::make_polymorphic_type_build_fn;
|
|
use proc_macro2::TokenStream;
|
|
use production_build_fn::make_production_build_fn;
|
|
use struct_build_fn::make_struct_build_fn;
|
|
use tree_enum_build_fn::make_enum_build_fn;
|
|
|
|
mod leaf_enum_build_fn;
|
|
mod leaf_struct_build_fn;
|
|
mod node_production_build_fn;
|
|
mod polymorphic_enum_inner_build_build_fn;
|
|
mod polymorphic_enum_loop_build_fn;
|
|
mod polymorphic_leaf_enum_build_fn;
|
|
mod polymorphic_pass_through_build_fn;
|
|
mod polymorphic_tree_enum_build_fn;
|
|
mod polymorphic_type_build_fn;
|
|
mod production_build_fn;
|
|
mod struct_build_fn;
|
|
mod tree_enum_build_fn;
|
|
|
|
pub fn make_build_fn(build_spec: &BuildSpec) -> TokenStream {
|
|
match build_spec {
|
|
BuildSpec::Struct(struct_spec) => make_struct_build_fn(struct_spec),
|
|
BuildSpec::LeafStruct(leaf_struct_spec) => make_leaf_struct_build_fn(leaf_struct_spec),
|
|
BuildSpec::Enum(enum_spec) => make_enum_build_fn(enum_spec),
|
|
BuildSpec::LeafEnum(leaf_enum_spec) => make_leaf_enum_build_fn(leaf_enum_spec),
|
|
BuildSpec::Production(production_spec) => make_production_build_fn(production_spec),
|
|
BuildSpec::NodeProduction(node_production_spec) => {
|
|
make_node_production_build_fn(node_production_spec)
|
|
}
|
|
BuildSpec::PolymorphicType(polymorphic_type_spec) => {
|
|
make_polymorphic_type_build_fn(polymorphic_type_spec)
|
|
}
|
|
BuildSpec::PolymorphicEnumLoop(polymorphic_enum_loop_spec) => {
|
|
make_polymorphic_enum_loop_build_fn(polymorphic_enum_loop_spec)
|
|
}
|
|
BuildSpec::PolymorphicPassThrough(polymorphic_pass_through_spec) => {
|
|
make_polymorphic_pass_through_build_fn(polymorphic_pass_through_spec)
|
|
}
|
|
BuildSpec::PolymorphicEnumInnerBuild(polymorphic_enum_inner_build_spec) => {
|
|
make_polymorphic_enum_inner_build_build_fn(polymorphic_enum_inner_build_spec)
|
|
}
|
|
BuildSpec::PolymorphicLeafEnum(polymorphic_leaf_enum_spec) => {
|
|
make_polymorphic_leaf_enum_build_fn(polymorphic_leaf_enum_spec)
|
|
}
|
|
BuildSpec::PolymorphicTreeEnum(polymorphic_tree_enum_spec) => {
|
|
make_polymorphic_tree_enum_build_fn(polymorphic_tree_enum_spec)
|
|
}
|
|
}
|
|
}
|