scarf_syntax/specify_section/
specify_block_terminals.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct ListOfPathInputs<'a>(
9 pub SpecifyInputTerminalDescriptor<'a>,
10 pub Vec<(
11 Metadata<'a>, SpecifyInputTerminalDescriptor<'a>,
13 )>,
14);
15
16#[derive(Clone, Debug, PartialEq)]
17pub struct ListOfPathOutputs<'a>(
18 pub SpecifyOutputTerminalDescriptor<'a>,
19 pub Vec<(
20 Metadata<'a>, SpecifyOutputTerminalDescriptor<'a>,
22 )>,
23);
24
25#[derive(Clone, Debug, PartialEq)]
26pub struct SpecifyInputTerminalDescriptor<'a>(
27 pub InputIdentifier<'a>,
28 pub Option<(
29 Metadata<'a>, ConstantRangeExpression<'a>,
31 Metadata<'a>, )>,
33);
34
35#[derive(Clone, Debug, PartialEq)]
36pub struct SpecifyOutputTerminalDescriptor<'a>(
37 pub OutputIdentifier<'a>,
38 pub Option<(
39 Metadata<'a>, ConstantRangeExpression<'a>,
41 Metadata<'a>, )>,
43);
44
45#[derive(Clone, Debug, PartialEq)]
46pub enum InputIdentifier<'a> {
47 Input(Box<InputPortIdentifier<'a>>),
48 Inout(Box<InoutPortIdentifier<'a>>),
49 Interface(
50 Box<(
51 InterfaceIdentifier<'a>,
52 Metadata<'a>, PortIdentifier<'a>,
54 )>,
55 ),
56}
57
58#[derive(Clone, Debug, PartialEq)]
59pub enum OutputIdentifier<'a> {
60 Output(Box<OutputPortIdentifier<'a>>),
61 Inout(Box<InoutPortIdentifier<'a>>),
62 Interface(
63 Box<(
64 InterfaceIdentifier<'a>,
65 Metadata<'a>, PortIdentifier<'a>,
67 )>,
68 ),
69}