scarf_syntax/instantiations/instantiation/
module_instantiation.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct ModuleInstantiation<'a>(
9 pub ModuleIdentifier<'a>,
10 pub Option<ParameterValueAssignment<'a>>,
11 pub HierarchicalInstance<'a>,
12 pub Vec<(
13 Metadata<'a>, HierarchicalInstance<'a>,
15 )>,
16 pub Metadata<'a>, );
18
19#[derive(Clone, Debug, PartialEq)]
20pub struct ParameterValueAssignment<'a>(
21 pub Metadata<'a>, pub Metadata<'a>, pub ListOfParameterValueAssignments<'a>,
24 pub Metadata<'a>, );
26
27#[derive(Clone, Debug, PartialEq)]
28pub enum ListOfParameterValueAssignments<'a> {
29 Ordered(
30 Box<(
31 OrderedParameterAssignment<'a>,
32 Vec<(
33 Metadata<'a>, OrderedParameterAssignment<'a>,
35 )>,
36 )>,
37 ),
38 Named(
39 Box<(
40 NamedParameterAssignment<'a>,
41 Vec<(
42 Metadata<'a>, NamedParameterAssignment<'a>,
44 )>,
45 )>,
46 ),
47}
48
49#[derive(Clone, Debug, PartialEq)]
50pub struct OrderedParameterAssignment<'a>(pub ParamExpression<'a>);
51
52#[derive(Clone, Debug, PartialEq)]
53pub struct NamedParameterAssignment<'a>(
54 pub Metadata<'a>, pub ParameterIdentifier<'a>,
56 pub Metadata<'a>, pub Option<ParamExpression<'a>>,
58 pub Metadata<'a>, );
60
61#[derive(Clone, Debug, PartialEq)]
62pub struct HierarchicalInstance<'a>(
63 pub NameOfInstance<'a>,
64 pub Metadata<'a>, pub Option<ListOfPortConnections<'a>>,
66 pub Metadata<'a>, );
68
69#[derive(Clone, Debug, PartialEq)]
70pub struct NameOfInstance<'a>(
71 pub InstanceIdentifier<'a>,
72 pub Vec<UnpackedDimension<'a>>,
73);
74
75#[derive(Clone, Debug, PartialEq)]
76pub enum ListOfPortConnections<'a> {
77 Ordered(
78 Box<(
79 OrderedPortConnection<'a>,
80 Vec<(
81 Metadata<'a>, OrderedPortConnection<'a>,
83 )>,
84 )>,
85 ),
86 Named(
87 Box<(
88 NamedPortConnection<'a>,
89 Vec<(
90 Metadata<'a>, NamedPortConnection<'a>,
92 )>,
93 )>,
94 ),
95}
96
97#[derive(Clone, Debug, PartialEq)]
98pub struct OrderedPortConnection<'a>(
99 pub Vec<AttributeInstance<'a>>,
100 pub Option<Expression<'a>>,
101);
102
103#[derive(Clone, Debug, PartialEq)]
104pub enum NamedPortConnection<'a> {
105 Named(
106 Box<(
107 Vec<AttributeInstance<'a>>,
108 Metadata<'a>, PortIdentifier<'a>,
110 Option<(
111 Metadata<'a>, Option<Expression<'a>>,
113 Metadata<'a>, )>,
115 )>,
116 ),
117 Wildcard(
118 Box<(
119 Vec<AttributeInstance<'a>>,
120 Metadata<'a>, Metadata<'a>, )>,
123 ),
124}