use strum_macros::{Display, EnumString};
#[derive(Debug, Clone, PartialEq)]
#[derive(Default)]
pub struct SdfExpression{
}
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Default,EnumString,Display)]
pub enum SdfEdgeType{
#[default]
#[strum(serialize = "noedge")]
Noedge,
#[strum(serialize = "start_edge")]
StartEdge,
#[strum(serialize = "end_edge")]
EndEdge,
#[strum(serialize = "both_edges")]
BothEdges,
}
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Display, EnumString)]
pub enum VariableType {
#[strum(serialize = "input_net_transition")]
InputNetTransition,
#[strum(serialize = "normalized_voltage")]
NormalizedVoltage,
#[strum(serialize = "total_output_net_capacitance")]
TotalOutputNetCapacitance,
#[strum(serialize = "related_out_total_output_net_capacitance")]
RelatedOutTotalOutputNetCapacitance,
#[strum(serialize = "constrained_pin_transition")]
ConstrainedPinTransition,
#[strum(serialize = "fanout_number")]
FanoutNumber,
#[strum(serialize = "fanout_pin_capacitance")]
FanoutPinCapacitance,
#[strum(serialize = "driver_slew")]
DriverSlew,
#[strum(serialize = "input_transition_time")]
InputTransitionTime,
}
#[derive(Debug, Clone, PartialEq)]
#[derive(Default)]
pub struct Domain{
pub group_name: String,
pub calc_mode: Option<String>,
pub variable_1: Option<VariableType>,
pub variable_2: Option<VariableType>,
pub variable_3: Option<VariableType>,
pub index_1: Vec<f64>,
pub index_2: Vec<f64>,
pub index_3: Vec<f64>,
}