use std::borrow::Cow;
use proc_macro2::{Ident as Ident2, Literal, TokenStream};
use crate::models::data::{ConstrainsData, PathData};
use crate::models::meta::{EnumerationMeta, EnumerationMetaVariant};
use crate::pipeline::renderer::ValueRendererBox;
#[derive(Debug)]
pub struct EnumerationData<'types> {
pub meta: Cow<'types, EnumerationMeta>,
pub constrains: ConstrainsData<'types>,
pub type_ident: Ident2,
pub variants: Vec<EnumerationDataVariant<'types>>,
pub trait_impls: Vec<TokenStream>,
pub simple_base_type: Option<PathData>,
}
#[derive(Debug)]
pub struct EnumerationDataVariant<'types> {
pub meta: Cow<'types, EnumerationMetaVariant>,
pub s_name: String,
pub b_name: Literal,
pub value: EnumerationVariantValue,
pub variant_ident: Ident2,
pub target_type: Option<PathData>,
pub extra_attributes: Vec<TokenStream>,
}
#[derive(Debug)]
pub enum EnumerationVariantValue {
None,
ByteLiteral(Ident2, ValueRendererBox),
Constant(Ident2, ValueRendererBox),
}