use crate::*;
#[derive(Clone, Debug, PartialEq)]
pub struct UdpPortList<'a>(
pub OutputPortIdentifier<'a>,
pub Metadata<'a>, pub InputPortIdentifier<'a>,
pub Vec<(
Metadata<'a>, // ,
InputPortIdentifier<'a>,
)>,
);
#[derive(Clone, Debug, PartialEq)]
pub struct UdpDeclarationPortList<'a>(
pub UdpOutputDeclaration<'a>,
pub Metadata<'a>, pub UdpInputDeclaration<'a>,
pub Vec<(
Metadata<'a>, // ,
UdpInputDeclaration<'a>,
)>,
);
#[derive(Clone, Debug, PartialEq)]
pub enum UdpPortDeclaration<'a> {
Output(
Box<(
UdpOutputDeclaration<'a>,
Metadata<'a>, // ;
)>,
),
Input(
Box<(
UdpInputDeclaration<'a>,
Metadata<'a>, // ;
)>,
),
Reg(
Box<(
UdpRegDeclaration<'a>,
Metadata<'a>, // ;
)>,
),
}
#[derive(Clone, Debug, PartialEq)]
pub enum UdpOutputDeclaration<'a> {
Combinational(
Box<(
Vec<AttributeInstance<'a>>,
Metadata<'a>, // output
PortIdentifier<'a>,
)>,
),
Sequential(
Box<(
Vec<AttributeInstance<'a>>,
Metadata<'a>, // output
Metadata<'a>, // reg
PortIdentifier<'a>,
Option<(
Metadata<'a>, // =
ConstantExpression<'a>,
)>,
)>,
),
}
#[derive(Clone, Debug, PartialEq)]
pub struct UdpInputDeclaration<'a>(
pub Vec<AttributeInstance<'a>>,
pub Metadata<'a>, pub ListOfUdpPortIdentifiers<'a>,
);
#[derive(Clone, Debug, PartialEq)]
pub struct UdpRegDeclaration<'a>(
pub Vec<AttributeInstance<'a>>,
pub Metadata<'a>, pub VariableIdentifier<'a>,
);