use crate::InnerAttributes;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, clap::ValueEnum)]
pub enum Language {
#[default]
Rust,
CSharp,
}
impl std::fmt::Display for Language {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Language::Rust => write!(f, "rust"),
Language::CSharp => write!(f, "csharp"),
}
}
}
pub trait CommonGeneratorConfig {
fn user_type_name(&self) -> &str;
fn module_name(&self) -> &str;
fn minimize_boxed_types(&self) -> bool;
fn range(&self) -> bool;
fn node_kind_enums(&self) -> bool;
fn language(&self) -> Language {
Language::Rust
}
}
pub trait ParserGeneratorConfig {
fn trim_parse_tree(&self) -> bool;
fn recovery_disabled(&self) -> bool;
}
pub trait UserTraitGeneratorConfig {
fn inner_attributes(&self) -> &[InnerAttributes];
}