1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct ArrayIdentifier<'a>(pub Identifier<'a>);
9
10#[derive(Clone, Debug, PartialEq)]
11pub struct BlockIdentifier<'a>(pub Identifier<'a>);
12
13#[derive(Clone, Debug, PartialEq)]
14pub struct BinIdentifier<'a>(pub Identifier<'a>);
15
16#[derive(Clone, Debug, PartialEq)]
17pub struct CIdentifier<'a>(pub &'a str, pub Metadata<'a>);
18
19#[derive(Clone, Debug, PartialEq)]
20pub struct CellIdentifier<'a>(pub Identifier<'a>);
21
22#[derive(Clone, Debug, PartialEq)]
23pub struct CheckerIdentifier<'a>(pub Identifier<'a>);
24
25#[derive(Clone, Debug, PartialEq)]
26pub struct ClassIdentifier<'a>(pub Identifier<'a>);
27
28#[derive(Clone, Debug, PartialEq)]
29pub struct ClassVariableIdentifier<'a>(pub VariableIdentifier<'a>);
30
31#[derive(Clone, Debug, PartialEq)]
32pub struct ClockingIdentifier<'a>(pub Identifier<'a>);
33
34#[derive(Clone, Debug, PartialEq)]
35pub struct ConfigIdentifier<'a>(pub Identifier<'a>);
36
37#[derive(Clone, Debug, PartialEq)]
38pub struct ConstIdentifier<'a>(pub Identifier<'a>);
39
40#[derive(Clone, Debug, PartialEq)]
41pub struct ConstraintIdentifier<'a>(pub Identifier<'a>);
42
43#[derive(Clone, Debug, PartialEq)]
44pub struct CovergroupIdentifier<'a>(pub Identifier<'a>);
45
46#[derive(Clone, Debug, PartialEq)]
47pub struct CovergroupVariableIdentifier<'a>(pub VariableIdentifier<'a>);
48
49#[derive(Clone, Debug, PartialEq)]
50pub struct CoverPointIdentifier<'a>(pub Identifier<'a>);
51
52#[derive(Clone, Debug, PartialEq)]
53pub struct CrossIdentifier<'a>(pub Identifier<'a>);
54
55#[derive(Clone, Debug, PartialEq)]
56pub struct DynamicArrayVariableIdentifier<'a>(pub VariableIdentifier<'a>);
57
58#[derive(Clone, Debug, PartialEq)]
59pub struct EnumIdentifier<'a>(pub Identifier<'a>);
60
61pub type EscapedIdentifier<'a> = (&'a str, Metadata<'a>);
62
63#[derive(Clone, Debug, PartialEq)]
64pub struct FormalIdentifier<'a>(pub Identifier<'a>);
65
66#[derive(Clone, Debug, PartialEq)]
67pub struct FormalPortIdentifier<'a>(pub Identifier<'a>);
68
69#[derive(Clone, Debug, PartialEq)]
70pub struct FunctionIdentifier<'a>(pub Identifier<'a>);
71
72#[derive(Clone, Debug, PartialEq)]
73pub struct GenerateBlockIdentifier<'a>(pub Identifier<'a>);
74
75#[derive(Clone, Debug, PartialEq)]
76pub struct GenvarIdentifier<'a>(pub Identifier<'a>);
77
78#[derive(Clone, Debug, PartialEq)]
79pub struct HierarchicalArrayIdentifier<'a>(pub HierarchicalIdentifier<'a>);
80
81#[derive(Clone, Debug, PartialEq)]
82pub struct HierarchicalBlockIdentifier<'a>(pub HierarchicalIdentifier<'a>);
83
84#[derive(Clone, Debug, PartialEq)]
85pub struct HierarchicalEventIdentifier<'a>(pub HierarchicalIdentifier<'a>);
86
87#[derive(Clone, Debug, PartialEq)]
88pub struct HierarchicalIdentifier<'a>(
89 pub Option<(Metadata<'a>, Metadata<'a>)>, pub Vec<(
91 Identifier<'a>,
92 ConstantBitSelect<'a>,
93 Metadata<'a>, )>,
95 pub Identifier<'a>,
96);
97
98#[derive(Clone, Debug, PartialEq)]
99pub struct HierarchicalNetIdentifier<'a>(pub HierarchicalIdentifier<'a>);
100
101#[derive(Clone, Debug, PartialEq)]
102pub struct HierarchicalParameterIdentifier<'a>(pub HierarchicalIdentifier<'a>);
103
104#[derive(Clone, Debug, PartialEq)]
105pub struct HierarchicalPropertyIdentifier<'a>(pub HierarchicalIdentifier<'a>);
106
107#[derive(Clone, Debug, PartialEq)]
108pub struct HierarchicalSequenceIdentifier<'a>(pub HierarchicalIdentifier<'a>);
109
110#[derive(Clone, Debug, PartialEq)]
111pub struct HierarchicalTaskIdentifier<'a>(pub HierarchicalIdentifier<'a>);
112
113#[derive(Clone, Debug, PartialEq)]
114pub struct HierarchicalTfIdentifier<'a>(pub HierarchicalIdentifier<'a>);
115
116#[derive(Clone, Debug, PartialEq)]
117pub struct HierarchicalVariableIdentifier<'a>(pub HierarchicalIdentifier<'a>);
118
119#[derive(Clone, Debug, PartialEq)]
120pub enum Identifier<'a> {
121 SimpleIdentifier(SimpleIdentifier<'a>),
122 EscapedIdentifier(EscapedIdentifier<'a>),
123}
124
125#[derive(Clone, Debug, PartialEq)]
126pub struct IndexVariableIdentifier<'a>(pub Identifier<'a>);
127
128#[derive(Clone, Debug, PartialEq)]
129pub struct InterfaceIdentifier<'a>(pub Identifier<'a>);
130
131#[derive(Clone, Debug, PartialEq)]
132pub struct InterfacePortIdentifier<'a>(pub Identifier<'a>);
133
134#[derive(Clone, Debug, PartialEq)]
135pub struct InoutPortIdentifier<'a>(pub Identifier<'a>);
136
137#[derive(Clone, Debug, PartialEq)]
138pub struct InputPortIdentifier<'a>(pub Identifier<'a>);
139
140#[derive(Clone, Debug, PartialEq)]
141pub struct InstanceIdentifier<'a>(pub Identifier<'a>);
142
143#[derive(Clone, Debug, PartialEq)]
144pub struct LibraryIdentifier<'a>(pub Identifier<'a>);
145
146#[derive(Clone, Debug, PartialEq)]
147pub struct MemberIdentifier<'a>(pub Identifier<'a>);
148
149#[derive(Clone, Debug, PartialEq)]
150pub struct MethodIdentifier<'a>(pub Identifier<'a>);
151
152#[derive(Clone, Debug, PartialEq)]
153pub struct ModportIdentifier<'a>(pub Identifier<'a>);
154
155#[derive(Clone, Debug, PartialEq)]
156pub struct ModuleIdentifier<'a>(pub Identifier<'a>);
157
158#[derive(Clone, Debug, PartialEq)]
159pub struct NetIdentifier<'a>(pub Identifier<'a>);
160
161#[derive(Clone, Debug, PartialEq)]
162pub struct NettypeIdentifier<'a>(pub Identifier<'a>);
163
164#[derive(Clone, Debug, PartialEq)]
165pub struct OutputPortIdentifier<'a>(pub Identifier<'a>);
166
167#[derive(Clone, Debug, PartialEq)]
168pub struct PackageIdentifier<'a>(pub Identifier<'a>);
169
170#[derive(Clone, Debug, PartialEq)]
171pub enum PackageScope<'a> {
172 Identifier(Box<(PackageIdentifier<'a>, Metadata<'a>)>),
173 Unit(Box<(Metadata<'a>, Metadata<'a>)>),
174}
175
176#[derive(Clone, Debug, PartialEq)]
177pub struct ParameterIdentifier<'a>(pub Identifier<'a>);
178
179#[derive(Clone, Debug, PartialEq)]
180pub struct PortIdentifier<'a>(pub Identifier<'a>);
181
182#[derive(Clone, Debug, PartialEq)]
183pub struct ProgramIdentifier<'a>(pub Identifier<'a>);
184
185#[derive(Clone, Debug, PartialEq)]
186pub struct PropertyIdentifier<'a>(pub Identifier<'a>);
187
188#[derive(Clone, Debug, PartialEq)]
189pub struct PsClassIdentifier<'a>(
190 pub Option<PackageScope<'a>>,
191 pub ClassIdentifier<'a>,
192);
193
194#[derive(Clone, Debug, PartialEq)]
195pub struct PsCovergroupIdentifier<'a>(
196 pub Option<PackageScope<'a>>,
197 pub CovergroupIdentifier<'a>,
198);
199
200#[derive(Clone, Debug, PartialEq)]
201pub struct PsCheckerIdentifier<'a>(
202 pub Option<PackageScope<'a>>,
203 pub CheckerIdentifier<'a>,
204);
205
206#[derive(Clone, Debug, PartialEq)]
207pub struct PsIdentifier<'a>(pub Option<PackageScope<'a>>, pub Identifier<'a>);
208
209#[derive(Clone, Debug, PartialEq)]
210pub struct PsOrHierarchicalArrayIdentifier<'a>(
211 pub Option<ImplicitClassHandleOrClassScopeOrPackageScope<'a>>,
212 pub HierarchicalArrayIdentifier<'a>,
213);
214
215#[derive(Clone, Debug, PartialEq)]
216pub enum PsOrHierarchicalNetIdentifier<'a> {
217 PackageScope(Option<PackageScope<'a>>, NetIdentifier<'a>),
218 Hierarchical(HierarchicalNetIdentifier<'a>),
219}
220
221#[derive(Clone, Debug, PartialEq)]
222pub enum PsOrHierarchicalPropertyIdentifier<'a> {
223 PackageScope(Option<PackageScope<'a>>, PropertyIdentifier<'a>),
224 Hierarchical(HierarchicalPropertyIdentifier<'a>),
225}
226
227#[derive(Clone, Debug, PartialEq)]
228pub enum PsOrHierarchicalSequenceIdentifier<'a> {
229 PackageScope(Option<PackageScope<'a>>, SequenceIdentifier<'a>),
230 Hierarchical(HierarchicalSequenceIdentifier<'a>),
231}
232
233#[derive(Clone, Debug, PartialEq)]
234pub enum PsOrHierarchicalTfIdentifier<'a> {
235 Scoped(
236 Option<ImplicitClassHandleOrClassScopeOrPackageScope<'a>>,
237 TfIdentifier<'a>,
238 ),
239 Hierarchical(HierarchicalTfIdentifier<'a>),
240}
241
242#[derive(Clone, Debug, PartialEq)]
243pub enum PackageOrClassScope<'a> {
244 ClassScope(ClassScope<'a>),
245 PackageScope(PackageScope<'a>),
246}
247
248#[derive(Clone, Debug, PartialEq)]
249pub enum PsParameterIdentifier<'a> {
250 Scoped(Option<PackageOrClassScope<'a>>, ParameterIdentifier<'a>),
251 Generated(
252 Vec<(
253 GenerateBlockIdentifier<'a>,
254 Option<(Metadata<'a>, ConstantExpression<'a>, Metadata<'a>)>,
255 Metadata<'a>, )>,
257 ParameterIdentifier<'a>,
258 ),
259}
260
261#[derive(Clone, Debug, PartialEq)]
262pub enum PsTypeIdentifierScope<'a> {
263 LocalScope(Metadata<'a>, Metadata<'a>),
264 ClassScope(ClassScope<'a>),
265 PackageScope(PackageScope<'a>),
266}
267
268#[derive(Clone, Debug, PartialEq)]
269pub struct PsTypeIdentifier<'a>(
270 pub Option<PsTypeIdentifierScope<'a>>,
271 pub TypeIdentifier<'a>,
272);
273
274#[derive(Clone, Debug, PartialEq)]
275pub struct RsProductionIdentifier<'a>(pub Identifier<'a>);
276
277#[derive(Clone, Debug, PartialEq)]
278pub struct SequenceIdentifier<'a>(pub Identifier<'a>);
279
280#[derive(Clone, Debug, PartialEq)]
281pub struct SignalIdentifier<'a>(pub Identifier<'a>);
282
283pub type SimpleIdentifier<'a> = (&'a str, Metadata<'a>);
284
285#[derive(Clone, Debug, PartialEq)]
286pub struct SpecparamIdentifier<'a>(pub Identifier<'a>);
287
288#[derive(Clone, Debug, PartialEq)]
289pub struct SystemTfIdentifier<'a>(pub &'a str, pub Metadata<'a>);
290
291#[derive(Clone, Debug, PartialEq)]
292pub struct TaskIdentifier<'a>(pub Identifier<'a>);
293
294#[derive(Clone, Debug, PartialEq)]
295pub struct TfIdentifier<'a>(pub Identifier<'a>);
296
297#[derive(Clone, Debug, PartialEq)]
298pub struct TerminalIdentifier<'a>(pub Identifier<'a>);
299
300#[derive(Clone, Debug, PartialEq)]
301pub struct TopmoduleIdentifier<'a>(pub Identifier<'a>);
302
303#[derive(Clone, Debug, PartialEq)]
304pub struct TypeIdentifier<'a>(pub Identifier<'a>);
305
306#[derive(Clone, Debug, PartialEq)]
307pub struct UdpIdentifier<'a>(pub Identifier<'a>);
308
309#[derive(Clone, Debug, PartialEq)]
310pub struct VariableIdentifier<'a>(pub Identifier<'a>);