origen_metal 1.4.0

Bare metal APIs for the Origen SDK
use crate::stil;

#[derive(Clone, PartialEq, Serialize, Debug)]
pub enum STIL {
    Root,
    SourceFile(String),
    Integer(i64),
    Float(f64),
    String(String),
    Unknown,
    ExtBlock,
    Extension(String, String),
    Version(u32, u32), // major, minor
    Header,
    Title(String),
    Date(String),
    Source(String),
    History,
    Annotation(String),
    Environment(Option<String>),
    InheritEnv(String),
    FileRef(String, Option<(String,String,String)>),  // name, (type, format, version)
    NameMaps(Option<String>),
    NameMapsInherit(Option<String>, Option<String>), // name, namespace
    NameMapsPrefix(String),
    NameMapsSeparator(String),
    NameMapsScanCells,
    NameMapsScanCell(Option<String>, Option<String>),  // name, map_string
    NameMapsSignals,
    NameMapsSignal(Option<String>, Option<String>),  // name, map_string
    NameMapsSignalGroups(Option<String>),  // group name
    NameMapsSignalGroup(Option<String>, Option<String>),  // name, map_string
    NameMapsVariables,
    NameMapsVariable(Option<String>, Option<String>),  // name, map_string
    NameMapsNames,
    NameMapsName(Option<String>, Option<String>),  // name, map_string
    Include(String, Option<String>),
    Signals,
    Signal(String, stil::SignalType), // name, type
    Termination(stil::Termination),
    DefaultState(stil::State),
    Base(stil::Base, String),
    Alignment(stil::Alignment),
    ScanIn(Option<u32>),
    ScanOut(Option<u32>),
    DataBitCount(u32),
    SignalGroups(Option<String>),
    SignalGroup(String),
    SigRefExpr,
    TimeExpr,
    SIUnit(String),
    EngPrefix(String),
    Add,
    Subtract,
    Multiply,
    Divide,
    Parens,
    NumberWithUnit,
    PatternExec(Option<String>),
    CategoryRef(String),
    SelectorRef(String),
    TimingRef(String),
    DCapFilterRef(String),
    DCapSetupRef(String),
    PatternBurstRef(String),
    DCapFilter(Option<String>),
    TypeRef(String),
    TransferModeRef(String),
    FrameCountRef(u64),
    VectorsPerFrameRef(u64),
    VectorsPerSampleRef(u64),
    DiscardOffsetRef(u64),
    DiscardVectorsRef(u64),
    DiscardFramesRef(u64),
    DCapSetup(Option<String>),
    PinsRef(String),
    PatternBurst(String),
    SignalGroupsRef(String),
    MacroDefs(String),
    Procedures(String),
    ProceduresBlock(Option<String>),
    ProceduresDef(String),
    MacroDefsBlock(Option<String>),
    MacroDef(String),
    Shift,
    WfcData(String),
    ScanStructuresRef(String),
    Start(String),
    Stop(String),
    Terminations,
    TerminationItem,
    PatList,
    Pat(String),
    Label(String),
    Timing(Option<String>),
    WaveformTable(String),
    Period,
    TaggedPeriod(String),
    Inherit(String),
    SubWaveforms,
    SubWaveform,
    Waveforms,
    Waveform,
    WFChar(String),
    TaggedWFChar(String, String),
    Event,
    EventList(Vec<char>),
    Spec(Option<String>),
    Category(String),
    SpecItem,
    TypicalVar(String),
    SpecVar(String),
    SpecVarItem(stil::Selector),
    Variable(String),
    Selector(String),
    SelectorItem(String, stil::Selector),
    ScanStructures(Option<String>),
    ScanChain(String),
    ScanLength(u64),
    ScanOutLength(u64),
    ScanCells,
    ScanMasterClock,
    ScanSlaveClock,
    ScanInversion(u8),
    ScanInName(String),
    ScanOutName(String),
    Not,
    Pattern(String),
    TimeUnit,
    Vector,
    CyclizedData,
    NonCyclizedData,
    Repeat(u64),
    WaveformFormat,
    HexFormat(Option<String>),
    DecFormat(Option<String>),
    Data(String),
    TimeValue(u64),
    WaveformRef(String),
    Condition,
    Call(String),
    Macro(String),
    Loop(u64),
    MatchLoop(Option<u64>),
    Goto(String),
    BreakPoint,
    IDDQ,
    StopStatement,
    Comment(String),
    UserKeywords,
    UserFunctions,
    Udb,
}

impl std::fmt::Display for STIL {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match &self {
            _ => write!(f, "{}", format!("{:?}", self)),
        }
    }
}