use crate::{
ast::{Attributes, GroupComments, GroupFn},
common::items::NameList,
expression::IdBooleanExpression,
pin::{Direction, NextstateType},
timing::Timing,
ArcStr, GroupSet,
};
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Debug, Default, Clone)]
#[mut_set::derive::item(
sort,
macro(derive(Debug, Clone,Default);)
)]
#[derive(liberty_macros::Group)]
pub struct Bundle {
#[id]
#[liberty(name)]
pub name: NameList,
#[liberty(comments)]
pub comments: GroupComments<Self>,
#[liberty(attributes)]
pub attributes: Attributes,
#[liberty(complex)]
pub members: Vec<ArcStr>,
#[liberty(simple(type = Option))]
pub direction: Option<Direction>,
#[liberty(simple(type = Option))]
pub capacitance: Option<f64>,
#[liberty(simple(type = Option))]
pub function: Option<IdBooleanExpression>,
#[liberty(simple(type = Option))]
pub nextstate_type: Option<NextstateType>,
#[liberty(group(type = Set))]
pub timing: GroupSet<Timing>,
}
impl GroupFn for Bundle {}