41 lines
1.8 KiB
Rust
41 lines
1.8 KiB
Rust
use crate::build_fn::leaf_enum_build_fn::make_leaf_enum_build_fn;
|
|
use crate::build_fn::leaf_struct_build_fn::make_leaf_struct_build_fn;
|
|
use crate::build_fn::node_production_build_fn::make_node_production_build_fn;
|
|
use crate::build_fn::polymorphic_enum_loop_build_fn::make_polymorphic_enum_loop_build_fn;
|
|
use crate::build_fn::polymorphic_type_build_fn::make_polymorphic_type_build_fn;
|
|
use crate::build_fn::production_build_fn::make_production_build_fn;
|
|
use crate::build_fn::struct_build_fn::make_struct_build_fn;
|
|
use crate::build_fn::tree_enum_build_fn::make_enum_build_fn;
|
|
use crate::spec::BuildSpec;
|
|
use proc_macro2::TokenStream;
|
|
|
|
mod leaf_enum_build_fn;
|
|
mod leaf_struct_build_fn;
|
|
mod node_production_build_fn;
|
|
mod polymorphic_build_build_fn;
|
|
mod polymorphic_enum_build_fn;
|
|
mod polymorphic_enum_loop_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)
|
|
}
|
|
}
|
|
}
|