sv_parser_syntaxtree/udp_declaration_and_instantiation/
udp_ports.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub struct UdpPortList {
7    pub nodes: (
8        OutputPortIdentifier,
9        Symbol,
10        List<Symbol, InputPortIdentifier>,
11    ),
12}
13
14#[derive(Clone, Debug, PartialEq, Node)]
15pub struct UdpDeclarationPortList {
16    pub nodes: (
17        UdpOutputDeclaration,
18        Symbol,
19        List<Symbol, UdpInputDeclaration>,
20    ),
21}
22
23#[derive(Clone, Debug, PartialEq, Node)]
24pub enum UdpPortDeclaration {
25    UdpOutputDeclaration(Box<(UdpOutputDeclaration, Symbol)>),
26    UdpInputDeclaration(Box<(UdpInputDeclaration, Symbol)>),
27    UdpRegDeclaration(Box<(UdpRegDeclaration, Symbol)>),
28}
29
30#[derive(Clone, Debug, PartialEq, Node)]
31pub enum UdpOutputDeclaration {
32    Nonreg(Box<UdpOutputDeclarationNonreg>),
33    Reg(Box<UdpOutputDeclarationReg>),
34}
35
36#[derive(Clone, Debug, PartialEq, Node)]
37pub struct UdpOutputDeclarationNonreg {
38    pub nodes: (Vec<AttributeInstance>, Keyword, PortIdentifier),
39}
40
41#[derive(Clone, Debug, PartialEq, Node)]
42pub struct UdpOutputDeclarationReg {
43    pub nodes: (
44        Vec<AttributeInstance>,
45        Keyword,
46        Keyword,
47        PortIdentifier,
48        Option<(Symbol, ConstantExpression)>,
49    ),
50}
51
52#[derive(Clone, Debug, PartialEq, Node)]
53pub struct UdpInputDeclaration {
54    pub nodes: (Vec<AttributeInstance>, Keyword, ListOfUdpPortIdentifiers),
55}
56
57#[derive(Clone, Debug, PartialEq, Node)]
58pub struct UdpRegDeclaration {
59    pub nodes: (Vec<AttributeInstance>, Keyword, VariableIdentifier),
60}