1 // generated by gen-nodes from `fire-chunk.t'.  Do not edit.
2 
3 #ifndef FIRE_H
4 #define FIRE_H
5 
6 #include <freehdl/tree-supp.h>
7 #include <freehdl/fire-types.h>
8 #include <iostream>
9 
10 extern tree_chunk_info fire_chunk_info;
11 extern tree_ctype_info fire_string_ctype_info;
12 extern tree_ctype_info bool_ctype_info;
13 extern tree_ctype_info int_ctype_info;
14 extern tree_ctype_info IR_Kind_ctype_info;
15 extern tree_ctype_info IR_Character_ctype_info;
16 extern tree_ctype_info IR_String_ctype_info;
17 extern tree_ctype_info IR_SignalKind_ctype_info;
18 extern tree_ctype_info IR_Mode_ctype_info;
19 extern tree_ctype_info IR_Pure_ctype_info;
20 extern tree_ctype_info IR_Direction_ctype_info;
21 extern tree_ctype_info IR_DelayMechanism_ctype_info;
22 extern tree_ctype_info IR_StaticLevel_ctype_info;
23 struct IIR_PosInfo;
24 typedef IIR_PosInfo *pIIR_PosInfo;
25 extern tree_kind_info IR_POS_INFO_kind_info;
26 #define IR_POS_INFO (&IR_POS_INFO_kind_info)
27 struct IIR_PosInfo_TextFile;
28 typedef IIR_PosInfo_TextFile *pIIR_PosInfo_TextFile;
29 extern tree_kind_info IR_POS_INFO_TEXT_FILE_kind_info;
30 #define IR_POS_INFO_TEXT_FILE (&IR_POS_INFO_TEXT_FILE_kind_info)
31 struct IIR_PosInfo_Sheet;
32 typedef IIR_PosInfo_Sheet *pIIR_PosInfo_Sheet;
33 extern tree_kind_info IR_POS_INFO_SHEET_kind_info;
34 #define IR_POS_INFO_SHEET (&IR_POS_INFO_SHEET_kind_info)
35 struct IIR_Root;
36 typedef IIR_Root *pIIR_Root;
37 extern tree_kind_info IR_ROOT_kind_info;
38 #define IR_ROOT (&IR_ROOT_kind_info)
39 struct IIR_Dummy;
40 typedef IIR_Dummy *pIIR_Dummy;
41 extern tree_kind_info IR_DUMMY_kind_info;
42 #define IR_DUMMY (&IR_DUMMY_kind_info)
43 struct IIR_Signature;
44 typedef IIR_Signature *pIIR_Signature;
45 extern tree_kind_info IR_SIGNATURE_kind_info;
46 #define IR_SIGNATURE (&IR_SIGNATURE_kind_info)
47 struct IIR_Literal;
48 typedef IIR_Literal *pIIR_Literal;
49 extern tree_kind_info IR_LITERAL_kind_info;
50 #define IR_LITERAL (&IR_LITERAL_kind_info)
51 struct IIR_TextLiteral;
52 typedef IIR_TextLiteral *pIIR_TextLiteral;
53 extern tree_kind_info IR_TEXT_LITERAL_kind_info;
54 #define IR_TEXT_LITERAL (&IR_TEXT_LITERAL_kind_info)
55 struct IIR_Identifier;
56 typedef IIR_Identifier *pIIR_Identifier;
57 extern tree_kind_info IR_IDENTIFIER_kind_info;
58 #define IR_IDENTIFIER (&IR_IDENTIFIER_kind_info)
59 struct IIR_CharacterLiteral;
60 typedef IIR_CharacterLiteral *pIIR_CharacterLiteral;
61 extern tree_kind_info IR_CHARACTER_LITERAL_kind_info;
62 #define IR_CHARACTER_LITERAL (&IR_CHARACTER_LITERAL_kind_info)
63 struct IIR_StringLiteral;
64 typedef IIR_StringLiteral *pIIR_StringLiteral;
65 extern tree_kind_info IR_STRING_LITERAL_kind_info;
66 #define IR_STRING_LITERAL (&IR_STRING_LITERAL_kind_info)
67 struct IIR_AbstractLiteral;
68 typedef IIR_AbstractLiteral *pIIR_AbstractLiteral;
69 extern tree_kind_info IR_ABSTRACT_LITERAL_kind_info;
70 #define IR_ABSTRACT_LITERAL (&IR_ABSTRACT_LITERAL_kind_info)
71 struct IIR_IntegerLiteral;
72 typedef IIR_IntegerLiteral *pIIR_IntegerLiteral;
73 extern tree_kind_info IR_INTEGER_LITERAL_kind_info;
74 #define IR_INTEGER_LITERAL (&IR_INTEGER_LITERAL_kind_info)
75 struct IIR_FloatingPointLiteral;
76 typedef IIR_FloatingPointLiteral *pIIR_FloatingPointLiteral;
77 extern tree_kind_info IR_FLOATING_POINT_LITERAL_kind_info;
78 #define IR_FLOATING_POINT_LITERAL (&IR_FLOATING_POINT_LITERAL_kind_info)
79 struct IIR_Tuple;
80 typedef IIR_Tuple *pIIR_Tuple;
81 extern tree_kind_info IR_TUPLE_kind_info;
82 #define IR_TUPLE (&IR_TUPLE_kind_info)
83 struct IIR_AssociationElement;
84 typedef IIR_AssociationElement *pIIR_AssociationElement;
85 extern tree_kind_info IR_ASSOCIATION_ELEMENT_kind_info;
86 #define IR_ASSOCIATION_ELEMENT (&IR_ASSOCIATION_ELEMENT_kind_info)
87 struct IIR_AssociationElementByExpression;
88 typedef IIR_AssociationElementByExpression *pIIR_AssociationElementByExpression;
89 extern tree_kind_info IR_ASSOCIATION_ELEMENT_BY_EXPRESSION_kind_info;
90 #define IR_ASSOCIATION_ELEMENT_BY_EXPRESSION (&IR_ASSOCIATION_ELEMENT_BY_EXPRESSION_kind_info)
91 struct IIR_AssociationElementOpen;
92 typedef IIR_AssociationElementOpen *pIIR_AssociationElementOpen;
93 extern tree_kind_info IR_ASSOCIATION_ELEMENT_OPEN_kind_info;
94 #define IR_ASSOCIATION_ELEMENT_OPEN (&IR_ASSOCIATION_ELEMENT_OPEN_kind_info)
95 struct IIR_CaseStatementAlternative;
96 typedef IIR_CaseStatementAlternative *pIIR_CaseStatementAlternative;
97 extern tree_kind_info IR_CASE_STATEMENT_ALTERNATIVE_kind_info;
98 #define IR_CASE_STATEMENT_ALTERNATIVE (&IR_CASE_STATEMENT_ALTERNATIVE_kind_info)
99 struct IIR_Choice;
100 typedef IIR_Choice *pIIR_Choice;
101 extern tree_kind_info IR_CHOICE_kind_info;
102 #define IR_CHOICE (&IR_CHOICE_kind_info)
103 struct IIR_ChoiceByExpression;
104 typedef IIR_ChoiceByExpression *pIIR_ChoiceByExpression;
105 extern tree_kind_info IR_CHOICE_BY_EXPRESSION_kind_info;
106 #define IR_CHOICE_BY_EXPRESSION (&IR_CHOICE_BY_EXPRESSION_kind_info)
107 struct IIR_ChoiceByRange;
108 typedef IIR_ChoiceByRange *pIIR_ChoiceByRange;
109 extern tree_kind_info IR_CHOICE_BY_RANGE_kind_info;
110 #define IR_CHOICE_BY_RANGE (&IR_CHOICE_BY_RANGE_kind_info)
111 struct IIR_ChoiceByOthers;
112 typedef IIR_ChoiceByOthers *pIIR_ChoiceByOthers;
113 extern tree_kind_info IR_CHOICE_BY_OTHERS_kind_info;
114 #define IR_CHOICE_BY_OTHERS (&IR_CHOICE_BY_OTHERS_kind_info)
115 struct IIR_EntityClassEntry;
116 typedef IIR_EntityClassEntry *pIIR_EntityClassEntry;
117 extern tree_kind_info IR_ENTITY_CLASS_ENTRY_kind_info;
118 #define IR_ENTITY_CLASS_ENTRY (&IR_ENTITY_CLASS_ENTRY_kind_info)
119 struct IIR_WaveformElement;
120 typedef IIR_WaveformElement *pIIR_WaveformElement;
121 extern tree_kind_info IR_WAVEFORM_ELEMENT_kind_info;
122 #define IR_WAVEFORM_ELEMENT (&IR_WAVEFORM_ELEMENT_kind_info)
123 struct IIR_ElementAssociation;
124 typedef IIR_ElementAssociation *pIIR_ElementAssociation;
125 extern tree_kind_info IR_ELEMENT_ASSOCIATION_kind_info;
126 #define IR_ELEMENT_ASSOCIATION (&IR_ELEMENT_ASSOCIATION_kind_info)
127 struct IIR_IndexedAssociation;
128 typedef IIR_IndexedAssociation *pIIR_IndexedAssociation;
129 extern tree_kind_info IR_INDEXED_ASSOCIATION_kind_info;
130 #define IR_INDEXED_ASSOCIATION (&IR_INDEXED_ASSOCIATION_kind_info)
131 struct IIR_SingleIndexedAssociation;
132 typedef IIR_SingleIndexedAssociation *pIIR_SingleIndexedAssociation;
133 extern tree_kind_info IR_SINGLE_INDEXED_ASSOCIATION_kind_info;
134 #define IR_SINGLE_INDEXED_ASSOCIATION (&IR_SINGLE_INDEXED_ASSOCIATION_kind_info)
135 struct IIR_RangeIndexedAssociation;
136 typedef IIR_RangeIndexedAssociation *pIIR_RangeIndexedAssociation;
137 extern tree_kind_info IR_RANGE_INDEXED_ASSOCIATION_kind_info;
138 #define IR_RANGE_INDEXED_ASSOCIATION (&IR_RANGE_INDEXED_ASSOCIATION_kind_info)
139 struct IIR_SliceIndexedAssociation;
140 typedef IIR_SliceIndexedAssociation *pIIR_SliceIndexedAssociation;
141 extern tree_kind_info IR_SLICE_INDEXED_ASSOCIATION_kind_info;
142 #define IR_SLICE_INDEXED_ASSOCIATION (&IR_SLICE_INDEXED_ASSOCIATION_kind_info)
143 struct IIR_OthersIndexedAssociation;
144 typedef IIR_OthersIndexedAssociation *pIIR_OthersIndexedAssociation;
145 extern tree_kind_info IR_OTHERS_INDEXED_ASSOCIATION_kind_info;
146 #define IR_OTHERS_INDEXED_ASSOCIATION (&IR_OTHERS_INDEXED_ASSOCIATION_kind_info)
147 struct IIR_AttributeValue;
148 typedef IIR_AttributeValue *pIIR_AttributeValue;
149 extern tree_kind_info IR_ATTRIBUTE_VALUE_kind_info;
150 #define IR_ATTRIBUTE_VALUE (&IR_ATTRIBUTE_VALUE_kind_info)
151 struct IIR_List;
152 typedef IIR_List *pIIR_List;
153 extern tree_kind_info IR_LIST_kind_info;
154 #define IR_LIST (&IR_LIST_kind_info)
155 struct IIR_AssociationList;
156 typedef IIR_AssociationList *pIIR_AssociationList;
157 extern tree_kind_info IR_ASSOCIATION_LIST_kind_info;
158 #define IR_ASSOCIATION_LIST (&IR_ASSOCIATION_LIST_kind_info)
159 pIIR_AssociationList reverse (pIIR_AssociationList);
160 struct IIR_AttributeValueList;
161 typedef IIR_AttributeValueList *pIIR_AttributeValueList;
162 extern tree_kind_info IR_ATTRIBUTE_VALUE_LIST_kind_info;
163 #define IR_ATTRIBUTE_VALUE_LIST (&IR_ATTRIBUTE_VALUE_LIST_kind_info)
164 pIIR_AttributeValueList reverse (pIIR_AttributeValueList);
165 struct IIR_CaseStatementAlternativeList;
166 typedef IIR_CaseStatementAlternativeList *pIIR_CaseStatementAlternativeList;
167 extern tree_kind_info IR_CASE_STATEMENT_ALTERNATIVE_LIST_kind_info;
168 #define IR_CASE_STATEMENT_ALTERNATIVE_LIST (&IR_CASE_STATEMENT_ALTERNATIVE_LIST_kind_info)
169 pIIR_CaseStatementAlternativeList reverse (pIIR_CaseStatementAlternativeList);
170 struct IIR_ChoiceList;
171 typedef IIR_ChoiceList *pIIR_ChoiceList;
172 extern tree_kind_info IR_CHOICE_LIST_kind_info;
173 #define IR_CHOICE_LIST (&IR_CHOICE_LIST_kind_info)
174 pIIR_ChoiceList reverse (pIIR_ChoiceList);
175 struct IIR_ConcurrentStatementList;
176 typedef IIR_ConcurrentStatementList *pIIR_ConcurrentStatementList;
177 extern tree_kind_info IR_CONCURRENT_STATEMENT_LIST_kind_info;
178 #define IR_CONCURRENT_STATEMENT_LIST (&IR_CONCURRENT_STATEMENT_LIST_kind_info)
179 pIIR_ConcurrentStatementList reverse (pIIR_ConcurrentStatementList);
180 struct IIR_ConfigurationItemList;
181 typedef IIR_ConfigurationItemList *pIIR_ConfigurationItemList;
182 extern tree_kind_info IR_CONFIGURATION_ITEM_LIST_kind_info;
183 #define IR_CONFIGURATION_ITEM_LIST (&IR_CONFIGURATION_ITEM_LIST_kind_info)
184 pIIR_ConfigurationItemList reverse (pIIR_ConfigurationItemList);
185 struct IIR_DeclarationList;
186 typedef IIR_DeclarationList *pIIR_DeclarationList;
187 extern tree_kind_info IR_DECLARATION_LIST_kind_info;
188 #define IR_DECLARATION_LIST (&IR_DECLARATION_LIST_kind_info)
189 pIIR_DeclarationList reverse (pIIR_DeclarationList);
190 struct IIR_ElementDeclarationList;
191 typedef IIR_ElementDeclarationList *pIIR_ElementDeclarationList;
192 extern tree_kind_info IR_ELEMENT_DECLARATION_LIST_kind_info;
193 #define IR_ELEMENT_DECLARATION_LIST (&IR_ELEMENT_DECLARATION_LIST_kind_info)
194 pIIR_ElementDeclarationList reverse (pIIR_ElementDeclarationList);
195 struct IIR_EntityClassEntryList;
196 typedef IIR_EntityClassEntryList *pIIR_EntityClassEntryList;
197 extern tree_kind_info IR_ENTITY_CLASS_ENTRY_LIST_kind_info;
198 #define IR_ENTITY_CLASS_ENTRY_LIST (&IR_ENTITY_CLASS_ENTRY_LIST_kind_info)
199 pIIR_EntityClassEntryList reverse (pIIR_EntityClassEntryList);
200 struct IIR_EnumerationLiteralList;
201 typedef IIR_EnumerationLiteralList *pIIR_EnumerationLiteralList;
202 extern tree_kind_info IR_ENUMERATION_LITERAL_LIST_kind_info;
203 #define IR_ENUMERATION_LITERAL_LIST (&IR_ENUMERATION_LITERAL_LIST_kind_info)
204 pIIR_EnumerationLiteralList reverse (pIIR_EnumerationLiteralList);
205 struct IIR_InterfaceList;
206 typedef IIR_InterfaceList *pIIR_InterfaceList;
207 extern tree_kind_info IR_INTERFACE_LIST_kind_info;
208 #define IR_INTERFACE_LIST (&IR_INTERFACE_LIST_kind_info)
209 pIIR_InterfaceList reverse (pIIR_InterfaceList);
210 struct IIR_LibraryUnitList;
211 typedef IIR_LibraryUnitList *pIIR_LibraryUnitList;
212 extern tree_kind_info IR_LIBRARY_UNIT_LIST_kind_info;
213 #define IR_LIBRARY_UNIT_LIST (&IR_LIBRARY_UNIT_LIST_kind_info)
214 pIIR_LibraryUnitList reverse (pIIR_LibraryUnitList);
215 struct IIR_SequentialStatementList;
216 typedef IIR_SequentialStatementList *pIIR_SequentialStatementList;
217 extern tree_kind_info IR_SEQUENTIAL_STATEMENT_LIST_kind_info;
218 #define IR_SEQUENTIAL_STATEMENT_LIST (&IR_SEQUENTIAL_STATEMENT_LIST_kind_info)
219 pIIR_SequentialStatementList reverse (pIIR_SequentialStatementList);
220 struct IIR_UnitList;
221 typedef IIR_UnitList *pIIR_UnitList;
222 extern tree_kind_info IR_UNIT_LIST_kind_info;
223 #define IR_UNIT_LIST (&IR_UNIT_LIST_kind_info)
224 pIIR_UnitList reverse (pIIR_UnitList);
225 struct IIR_WaveformList;
226 typedef IIR_WaveformList *pIIR_WaveformList;
227 extern tree_kind_info IR_WAVEFORM_LIST_kind_info;
228 #define IR_WAVEFORM_LIST (&IR_WAVEFORM_LIST_kind_info)
229 pIIR_WaveformList reverse (pIIR_WaveformList);
230 struct IIR_TypeList;
231 typedef IIR_TypeList *pIIR_TypeList;
232 extern tree_kind_info IR_TYPE_LIST_kind_info;
233 #define IR_TYPE_LIST (&IR_TYPE_LIST_kind_info)
234 pIIR_TypeList reverse (pIIR_TypeList);
235 struct IIR_ExpressionList;
236 typedef IIR_ExpressionList *pIIR_ExpressionList;
237 extern tree_kind_info IR_EXPRESSION_LIST_kind_info;
238 #define IR_EXPRESSION_LIST (&IR_EXPRESSION_LIST_kind_info)
239 pIIR_ExpressionList reverse (pIIR_ExpressionList);
240 struct IIR_IndexedAssociationList;
241 typedef IIR_IndexedAssociationList *pIIR_IndexedAssociationList;
242 extern tree_kind_info IR_INDEXED_ASSOCIATION_LIST_kind_info;
243 #define IR_INDEXED_ASSOCIATION_LIST (&IR_INDEXED_ASSOCIATION_LIST_kind_info)
244 pIIR_IndexedAssociationList reverse (pIIR_IndexedAssociationList);
245 struct IIR_ElementAssociationList;
246 typedef IIR_ElementAssociationList *pIIR_ElementAssociationList;
247 extern tree_kind_info IR_ELEMENT_ASSOCIATION_LIST_kind_info;
248 #define IR_ELEMENT_ASSOCIATION_LIST (&IR_ELEMENT_ASSOCIATION_LIST_kind_info)
249 pIIR_ElementAssociationList reverse (pIIR_ElementAssociationList);
250 struct IIR_ComponentInstantiationList;
251 typedef IIR_ComponentInstantiationList *pIIR_ComponentInstantiationList;
252 extern tree_kind_info IR_COMPONENT_INSTANTIATION_LIST_kind_info;
253 #define IR_COMPONENT_INSTANTIATION_LIST (&IR_COMPONENT_INSTANTIATION_LIST_kind_info)
254 pIIR_ComponentInstantiationList reverse (pIIR_ComponentInstantiationList);
255 struct IIR_ConfigurationSpecificationList;
256 typedef IIR_ConfigurationSpecificationList *pIIR_ConfigurationSpecificationList;
257 extern tree_kind_info IR_CONFIGURATION_SPECIFICATION_LIST_kind_info;
258 #define IR_CONFIGURATION_SPECIFICATION_LIST (&IR_CONFIGURATION_SPECIFICATION_LIST_kind_info)
259 pIIR_ConfigurationSpecificationList reverse (pIIR_ConfigurationSpecificationList);
260 struct IIR_IdentifierList;
261 typedef IIR_IdentifierList *pIIR_IdentifierList;
262 extern tree_kind_info IR_IDENTIFIER_LIST_kind_info;
263 #define IR_IDENTIFIER_LIST (&IR_IDENTIFIER_LIST_kind_info)
264 pIIR_IdentifierList reverse (pIIR_IdentifierList);
265 struct IIR_Range;
266 typedef IIR_Range *pIIR_Range;
267 extern tree_kind_info IR_RANGE_kind_info;
268 #define IR_RANGE (&IR_RANGE_kind_info)
269 struct IIR_ExplicitRange;
270 typedef IIR_ExplicitRange *pIIR_ExplicitRange;
271 extern tree_kind_info IR_EXPLICIT_RANGE_kind_info;
272 #define IR_EXPLICIT_RANGE (&IR_EXPLICIT_RANGE_kind_info)
273 struct IIR_ArrayRange;
274 typedef IIR_ArrayRange *pIIR_ArrayRange;
275 extern tree_kind_info IR_ARRAY_RANGE_kind_info;
276 #define IR_ARRAY_RANGE (&IR_ARRAY_RANGE_kind_info)
277 struct IIR_Attr_ArrayRANGE;
278 typedef IIR_Attr_ArrayRANGE *pIIR_Attr_ArrayRANGE;
279 extern tree_kind_info IR_ATTR_ARRAY_RANGE_kind_info;
280 #define IR_ATTR_ARRAY_RANGE (&IR_ATTR_ARRAY_RANGE_kind_info)
281 struct IIR_Attr_ArrayREVERSE_RANGE;
282 typedef IIR_Attr_ArrayREVERSE_RANGE *pIIR_Attr_ArrayREVERSE_RANGE;
283 extern tree_kind_info IR_ATTR_ARRAY_REVERSE_RANGE_kind_info;
284 #define IR_ATTR_ARRAY_REVERSE_RANGE (&IR_ATTR_ARRAY_REVERSE_RANGE_kind_info)
285 struct IIR_Type;
286 typedef IIR_Type *pIIR_Type;
287 extern tree_kind_info IR_TYPE_kind_info;
288 #define IR_TYPE (&IR_TYPE_kind_info)
289 struct IIR_Subtype;
290 typedef IIR_Subtype *pIIR_Subtype;
291 extern tree_kind_info IR_SUBTYPE_kind_info;
292 #define IR_SUBTYPE (&IR_SUBTYPE_kind_info)
293 struct IIR_ScalarType;
294 typedef IIR_ScalarType *pIIR_ScalarType;
295 extern tree_kind_info IR_SCALAR_TYPE_kind_info;
296 #define IR_SCALAR_TYPE (&IR_SCALAR_TYPE_kind_info)
297 struct IIR_ScalarSubtype;
298 typedef IIR_ScalarSubtype *pIIR_ScalarSubtype;
299 extern tree_kind_info IR_SCALAR_SUBTYPE_kind_info;
300 #define IR_SCALAR_SUBTYPE (&IR_SCALAR_SUBTYPE_kind_info)
301 struct IIR_EnumerationType;
302 typedef IIR_EnumerationType *pIIR_EnumerationType;
303 extern tree_kind_info IR_ENUMERATION_TYPE_kind_info;
304 #define IR_ENUMERATION_TYPE (&IR_ENUMERATION_TYPE_kind_info)
305 struct IIR_IntegerType;
306 typedef IIR_IntegerType *pIIR_IntegerType;
307 extern tree_kind_info IR_INTEGER_TYPE_kind_info;
308 #define IR_INTEGER_TYPE (&IR_INTEGER_TYPE_kind_info)
309 struct IIR_FloatingType;
310 typedef IIR_FloatingType *pIIR_FloatingType;
311 extern tree_kind_info IR_FLOATING_TYPE_kind_info;
312 #define IR_FLOATING_TYPE (&IR_FLOATING_TYPE_kind_info)
313 struct IIR_PhysicalType;
314 typedef IIR_PhysicalType *pIIR_PhysicalType;
315 extern tree_kind_info IR_PHYSICAL_TYPE_kind_info;
316 #define IR_PHYSICAL_TYPE (&IR_PHYSICAL_TYPE_kind_info)
317 struct IIR_CompositeType;
318 typedef IIR_CompositeType *pIIR_CompositeType;
319 extern tree_kind_info IR_COMPOSITE_TYPE_kind_info;
320 #define IR_COMPOSITE_TYPE (&IR_COMPOSITE_TYPE_kind_info)
321 struct IIR_RecordType;
322 typedef IIR_RecordType *pIIR_RecordType;
323 extern tree_kind_info IR_RECORD_TYPE_kind_info;
324 #define IR_RECORD_TYPE (&IR_RECORD_TYPE_kind_info)
325 struct IIR_RecordSubtype;
326 typedef IIR_RecordSubtype *pIIR_RecordSubtype;
327 extern tree_kind_info IR_RECORD_SUBTYPE_kind_info;
328 #define IR_RECORD_SUBTYPE (&IR_RECORD_SUBTYPE_kind_info)
329 struct IIR_AccessType;
330 typedef IIR_AccessType *pIIR_AccessType;
331 extern tree_kind_info IR_ACCESS_TYPE_kind_info;
332 #define IR_ACCESS_TYPE (&IR_ACCESS_TYPE_kind_info)
333 struct IIR_FileType;
334 typedef IIR_FileType *pIIR_FileType;
335 extern tree_kind_info IR_FILE_TYPE_kind_info;
336 #define IR_FILE_TYPE (&IR_FILE_TYPE_kind_info)
337 struct IIR_ArrayType;
338 typedef IIR_ArrayType *pIIR_ArrayType;
339 extern tree_kind_info IR_ARRAY_TYPE_kind_info;
340 #define IR_ARRAY_TYPE (&IR_ARRAY_TYPE_kind_info)
341 struct IIR_ArraySubtype;
342 typedef IIR_ArraySubtype *pIIR_ArraySubtype;
343 extern tree_kind_info IR_ARRAY_SUBTYPE_kind_info;
344 #define IR_ARRAY_SUBTYPE (&IR_ARRAY_SUBTYPE_kind_info)
345 struct IIR_Declaration;
346 typedef IIR_Declaration *pIIR_Declaration;
347 extern tree_kind_info IR_DECLARATION_kind_info;
348 #define IR_DECLARATION (&IR_DECLARATION_kind_info)
349 struct IIR_DeclarativeRegion;
350 typedef IIR_DeclarativeRegion *pIIR_DeclarativeRegion;
351 extern tree_kind_info IR_DECLARATIVE_REGION_kind_info;
352 #define IR_DECLARATIVE_REGION (&IR_DECLARATIVE_REGION_kind_info)
353 struct IIR_LoopDeclarativeRegion;
354 typedef IIR_LoopDeclarativeRegion *pIIR_LoopDeclarativeRegion;
355 extern tree_kind_info IR_LOOP_DECLARATIVE_REGION_kind_info;
356 #define IR_LOOP_DECLARATIVE_REGION (&IR_LOOP_DECLARATIVE_REGION_kind_info)
357 struct IIR_SubprogramDeclaration;
358 typedef IIR_SubprogramDeclaration *pIIR_SubprogramDeclaration;
359 extern tree_kind_info IR_SUBPROGRAM_DECLARATION_kind_info;
360 #define IR_SUBPROGRAM_DECLARATION (&IR_SUBPROGRAM_DECLARATION_kind_info)
361 struct IIR_ProcedureDeclaration;
362 typedef IIR_ProcedureDeclaration *pIIR_ProcedureDeclaration;
363 extern tree_kind_info IR_PROCEDURE_DECLARATION_kind_info;
364 #define IR_PROCEDURE_DECLARATION (&IR_PROCEDURE_DECLARATION_kind_info)
365 struct IIR_PredefinedProcedureDeclaration;
366 typedef IIR_PredefinedProcedureDeclaration *pIIR_PredefinedProcedureDeclaration;
367 extern tree_kind_info IR_PREDEFINED_PROCEDURE_DECLARATION_kind_info;
368 #define IR_PREDEFINED_PROCEDURE_DECLARATION (&IR_PREDEFINED_PROCEDURE_DECLARATION_kind_info)
369 struct IIR_FunctionDeclaration;
370 typedef IIR_FunctionDeclaration *pIIR_FunctionDeclaration;
371 extern tree_kind_info IR_FUNCTION_DECLARATION_kind_info;
372 #define IR_FUNCTION_DECLARATION (&IR_FUNCTION_DECLARATION_kind_info)
373 struct IIR_PredefinedFunctionDeclaration;
374 typedef IIR_PredefinedFunctionDeclaration *pIIR_PredefinedFunctionDeclaration;
375 extern tree_kind_info IR_PREDEFINED_FUNCTION_DECLARATION_kind_info;
376 #define IR_PREDEFINED_FUNCTION_DECLARATION (&IR_PREDEFINED_FUNCTION_DECLARATION_kind_info)
377 struct IIR_EnumerationLiteral;
378 typedef IIR_EnumerationLiteral *pIIR_EnumerationLiteral;
379 extern tree_kind_info IR_ENUMERATION_LITERAL_kind_info;
380 #define IR_ENUMERATION_LITERAL (&IR_ENUMERATION_LITERAL_kind_info)
381 struct IIR_ElementDeclaration;
382 typedef IIR_ElementDeclaration *pIIR_ElementDeclaration;
383 extern tree_kind_info IR_ELEMENT_DECLARATION_kind_info;
384 #define IR_ELEMENT_DECLARATION (&IR_ELEMENT_DECLARATION_kind_info)
385 struct IIR_TypeDeclaration;
386 typedef IIR_TypeDeclaration *pIIR_TypeDeclaration;
387 extern tree_kind_info IR_TYPE_DECLARATION_kind_info;
388 #define IR_TYPE_DECLARATION (&IR_TYPE_DECLARATION_kind_info)
389 struct IIR_SubtypeDeclaration;
390 typedef IIR_SubtypeDeclaration *pIIR_SubtypeDeclaration;
391 extern tree_kind_info IR_SUBTYPE_DECLARATION_kind_info;
392 #define IR_SUBTYPE_DECLARATION (&IR_SUBTYPE_DECLARATION_kind_info)
393 struct IIR_ObjectDeclaration;
394 typedef IIR_ObjectDeclaration *pIIR_ObjectDeclaration;
395 extern tree_kind_info IR_OBJECT_DECLARATION_kind_info;
396 #define IR_OBJECT_DECLARATION (&IR_OBJECT_DECLARATION_kind_info)
397 struct IIR_ConstantDeclaration;
398 typedef IIR_ConstantDeclaration *pIIR_ConstantDeclaration;
399 extern tree_kind_info IR_CONSTANT_DECLARATION_kind_info;
400 #define IR_CONSTANT_DECLARATION (&IR_CONSTANT_DECLARATION_kind_info)
401 struct IIR_VariableDeclaration;
402 typedef IIR_VariableDeclaration *pIIR_VariableDeclaration;
403 extern tree_kind_info IR_VARIABLE_DECLARATION_kind_info;
404 #define IR_VARIABLE_DECLARATION (&IR_VARIABLE_DECLARATION_kind_info)
405 struct IIR_SharedVariableDeclaration;
406 typedef IIR_SharedVariableDeclaration *pIIR_SharedVariableDeclaration;
407 extern tree_kind_info IR_SHARED_VARIABLE_DECLARATION_kind_info;
408 #define IR_SHARED_VARIABLE_DECLARATION (&IR_SHARED_VARIABLE_DECLARATION_kind_info)
409 struct IIR_SignalDeclaration;
410 typedef IIR_SignalDeclaration *pIIR_SignalDeclaration;
411 extern tree_kind_info IR_SIGNAL_DECLARATION_kind_info;
412 #define IR_SIGNAL_DECLARATION (&IR_SIGNAL_DECLARATION_kind_info)
413 struct IIR_FileDeclaration;
414 typedef IIR_FileDeclaration *pIIR_FileDeclaration;
415 extern tree_kind_info IR_FILE_DECLARATION_kind_info;
416 #define IR_FILE_DECLARATION (&IR_FILE_DECLARATION_kind_info)
417 struct IIR_InterfaceDeclaration;
418 typedef IIR_InterfaceDeclaration *pIIR_InterfaceDeclaration;
419 extern tree_kind_info IR_INTERFACE_DECLARATION_kind_info;
420 #define IR_INTERFACE_DECLARATION (&IR_INTERFACE_DECLARATION_kind_info)
421 struct IIR_ConstantInterfaceDeclaration;
422 typedef IIR_ConstantInterfaceDeclaration *pIIR_ConstantInterfaceDeclaration;
423 extern tree_kind_info IR_CONSTANT_INTERFACE_DECLARATION_kind_info;
424 #define IR_CONSTANT_INTERFACE_DECLARATION (&IR_CONSTANT_INTERFACE_DECLARATION_kind_info)
425 struct IIR_VariableInterfaceDeclaration;
426 typedef IIR_VariableInterfaceDeclaration *pIIR_VariableInterfaceDeclaration;
427 extern tree_kind_info IR_VARIABLE_INTERFACE_DECLARATION_kind_info;
428 #define IR_VARIABLE_INTERFACE_DECLARATION (&IR_VARIABLE_INTERFACE_DECLARATION_kind_info)
429 struct IIR_SignalInterfaceDeclaration;
430 typedef IIR_SignalInterfaceDeclaration *pIIR_SignalInterfaceDeclaration;
431 extern tree_kind_info IR_SIGNAL_INTERFACE_DECLARATION_kind_info;
432 #define IR_SIGNAL_INTERFACE_DECLARATION (&IR_SIGNAL_INTERFACE_DECLARATION_kind_info)
433 struct IIR_FileInterfaceDeclaration;
434 typedef IIR_FileInterfaceDeclaration *pIIR_FileInterfaceDeclaration;
435 extern tree_kind_info IR_FILE_INTERFACE_DECLARATION_kind_info;
436 #define IR_FILE_INTERFACE_DECLARATION (&IR_FILE_INTERFACE_DECLARATION_kind_info)
437 struct IIR_AttributeDeclaration;
438 typedef IIR_AttributeDeclaration *pIIR_AttributeDeclaration;
439 extern tree_kind_info IR_ATTRIBUTE_DECLARATION_kind_info;
440 #define IR_ATTRIBUTE_DECLARATION (&IR_ATTRIBUTE_DECLARATION_kind_info)
441 struct IIR_ComponentDeclaration;
442 typedef IIR_ComponentDeclaration *pIIR_ComponentDeclaration;
443 extern tree_kind_info IR_COMPONENT_DECLARATION_kind_info;
444 #define IR_COMPONENT_DECLARATION (&IR_COMPONENT_DECLARATION_kind_info)
445 struct IIR_LibraryDeclaration;
446 typedef IIR_LibraryDeclaration *pIIR_LibraryDeclaration;
447 extern tree_kind_info IR_LIBRARY_DECLARATION_kind_info;
448 #define IR_LIBRARY_DECLARATION (&IR_LIBRARY_DECLARATION_kind_info)
449 struct IIR_LibraryUnit;
450 typedef IIR_LibraryUnit *pIIR_LibraryUnit;
451 extern tree_kind_info IR_LIBRARY_UNIT_kind_info;
452 #define IR_LIBRARY_UNIT (&IR_LIBRARY_UNIT_kind_info)
453 struct IIR_EntityDeclaration;
454 typedef IIR_EntityDeclaration *pIIR_EntityDeclaration;
455 extern tree_kind_info IR_ENTITY_DECLARATION_kind_info;
456 #define IR_ENTITY_DECLARATION (&IR_ENTITY_DECLARATION_kind_info)
457 struct IIR_ArchitectureDeclaration;
458 typedef IIR_ArchitectureDeclaration *pIIR_ArchitectureDeclaration;
459 extern tree_kind_info IR_ARCHITECTURE_DECLARATION_kind_info;
460 #define IR_ARCHITECTURE_DECLARATION (&IR_ARCHITECTURE_DECLARATION_kind_info)
461 struct IIR_ArchitectureRef;
462 typedef IIR_ArchitectureRef *pIIR_ArchitectureRef;
463 extern tree_kind_info IR_ARCHITECTURE_REF_kind_info;
464 #define IR_ARCHITECTURE_REF (&IR_ARCHITECTURE_REF_kind_info)
465 struct IIR_PackageDeclaration;
466 typedef IIR_PackageDeclaration *pIIR_PackageDeclaration;
467 extern tree_kind_info IR_PACKAGE_DECLARATION_kind_info;
468 #define IR_PACKAGE_DECLARATION (&IR_PACKAGE_DECLARATION_kind_info)
469 struct IIR_PackageBodyDeclaration;
470 typedef IIR_PackageBodyDeclaration *pIIR_PackageBodyDeclaration;
471 extern tree_kind_info IR_PACKAGE_BODY_DECLARATION_kind_info;
472 #define IR_PACKAGE_BODY_DECLARATION (&IR_PACKAGE_BODY_DECLARATION_kind_info)
473 struct IIR_ConfigurationDeclaration;
474 typedef IIR_ConfigurationDeclaration *pIIR_ConfigurationDeclaration;
475 extern tree_kind_info IR_CONFIGURATION_DECLARATION_kind_info;
476 #define IR_CONFIGURATION_DECLARATION (&IR_CONFIGURATION_DECLARATION_kind_info)
477 struct IIR_ConfigurationItem;
478 typedef IIR_ConfigurationItem *pIIR_ConfigurationItem;
479 extern tree_kind_info IR_CONFIGURATION_ITEM_kind_info;
480 #define IR_CONFIGURATION_ITEM (&IR_CONFIGURATION_ITEM_kind_info)
481 struct IIR_BlockConfiguration;
482 typedef IIR_BlockConfiguration *pIIR_BlockConfiguration;
483 extern tree_kind_info IR_BLOCK_CONFIGURATION_kind_info;
484 #define IR_BLOCK_CONFIGURATION (&IR_BLOCK_CONFIGURATION_kind_info)
485 struct IIR_ComponentConfiguration;
486 typedef IIR_ComponentConfiguration *pIIR_ComponentConfiguration;
487 extern tree_kind_info IR_COMPONENT_CONFIGURATION_kind_info;
488 #define IR_COMPONENT_CONFIGURATION (&IR_COMPONENT_CONFIGURATION_kind_info)
489 struct IIR_PhysicalUnit;
490 typedef IIR_PhysicalUnit *pIIR_PhysicalUnit;
491 extern tree_kind_info IR_PHYSICAL_UNIT_kind_info;
492 #define IR_PHYSICAL_UNIT (&IR_PHYSICAL_UNIT_kind_info)
493 struct IIR_BindingIndication;
494 typedef IIR_BindingIndication *pIIR_BindingIndication;
495 extern tree_kind_info IR_BINDING_INDICATION_kind_info;
496 #define IR_BINDING_INDICATION (&IR_BINDING_INDICATION_kind_info)
497 struct IIR_ConfigurationSpecification;
498 typedef IIR_ConfigurationSpecification *pIIR_ConfigurationSpecification;
499 extern tree_kind_info IR_CONFIGURATION_SPECIFICATION_kind_info;
500 #define IR_CONFIGURATION_SPECIFICATION (&IR_CONFIGURATION_SPECIFICATION_kind_info)
501 struct IIR_DisconnectSpecification;
502 typedef IIR_DisconnectSpecification *pIIR_DisconnectSpecification;
503 extern tree_kind_info IR_DISCONNECT_SPECIFICATION_kind_info;
504 #define IR_DISCONNECT_SPECIFICATION (&IR_DISCONNECT_SPECIFICATION_kind_info)
505 struct IIR_Label;
506 typedef IIR_Label *pIIR_Label;
507 extern tree_kind_info IR_LABEL_kind_info;
508 #define IR_LABEL (&IR_LABEL_kind_info)
509 struct IIR_LibraryClause;
510 typedef IIR_LibraryClause *pIIR_LibraryClause;
511 extern tree_kind_info IR_LIBRARY_CLAUSE_kind_info;
512 #define IR_LIBRARY_CLAUSE (&IR_LIBRARY_CLAUSE_kind_info)
513 struct IIR_UseClause;
514 typedef IIR_UseClause *pIIR_UseClause;
515 extern tree_kind_info IR_USE_CLAUSE_kind_info;
516 #define IR_USE_CLAUSE (&IR_USE_CLAUSE_kind_info)
517 struct IIR_Expression;
518 typedef IIR_Expression *pIIR_Expression;
519 extern tree_kind_info IR_EXPRESSION_kind_info;
520 #define IR_EXPRESSION (&IR_EXPRESSION_kind_info)
521 struct IIR_AbstractLiteralExpression;
522 typedef IIR_AbstractLiteralExpression *pIIR_AbstractLiteralExpression;
523 extern tree_kind_info IR_ABSTRACT_LITERAL_EXPRESSION_kind_info;
524 #define IR_ABSTRACT_LITERAL_EXPRESSION (&IR_ABSTRACT_LITERAL_EXPRESSION_kind_info)
525 struct IIR_PhysicalLiteral;
526 typedef IIR_PhysicalLiteral *pIIR_PhysicalLiteral;
527 extern tree_kind_info IR_PHYSICAL_LITERAL_kind_info;
528 #define IR_PHYSICAL_LITERAL (&IR_PHYSICAL_LITERAL_kind_info)
529 struct IIR_ArrayLiteralExpression;
530 typedef IIR_ArrayLiteralExpression *pIIR_ArrayLiteralExpression;
531 extern tree_kind_info IR_ARRAY_LITERAL_EXPRESSION_kind_info;
532 #define IR_ARRAY_LITERAL_EXPRESSION (&IR_ARRAY_LITERAL_EXPRESSION_kind_info)
533 struct IIR_EnumLiteralReference;
534 typedef IIR_EnumLiteralReference *pIIR_EnumLiteralReference;
535 extern tree_kind_info IR_ENUM_LITERAL_REFERENCE_kind_info;
536 #define IR_ENUM_LITERAL_REFERENCE (&IR_ENUM_LITERAL_REFERENCE_kind_info)
537 struct IIR_NullExpression;
538 typedef IIR_NullExpression *pIIR_NullExpression;
539 extern tree_kind_info IR_NULL_EXPRESSION_kind_info;
540 #define IR_NULL_EXPRESSION (&IR_NULL_EXPRESSION_kind_info)
541 struct IIR_Aggregate;
542 typedef IIR_Aggregate *pIIR_Aggregate;
543 extern tree_kind_info IR_AGGREGATE_kind_info;
544 #define IR_AGGREGATE (&IR_AGGREGATE_kind_info)
545 struct IIR_RecordAggregate;
546 typedef IIR_RecordAggregate *pIIR_RecordAggregate;
547 extern tree_kind_info IR_RECORD_AGGREGATE_kind_info;
548 #define IR_RECORD_AGGREGATE (&IR_RECORD_AGGREGATE_kind_info)
549 struct IIR_ArtificialRecordAggregate;
550 typedef IIR_ArtificialRecordAggregate *pIIR_ArtificialRecordAggregate;
551 extern tree_kind_info IR_ARTIFICIAL_RECORD_AGGREGATE_kind_info;
552 #define IR_ARTIFICIAL_RECORD_AGGREGATE (&IR_ARTIFICIAL_RECORD_AGGREGATE_kind_info)
553 struct IIR_ArrayAggregate;
554 typedef IIR_ArrayAggregate *pIIR_ArrayAggregate;
555 extern tree_kind_info IR_ARRAY_AGGREGATE_kind_info;
556 #define IR_ARRAY_AGGREGATE (&IR_ARRAY_AGGREGATE_kind_info)
557 struct IIR_ArtificialArrayAggregate;
558 typedef IIR_ArtificialArrayAggregate *pIIR_ArtificialArrayAggregate;
559 extern tree_kind_info IR_ARTIFICIAL_ARRAY_AGGREGATE_kind_info;
560 #define IR_ARTIFICIAL_ARRAY_AGGREGATE (&IR_ARTIFICIAL_ARRAY_AGGREGATE_kind_info)
561 struct IIR_FunctionCall;
562 typedef IIR_FunctionCall *pIIR_FunctionCall;
563 extern tree_kind_info IR_FUNCTION_CALL_kind_info;
564 #define IR_FUNCTION_CALL (&IR_FUNCTION_CALL_kind_info)
565 struct IIR_QualifiedExpression;
566 typedef IIR_QualifiedExpression *pIIR_QualifiedExpression;
567 extern tree_kind_info IR_QUALIFIED_EXPRESSION_kind_info;
568 #define IR_QUALIFIED_EXPRESSION (&IR_QUALIFIED_EXPRESSION_kind_info)
569 struct IIR_TypeConversion;
570 typedef IIR_TypeConversion *pIIR_TypeConversion;
571 extern tree_kind_info IR_TYPE_CONVERSION_kind_info;
572 #define IR_TYPE_CONVERSION (&IR_TYPE_CONVERSION_kind_info)
573 struct IIR_Allocator;
574 typedef IIR_Allocator *pIIR_Allocator;
575 extern tree_kind_info IR_ALLOCATOR_kind_info;
576 #define IR_ALLOCATOR (&IR_ALLOCATOR_kind_info)
577 struct IIR_OpenExpression;
578 typedef IIR_OpenExpression *pIIR_OpenExpression;
579 extern tree_kind_info IR_OPEN_EXPRESSION_kind_info;
580 #define IR_OPEN_EXPRESSION (&IR_OPEN_EXPRESSION_kind_info)
581 struct IIR_ObjectReference;
582 typedef IIR_ObjectReference *pIIR_ObjectReference;
583 extern tree_kind_info IR_OBJECT_REFERENCE_kind_info;
584 #define IR_OBJECT_REFERENCE (&IR_OBJECT_REFERENCE_kind_info)
585 struct IIR_SimpleReference;
586 typedef IIR_SimpleReference *pIIR_SimpleReference;
587 extern tree_kind_info IR_SIMPLE_REFERENCE_kind_info;
588 #define IR_SIMPLE_REFERENCE (&IR_SIMPLE_REFERENCE_kind_info)
589 struct IIR_AccessReference;
590 typedef IIR_AccessReference *pIIR_AccessReference;
591 extern tree_kind_info IR_ACCESS_REFERENCE_kind_info;
592 #define IR_ACCESS_REFERENCE (&IR_ACCESS_REFERENCE_kind_info)
593 struct IIR_RecordReference;
594 typedef IIR_RecordReference *pIIR_RecordReference;
595 extern tree_kind_info IR_RECORD_REFERENCE_kind_info;
596 #define IR_RECORD_REFERENCE (&IR_RECORD_REFERENCE_kind_info)
597 struct IIR_GenericArrayReference;
598 typedef IIR_GenericArrayReference *pIIR_GenericArrayReference;
599 extern tree_kind_info IR_GENERIC_ARRAY_REFERENCE_kind_info;
600 #define IR_GENERIC_ARRAY_REFERENCE (&IR_GENERIC_ARRAY_REFERENCE_kind_info)
601 struct IIR_ArrayReference;
602 typedef IIR_ArrayReference *pIIR_ArrayReference;
603 extern tree_kind_info IR_ARRAY_REFERENCE_kind_info;
604 #define IR_ARRAY_REFERENCE (&IR_ARRAY_REFERENCE_kind_info)
605 struct IIR_SliceReference;
606 typedef IIR_SliceReference *pIIR_SliceReference;
607 extern tree_kind_info IR_SLICE_REFERENCE_kind_info;
608 #define IR_SLICE_REFERENCE (&IR_SLICE_REFERENCE_kind_info)
609 struct IIR_SignalAttr;
610 typedef IIR_SignalAttr *pIIR_SignalAttr;
611 extern tree_kind_info IR_SIGNAL_ATTR_kind_info;
612 #define IR_SIGNAL_ATTR (&IR_SIGNAL_ATTR_kind_info)
613 struct IIR_Attr_DELAYED;
614 typedef IIR_Attr_DELAYED *pIIR_Attr_DELAYED;
615 extern tree_kind_info IR_ATTR_DELAYED_kind_info;
616 #define IR_ATTR_DELAYED (&IR_ATTR_DELAYED_kind_info)
617 struct IIR_Attr_STABLE;
618 typedef IIR_Attr_STABLE *pIIR_Attr_STABLE;
619 extern tree_kind_info IR_ATTR_STABLE_kind_info;
620 #define IR_ATTR_STABLE (&IR_ATTR_STABLE_kind_info)
621 struct IIR_Attr_QUIET;
622 typedef IIR_Attr_QUIET *pIIR_Attr_QUIET;
623 extern tree_kind_info IR_ATTR_QUIET_kind_info;
624 #define IR_ATTR_QUIET (&IR_ATTR_QUIET_kind_info)
625 struct IIR_Attr_TRANSACTION;
626 typedef IIR_Attr_TRANSACTION *pIIR_Attr_TRANSACTION;
627 extern tree_kind_info IR_ATTR_TRANSACTION_kind_info;
628 #define IR_ATTR_TRANSACTION (&IR_ATTR_TRANSACTION_kind_info)
629 struct IIR_FunctionAttr;
630 typedef IIR_FunctionAttr *pIIR_FunctionAttr;
631 extern tree_kind_info IR_FUNCTION_ATTR_kind_info;
632 #define IR_FUNCTION_ATTR (&IR_FUNCTION_ATTR_kind_info)
633 struct IIR_AttrSigFunc;
634 typedef IIR_AttrSigFunc *pIIR_AttrSigFunc;
635 extern tree_kind_info IR_ATTR_SIG_FUNC_kind_info;
636 #define IR_ATTR_SIG_FUNC (&IR_ATTR_SIG_FUNC_kind_info)
637 struct IIR_Attr_EVENT;
638 typedef IIR_Attr_EVENT *pIIR_Attr_EVENT;
639 extern tree_kind_info IR_ATTR_EVENT_kind_info;
640 #define IR_ATTR_EVENT (&IR_ATTR_EVENT_kind_info)
641 struct IIR_Attr_ACTIVE;
642 typedef IIR_Attr_ACTIVE *pIIR_Attr_ACTIVE;
643 extern tree_kind_info IR_ATTR_ACTIVE_kind_info;
644 #define IR_ATTR_ACTIVE (&IR_ATTR_ACTIVE_kind_info)
645 struct IIR_Attr_LAST_EVENT;
646 typedef IIR_Attr_LAST_EVENT *pIIR_Attr_LAST_EVENT;
647 extern tree_kind_info IR_ATTR_LAST_EVENT_kind_info;
648 #define IR_ATTR_LAST_EVENT (&IR_ATTR_LAST_EVENT_kind_info)
649 struct IIR_Attr_LAST_ACTIVE;
650 typedef IIR_Attr_LAST_ACTIVE *pIIR_Attr_LAST_ACTIVE;
651 extern tree_kind_info IR_ATTR_LAST_ACTIVE_kind_info;
652 #define IR_ATTR_LAST_ACTIVE (&IR_ATTR_LAST_ACTIVE_kind_info)
653 struct IIR_Attr_LAST_VALUE;
654 typedef IIR_Attr_LAST_VALUE *pIIR_Attr_LAST_VALUE;
655 extern tree_kind_info IR_ATTR_LAST_VALUE_kind_info;
656 #define IR_ATTR_LAST_VALUE (&IR_ATTR_LAST_VALUE_kind_info)
657 struct IIR_Attr_DRIVING;
658 typedef IIR_Attr_DRIVING *pIIR_Attr_DRIVING;
659 extern tree_kind_info IR_ATTR_DRIVING_kind_info;
660 #define IR_ATTR_DRIVING (&IR_ATTR_DRIVING_kind_info)
661 struct IIR_Attr_DRIVING_VALUE;
662 typedef IIR_Attr_DRIVING_VALUE *pIIR_Attr_DRIVING_VALUE;
663 extern tree_kind_info IR_ATTR_DRIVING_VALUE_kind_info;
664 #define IR_ATTR_DRIVING_VALUE (&IR_ATTR_DRIVING_VALUE_kind_info)
665 struct IIR_ValueAttr;
666 typedef IIR_ValueAttr *pIIR_ValueAttr;
667 extern tree_kind_info IR_VALUE_ATTR_kind_info;
668 #define IR_VALUE_ATTR (&IR_VALUE_ATTR_kind_info)
669 struct IIR_AttrTypeValue;
670 typedef IIR_AttrTypeValue *pIIR_AttrTypeValue;
671 extern tree_kind_info IR_ATTR_TYPE_VALUE_kind_info;
672 #define IR_ATTR_TYPE_VALUE (&IR_ATTR_TYPE_VALUE_kind_info)
673 struct IIR_Attr_LEFT;
674 typedef IIR_Attr_LEFT *pIIR_Attr_LEFT;
675 extern tree_kind_info IR_ATTR_LEFT_kind_info;
676 #define IR_ATTR_LEFT (&IR_ATTR_LEFT_kind_info)
677 struct IIR_Attr_RIGHT;
678 typedef IIR_Attr_RIGHT *pIIR_Attr_RIGHT;
679 extern tree_kind_info IR_ATTR_RIGHT_kind_info;
680 #define IR_ATTR_RIGHT (&IR_ATTR_RIGHT_kind_info)
681 struct IIR_Attr_LOW;
682 typedef IIR_Attr_LOW *pIIR_Attr_LOW;
683 extern tree_kind_info IR_ATTR_LOW_kind_info;
684 #define IR_ATTR_LOW (&IR_ATTR_LOW_kind_info)
685 struct IIR_Attr_HIGH;
686 typedef IIR_Attr_HIGH *pIIR_Attr_HIGH;
687 extern tree_kind_info IR_ATTR_HIGH_kind_info;
688 #define IR_ATTR_HIGH (&IR_ATTR_HIGH_kind_info)
689 struct IIR_Attr_ASCENDING;
690 typedef IIR_Attr_ASCENDING *pIIR_Attr_ASCENDING;
691 extern tree_kind_info IR_ATTR_ASCENDING_kind_info;
692 #define IR_ATTR_ASCENDING (&IR_ATTR_ASCENDING_kind_info)
693 struct IIR_Attr_LENGTH;
694 typedef IIR_Attr_LENGTH *pIIR_Attr_LENGTH;
695 extern tree_kind_info IR_ATTR_LENGTH_kind_info;
696 #define IR_ATTR_LENGTH (&IR_ATTR_LENGTH_kind_info)
697 struct IIR_AttrTypeFunc;
698 typedef IIR_AttrTypeFunc *pIIR_AttrTypeFunc;
699 extern tree_kind_info IR_ATTR_TYPE_FUNC_kind_info;
700 #define IR_ATTR_TYPE_FUNC (&IR_ATTR_TYPE_FUNC_kind_info)
701 struct IIR_Attr_IMAGE;
702 typedef IIR_Attr_IMAGE *pIIR_Attr_IMAGE;
703 extern tree_kind_info IR_ATTR_IMAGE_kind_info;
704 #define IR_ATTR_IMAGE (&IR_ATTR_IMAGE_kind_info)
705 struct IIR_Attr_VALUE;
706 typedef IIR_Attr_VALUE *pIIR_Attr_VALUE;
707 extern tree_kind_info IR_ATTR_VALUE_kind_info;
708 #define IR_ATTR_VALUE (&IR_ATTR_VALUE_kind_info)
709 struct IIR_Attr_POS;
710 typedef IIR_Attr_POS *pIIR_Attr_POS;
711 extern tree_kind_info IR_ATTR_POS_kind_info;
712 #define IR_ATTR_POS (&IR_ATTR_POS_kind_info)
713 struct IIR_Attr_VAL;
714 typedef IIR_Attr_VAL *pIIR_Attr_VAL;
715 extern tree_kind_info IR_ATTR_VAL_kind_info;
716 #define IR_ATTR_VAL (&IR_ATTR_VAL_kind_info)
717 struct IIR_Attr_SUCC;
718 typedef IIR_Attr_SUCC *pIIR_Attr_SUCC;
719 extern tree_kind_info IR_ATTR_SUCC_kind_info;
720 #define IR_ATTR_SUCC (&IR_ATTR_SUCC_kind_info)
721 struct IIR_Attr_PRED;
722 typedef IIR_Attr_PRED *pIIR_Attr_PRED;
723 extern tree_kind_info IR_ATTR_PRED_kind_info;
724 #define IR_ATTR_PRED (&IR_ATTR_PRED_kind_info)
725 struct IIR_Attr_LEFTOF;
726 typedef IIR_Attr_LEFTOF *pIIR_Attr_LEFTOF;
727 extern tree_kind_info IR_ATTR_LEFTOF_kind_info;
728 #define IR_ATTR_LEFTOF (&IR_ATTR_LEFTOF_kind_info)
729 struct IIR_Attr_RIGHTOF;
730 typedef IIR_Attr_RIGHTOF *pIIR_Attr_RIGHTOF;
731 extern tree_kind_info IR_ATTR_RIGHTOF_kind_info;
732 #define IR_ATTR_RIGHTOF (&IR_ATTR_RIGHTOF_kind_info)
733 struct IIR_AttrArrayFunc;
734 typedef IIR_AttrArrayFunc *pIIR_AttrArrayFunc;
735 extern tree_kind_info IR_ATTR_ARRAY_FUNC_kind_info;
736 #define IR_ATTR_ARRAY_FUNC (&IR_ATTR_ARRAY_FUNC_kind_info)
737 struct IIR_Attr_ArrayLEFT;
738 typedef IIR_Attr_ArrayLEFT *pIIR_Attr_ArrayLEFT;
739 extern tree_kind_info IR_ATTR_ARRAY_LEFT_kind_info;
740 #define IR_ATTR_ARRAY_LEFT (&IR_ATTR_ARRAY_LEFT_kind_info)
741 struct IIR_Attr_ArrayRIGHT;
742 typedef IIR_Attr_ArrayRIGHT *pIIR_Attr_ArrayRIGHT;
743 extern tree_kind_info IR_ATTR_ARRAY_RIGHT_kind_info;
744 #define IR_ATTR_ARRAY_RIGHT (&IR_ATTR_ARRAY_RIGHT_kind_info)
745 struct IIR_Attr_ArrayHIGH;
746 typedef IIR_Attr_ArrayHIGH *pIIR_Attr_ArrayHIGH;
747 extern tree_kind_info IR_ATTR_ARRAY_HIGH_kind_info;
748 #define IR_ATTR_ARRAY_HIGH (&IR_ATTR_ARRAY_HIGH_kind_info)
749 struct IIR_Attr_ArrayLOW;
750 typedef IIR_Attr_ArrayLOW *pIIR_Attr_ArrayLOW;
751 extern tree_kind_info IR_ATTR_ARRAY_LOW_kind_info;
752 #define IR_ATTR_ARRAY_LOW (&IR_ATTR_ARRAY_LOW_kind_info)
753 struct IIR_Attr_ArrayASCENDING;
754 typedef IIR_Attr_ArrayASCENDING *pIIR_Attr_ArrayASCENDING;
755 extern tree_kind_info IR_ATTR_ARRAY_ASCENDING_kind_info;
756 #define IR_ATTR_ARRAY_ASCENDING (&IR_ATTR_ARRAY_ASCENDING_kind_info)
757 struct IIR_Attr_ArrayLENGTH;
758 typedef IIR_Attr_ArrayLENGTH *pIIR_Attr_ArrayLENGTH;
759 extern tree_kind_info IR_ATTR_ARRAY_LENGTH_kind_info;
760 #define IR_ATTR_ARRAY_LENGTH (&IR_ATTR_ARRAY_LENGTH_kind_info)
761 struct IIR_SequentialStatement;
762 typedef IIR_SequentialStatement *pIIR_SequentialStatement;
763 extern tree_kind_info IR_SEQUENTIAL_STATEMENT_kind_info;
764 #define IR_SEQUENTIAL_STATEMENT (&IR_SEQUENTIAL_STATEMENT_kind_info)
765 struct IIR_WaitStatement;
766 typedef IIR_WaitStatement *pIIR_WaitStatement;
767 extern tree_kind_info IR_WAIT_STATEMENT_kind_info;
768 #define IR_WAIT_STATEMENT (&IR_WAIT_STATEMENT_kind_info)
769 struct IIR_AssertionStatement;
770 typedef IIR_AssertionStatement *pIIR_AssertionStatement;
771 extern tree_kind_info IR_ASSERTION_STATEMENT_kind_info;
772 #define IR_ASSERTION_STATEMENT (&IR_ASSERTION_STATEMENT_kind_info)
773 struct IIR_ReportStatement;
774 typedef IIR_ReportStatement *pIIR_ReportStatement;
775 extern tree_kind_info IR_REPORT_STATEMENT_kind_info;
776 #define IR_REPORT_STATEMENT (&IR_REPORT_STATEMENT_kind_info)
777 struct IIR_SignalAssignmentStatement;
778 typedef IIR_SignalAssignmentStatement *pIIR_SignalAssignmentStatement;
779 extern tree_kind_info IR_SIGNAL_ASSIGNMENT_STATEMENT_kind_info;
780 #define IR_SIGNAL_ASSIGNMENT_STATEMENT (&IR_SIGNAL_ASSIGNMENT_STATEMENT_kind_info)
781 struct IIR_VariableAssignmentStatement;
782 typedef IIR_VariableAssignmentStatement *pIIR_VariableAssignmentStatement;
783 extern tree_kind_info IR_VARIABLE_ASSIGNMENT_STATEMENT_kind_info;
784 #define IR_VARIABLE_ASSIGNMENT_STATEMENT (&IR_VARIABLE_ASSIGNMENT_STATEMENT_kind_info)
785 struct IIR_ProcedureCallStatement;
786 typedef IIR_ProcedureCallStatement *pIIR_ProcedureCallStatement;
787 extern tree_kind_info IR_PROCEDURE_CALL_STATEMENT_kind_info;
788 #define IR_PROCEDURE_CALL_STATEMENT (&IR_PROCEDURE_CALL_STATEMENT_kind_info)
789 struct IIR_IfStatement;
790 typedef IIR_IfStatement *pIIR_IfStatement;
791 extern tree_kind_info IR_IF_STATEMENT_kind_info;
792 #define IR_IF_STATEMENT (&IR_IF_STATEMENT_kind_info)
793 struct IIR_CaseStatement;
794 typedef IIR_CaseStatement *pIIR_CaseStatement;
795 extern tree_kind_info IR_CASE_STATEMENT_kind_info;
796 #define IR_CASE_STATEMENT (&IR_CASE_STATEMENT_kind_info)
797 struct IIR_LoopStatement;
798 typedef IIR_LoopStatement *pIIR_LoopStatement;
799 extern tree_kind_info IR_LOOP_STATEMENT_kind_info;
800 #define IR_LOOP_STATEMENT (&IR_LOOP_STATEMENT_kind_info)
801 struct IIR_ForLoopStatement;
802 typedef IIR_ForLoopStatement *pIIR_ForLoopStatement;
803 extern tree_kind_info IR_FOR_LOOP_STATEMENT_kind_info;
804 #define IR_FOR_LOOP_STATEMENT (&IR_FOR_LOOP_STATEMENT_kind_info)
805 struct IIR_WhileLoopStatement;
806 typedef IIR_WhileLoopStatement *pIIR_WhileLoopStatement;
807 extern tree_kind_info IR_WHILE_LOOP_STATEMENT_kind_info;
808 #define IR_WHILE_LOOP_STATEMENT (&IR_WHILE_LOOP_STATEMENT_kind_info)
809 struct IIR_LoopControlStatement;
810 typedef IIR_LoopControlStatement *pIIR_LoopControlStatement;
811 extern tree_kind_info IR_LOOP_CONTROL_STATEMENT_kind_info;
812 #define IR_LOOP_CONTROL_STATEMENT (&IR_LOOP_CONTROL_STATEMENT_kind_info)
813 struct IIR_NextStatement;
814 typedef IIR_NextStatement *pIIR_NextStatement;
815 extern tree_kind_info IR_NEXT_STATEMENT_kind_info;
816 #define IR_NEXT_STATEMENT (&IR_NEXT_STATEMENT_kind_info)
817 struct IIR_ExitStatement;
818 typedef IIR_ExitStatement *pIIR_ExitStatement;
819 extern tree_kind_info IR_EXIT_STATEMENT_kind_info;
820 #define IR_EXIT_STATEMENT (&IR_EXIT_STATEMENT_kind_info)
821 struct IIR_ReturnStatement;
822 typedef IIR_ReturnStatement *pIIR_ReturnStatement;
823 extern tree_kind_info IR_RETURN_STATEMENT_kind_info;
824 #define IR_RETURN_STATEMENT (&IR_RETURN_STATEMENT_kind_info)
825 struct IIR_NullStatement;
826 typedef IIR_NullStatement *pIIR_NullStatement;
827 extern tree_kind_info IR_NULL_STATEMENT_kind_info;
828 #define IR_NULL_STATEMENT (&IR_NULL_STATEMENT_kind_info)
829 struct IIR_ConcurrentStatement;
830 typedef IIR_ConcurrentStatement *pIIR_ConcurrentStatement;
831 extern tree_kind_info IR_CONCURRENT_STATEMENT_kind_info;
832 #define IR_CONCURRENT_STATEMENT (&IR_CONCURRENT_STATEMENT_kind_info)
833 struct IIR_BlockStatement;
834 typedef IIR_BlockStatement *pIIR_BlockStatement;
835 extern tree_kind_info IR_BLOCK_STATEMENT_kind_info;
836 #define IR_BLOCK_STATEMENT (&IR_BLOCK_STATEMENT_kind_info)
837 struct IIR_ProcessStatement;
838 typedef IIR_ProcessStatement *pIIR_ProcessStatement;
839 extern tree_kind_info IR_PROCESS_STATEMENT_kind_info;
840 #define IR_PROCESS_STATEMENT (&IR_PROCESS_STATEMENT_kind_info)
841 struct IIR_ImplicitProcessStatement;
842 typedef IIR_ImplicitProcessStatement *pIIR_ImplicitProcessStatement;
843 extern tree_kind_info IR_IMPLICIT_PROCESS_STATEMENT_kind_info;
844 #define IR_IMPLICIT_PROCESS_STATEMENT (&IR_IMPLICIT_PROCESS_STATEMENT_kind_info)
845 struct IIR_SensitizedProcessStatement;
846 typedef IIR_SensitizedProcessStatement *pIIR_SensitizedProcessStatement;
847 extern tree_kind_info IR_SENSITIZED_PROCESS_STATEMENT_kind_info;
848 #define IR_SENSITIZED_PROCESS_STATEMENT (&IR_SENSITIZED_PROCESS_STATEMENT_kind_info)
849 struct IIR_ComponentInstantiationStatement;
850 typedef IIR_ComponentInstantiationStatement *pIIR_ComponentInstantiationStatement;
851 extern tree_kind_info IR_COMPONENT_INSTANTIATION_STATEMENT_kind_info;
852 #define IR_COMPONENT_INSTANTIATION_STATEMENT (&IR_COMPONENT_INSTANTIATION_STATEMENT_kind_info)
853 struct IIR_ConcurrentGenerateStatement;
854 typedef IIR_ConcurrentGenerateStatement *pIIR_ConcurrentGenerateStatement;
855 extern tree_kind_info IR_CONCURRENT_GENERATE_STATEMENT_kind_info;
856 #define IR_CONCURRENT_GENERATE_STATEMENT (&IR_CONCURRENT_GENERATE_STATEMENT_kind_info)
857 struct IIR_ConcurrentGenerateForStatement;
858 typedef IIR_ConcurrentGenerateForStatement *pIIR_ConcurrentGenerateForStatement;
859 extern tree_kind_info IR_CONCURRENT_GENERATE_FOR_STATEMENT_kind_info;
860 #define IR_CONCURRENT_GENERATE_FOR_STATEMENT (&IR_CONCURRENT_GENERATE_FOR_STATEMENT_kind_info)
861 struct IIR_ConcurrentGenerateIfStatement;
862 typedef IIR_ConcurrentGenerateIfStatement *pIIR_ConcurrentGenerateIfStatement;
863 extern tree_kind_info IR_CONCURRENT_GENERATE_IF_STATEMENT_kind_info;
864 #define IR_CONCURRENT_GENERATE_IF_STATEMENT (&IR_CONCURRENT_GENERATE_IF_STATEMENT_kind_info)
865 
866 struct IIR_PosInfo : tree_base_node {
867 
IIR_PosInfoIIR_PosInfo868   IIR_PosInfo ()
869     { }
870 
871   tree_kind kind ();
872 };
873 
874 struct IIR_PosInfo_TextFile : IIR_PosInfo {
875   const char* file_name;
876   int line_number;
877 
IIR_PosInfo_TextFileIIR_PosInfo_TextFile878   IIR_PosInfo_TextFile (const char* file_name, int line_number)
879   : IIR_PosInfo (),
880     file_name (file_name),
881     line_number (line_number)
882     { }
883 
884   tree_kind kind ();
885 };
886 
887 struct IIR_PosInfo_Sheet : IIR_PosInfo {
888   const char* sheet_name;
889   int x_coordinate;
890   int y_coordinate;
891 
IIR_PosInfo_SheetIIR_PosInfo_Sheet892   IIR_PosInfo_Sheet (const char* sheet_name, int x_coordinate, int y_coordinate)
893   : IIR_PosInfo (),
894     sheet_name (sheet_name),
895     x_coordinate (x_coordinate),
896     y_coordinate (y_coordinate)
897     { }
898 
899   tree_kind kind ();
900 };
901 
902 struct IIR_Root : tree_base_node {
903   pIIR_PosInfo pos;
904 
IIR_RootIIR_Root905   IIR_Root (pIIR_PosInfo pos)
906   : pos (pos)
907     { }
908 
909   tree_kind kind ();
910 };
911 
912 struct IIR_Dummy : IIR_Root {
913 
IIR_DummyIIR_Dummy914   IIR_Dummy (pIIR_PosInfo pos)
915   : IIR_Root (pos)
916     { }
917 
918   tree_kind kind ();
919 };
920 
921 struct IIR_Signature : IIR_Dummy {
922 
IIR_SignatureIIR_Signature923   IIR_Signature (pIIR_PosInfo pos)
924   : IIR_Dummy (pos)
925     { }
926 
927   tree_kind kind ();
928 };
929 
930 struct IIR_Literal : IIR_Root {
931 
IIR_LiteralIIR_Literal932   IIR_Literal (pIIR_PosInfo pos)
933   : IIR_Root (pos)
934     { }
935 
936   tree_kind kind ();
937 };
938 
939 struct IIR_TextLiteral : IIR_Literal {
940   IR_String text;
941 
IIR_TextLiteralIIR_TextLiteral942   IIR_TextLiteral (pIIR_PosInfo pos, IR_String text)
943   : IIR_Literal (pos),
944     text (text)
945     { }
946 
947   tree_kind kind ();
948 };
949 
950 struct IIR_Identifier : IIR_TextLiteral {
951 
IIR_IdentifierIIR_Identifier952   IIR_Identifier (pIIR_PosInfo pos, IR_String text)
953   : IIR_TextLiteral (pos, text)
954     { }
955 
956   tree_kind kind ();
957 };
958 
959 struct IIR_CharacterLiteral : IIR_TextLiteral {
960 
IIR_CharacterLiteralIIR_CharacterLiteral961   IIR_CharacterLiteral (pIIR_PosInfo pos, IR_String text)
962   : IIR_TextLiteral (pos, text)
963     { }
964 
965   tree_kind kind ();
966 };
967 
968 struct IIR_StringLiteral : IIR_TextLiteral {
969 
IIR_StringLiteralIIR_StringLiteral970   IIR_StringLiteral (pIIR_PosInfo pos, IR_String text)
971   : IIR_TextLiteral (pos, text)
972     { }
973 
974   tree_kind kind ();
975 };
976 
977 struct IIR_AbstractLiteral : IIR_Literal {
978 
IIR_AbstractLiteralIIR_AbstractLiteral979   IIR_AbstractLiteral (pIIR_PosInfo pos)
980   : IIR_Literal (pos)
981     { }
982 
983   tree_kind kind ();
984 };
985 
986 struct IIR_IntegerLiteral : IIR_AbstractLiteral {
987   IR_String text;
988 
IIR_IntegerLiteralIIR_IntegerLiteral989   IIR_IntegerLiteral (pIIR_PosInfo pos, IR_String text)
990   : IIR_AbstractLiteral (pos),
991     text (text)
992     { }
993 
994   tree_kind kind ();
995 };
996 
997 struct IIR_FloatingPointLiteral : IIR_AbstractLiteral {
998   IR_String text;
999 
IIR_FloatingPointLiteralIIR_FloatingPointLiteral1000   IIR_FloatingPointLiteral (pIIR_PosInfo pos, IR_String text)
1001   : IIR_AbstractLiteral (pos),
1002     text (text)
1003     { }
1004 
1005   tree_kind kind ();
1006 };
1007 
1008 struct IIR_Tuple : IIR_Root {
1009 
IIR_TupleIIR_Tuple1010   IIR_Tuple (pIIR_PosInfo pos)
1011   : IIR_Root (pos)
1012     { }
1013 
1014   tree_kind kind ();
1015 };
1016 
1017 struct IIR_AssociationElement : IIR_Tuple {
1018   pIIR_ObjectReference formal;
1019   pIIR_InterfaceDeclaration formal_declaration;
1020   pIIR_Declaration formal_conversion;
1021   pIIR_Expression actual;
1022   pIIR_Declaration actual_conversion;
1023 
IIR_AssociationElementIIR_AssociationElement1024   IIR_AssociationElement (pIIR_PosInfo pos, pIIR_ObjectReference formal, pIIR_InterfaceDeclaration formal_declaration, pIIR_Declaration formal_conversion, pIIR_Expression actual, pIIR_Declaration actual_conversion)
1025   : IIR_Tuple (pos),
1026     formal (formal),
1027     formal_declaration (formal_declaration),
1028     formal_conversion (formal_conversion),
1029     actual (actual),
1030     actual_conversion (actual_conversion)
1031     { }
1032 
1033   tree_kind kind ();
1034 };
1035 
1036 struct IIR_AssociationElementByExpression : IIR_AssociationElement {
1037 
IIR_AssociationElementByExpressionIIR_AssociationElementByExpression1038   IIR_AssociationElementByExpression (pIIR_PosInfo pos, pIIR_ObjectReference formal, pIIR_InterfaceDeclaration formal_declaration, pIIR_Declaration formal_conversion, pIIR_Expression actual, pIIR_Declaration actual_conversion)
1039   : IIR_AssociationElement (pos, formal, formal_declaration, formal_conversion, actual, actual_conversion)
1040     { }
1041 
1042   tree_kind kind ();
1043 };
1044 
1045 struct IIR_AssociationElementOpen : IIR_AssociationElement {
1046 
IIR_AssociationElementOpenIIR_AssociationElementOpen1047   IIR_AssociationElementOpen (pIIR_PosInfo pos, pIIR_ObjectReference formal, pIIR_InterfaceDeclaration formal_declaration, pIIR_Declaration formal_conversion, pIIR_Expression actual, pIIR_Declaration actual_conversion)
1048   : IIR_AssociationElement (pos, formal, formal_declaration, formal_conversion, actual, actual_conversion)
1049     { }
1050 
1051   tree_kind kind ();
1052 };
1053 
1054 struct IIR_CaseStatementAlternative : IIR_Tuple {
1055   pIIR_SequentialStatementList sequence_of_statements;
1056   pIIR_ChoiceList choices;
1057 
IIR_CaseStatementAlternativeIIR_CaseStatementAlternative1058   IIR_CaseStatementAlternative (pIIR_PosInfo pos, pIIR_SequentialStatementList sequence_of_statements, pIIR_ChoiceList choices)
1059   : IIR_Tuple (pos),
1060     sequence_of_statements (sequence_of_statements),
1061     choices (choices)
1062     { }
1063 
1064   tree_kind kind ();
1065 };
1066 
1067 struct IIR_Choice : IIR_Tuple {
1068 
IIR_ChoiceIIR_Choice1069   IIR_Choice (pIIR_PosInfo pos)
1070   : IIR_Tuple (pos)
1071     { }
1072 
1073   tree_kind kind ();
1074 };
1075 
1076 struct IIR_ChoiceByExpression : IIR_Choice {
1077   pIIR_Expression value;
1078 
IIR_ChoiceByExpressionIIR_ChoiceByExpression1079   IIR_ChoiceByExpression (pIIR_PosInfo pos, pIIR_Expression value)
1080   : IIR_Choice (pos),
1081     value (value)
1082     { }
1083 
1084   tree_kind kind ();
1085 };
1086 
1087 struct IIR_ChoiceByRange : IIR_Choice {
1088   pIIR_Range range;
1089 
IIR_ChoiceByRangeIIR_ChoiceByRange1090   IIR_ChoiceByRange (pIIR_PosInfo pos, pIIR_Range range)
1091   : IIR_Choice (pos),
1092     range (range)
1093     { }
1094 
1095   tree_kind kind ();
1096 };
1097 
1098 struct IIR_ChoiceByOthers : IIR_Choice {
1099 
IIR_ChoiceByOthersIIR_ChoiceByOthers1100   IIR_ChoiceByOthers (pIIR_PosInfo pos)
1101   : IIR_Choice (pos)
1102     { }
1103 
1104   tree_kind kind ();
1105 };
1106 
1107 struct IIR_EntityClassEntry : IIR_Tuple {
1108   IR_Kind entity_kind;
1109   bool is_boxed;
1110 
IIR_EntityClassEntryIIR_EntityClassEntry1111   IIR_EntityClassEntry (pIIR_PosInfo pos, IR_Kind entity_kind, bool is_boxed)
1112   : IIR_Tuple (pos),
1113     entity_kind (entity_kind),
1114     is_boxed (is_boxed)
1115     { }
1116 
1117   tree_kind kind ();
1118 };
1119 
1120 struct IIR_WaveformElement : IIR_Tuple {
1121   pIIR_Expression value;
1122   pIIR_Expression time;
1123 
IIR_WaveformElementIIR_WaveformElement1124   IIR_WaveformElement (pIIR_PosInfo pos, pIIR_Expression value, pIIR_Expression time)
1125   : IIR_Tuple (pos),
1126     value (value),
1127     time (time)
1128     { }
1129 
1130   tree_kind kind ();
1131 };
1132 
1133 struct IIR_ElementAssociation : IIR_Tuple {
1134   pIIR_ElementDeclaration element;
1135   pIIR_Expression value;
1136 
IIR_ElementAssociationIIR_ElementAssociation1137   IIR_ElementAssociation (pIIR_PosInfo pos, pIIR_ElementDeclaration element, pIIR_Expression value)
1138   : IIR_Tuple (pos),
1139     element (element),
1140     value (value)
1141     { }
1142 
1143   tree_kind kind ();
1144 };
1145 
1146 struct IIR_IndexedAssociation : IIR_Tuple {
1147   pIIR_Expression value;
1148 
IIR_IndexedAssociationIIR_IndexedAssociation1149   IIR_IndexedAssociation (pIIR_PosInfo pos, pIIR_Expression value)
1150   : IIR_Tuple (pos),
1151     value (value)
1152     { }
1153 
1154   tree_kind kind ();
1155 };
1156 
1157 struct IIR_SingleIndexedAssociation : IIR_IndexedAssociation {
1158   pIIR_Expression index;
1159 
IIR_SingleIndexedAssociationIIR_SingleIndexedAssociation1160   IIR_SingleIndexedAssociation (pIIR_PosInfo pos, pIIR_Expression value, pIIR_Expression index)
1161   : IIR_IndexedAssociation (pos, value),
1162     index (index)
1163     { }
1164 
1165   tree_kind kind ();
1166 };
1167 
1168 struct IIR_RangeIndexedAssociation : IIR_IndexedAssociation {
1169   pIIR_Range index_range;
1170 
IIR_RangeIndexedAssociationIIR_RangeIndexedAssociation1171   IIR_RangeIndexedAssociation (pIIR_PosInfo pos, pIIR_Expression value, pIIR_Range index_range)
1172   : IIR_IndexedAssociation (pos, value),
1173     index_range (index_range)
1174     { }
1175 
1176   tree_kind kind ();
1177 };
1178 
1179 struct IIR_SliceIndexedAssociation : IIR_RangeIndexedAssociation {
1180 
IIR_SliceIndexedAssociationIIR_SliceIndexedAssociation1181   IIR_SliceIndexedAssociation (pIIR_PosInfo pos, pIIR_Expression value, pIIR_Range index_range)
1182   : IIR_RangeIndexedAssociation (pos, value, index_range)
1183     { }
1184 
1185   tree_kind kind ();
1186 };
1187 
1188 struct IIR_OthersIndexedAssociation : IIR_IndexedAssociation {
1189 
IIR_OthersIndexedAssociationIIR_OthersIndexedAssociation1190   IIR_OthersIndexedAssociation (pIIR_PosInfo pos, pIIR_Expression value)
1191   : IIR_IndexedAssociation (pos, value)
1192     { }
1193 
1194   tree_kind kind ();
1195 };
1196 
1197 struct IIR_AttributeValue : IIR_Tuple {
1198   pIIR_Expression value;
1199   pIIR_AttributeDeclaration attribute;
1200 
IIR_AttributeValueIIR_AttributeValue1201   IIR_AttributeValue (pIIR_PosInfo pos, pIIR_Expression value, pIIR_AttributeDeclaration attribute)
1202   : IIR_Tuple (pos),
1203     value (value),
1204     attribute (attribute)
1205     { }
1206 
1207   tree_kind kind ();
1208 };
1209 
1210 struct IIR_List : IIR_Root {
1211 
IIR_ListIIR_List1212   IIR_List (pIIR_PosInfo pos)
1213   : IIR_Root (pos)
1214     { }
1215 
1216   tree_kind kind ();
1217 };
1218 
1219 struct IIR_AssociationList : IIR_List {
1220   pIIR_AssociationElement first;
1221   pIIR_AssociationList rest;
1222 
IIR_AssociationListIIR_AssociationList1223   IIR_AssociationList (pIIR_PosInfo pos, pIIR_AssociationElement first, pIIR_AssociationList rest)
1224   : IIR_List (pos),
1225     first (first),
1226     rest (rest)
1227     { }
1228 
1229   tree_kind kind ();
1230 };
1231 
1232 struct IIR_AttributeValueList : IIR_List {
1233   pIIR_AttributeValue first;
1234   pIIR_AttributeValueList rest;
1235 
IIR_AttributeValueListIIR_AttributeValueList1236   IIR_AttributeValueList (pIIR_PosInfo pos, pIIR_AttributeValue first, pIIR_AttributeValueList rest)
1237   : IIR_List (pos),
1238     first (first),
1239     rest (rest)
1240     { }
1241 
1242   tree_kind kind ();
1243 };
1244 
1245 struct IIR_CaseStatementAlternativeList : IIR_List {
1246   pIIR_CaseStatementAlternative first;
1247   pIIR_CaseStatementAlternativeList rest;
1248 
IIR_CaseStatementAlternativeListIIR_CaseStatementAlternativeList1249   IIR_CaseStatementAlternativeList (pIIR_PosInfo pos, pIIR_CaseStatementAlternative first, pIIR_CaseStatementAlternativeList rest)
1250   : IIR_List (pos),
1251     first (first),
1252     rest (rest)
1253     { }
1254 
1255   tree_kind kind ();
1256 };
1257 
1258 struct IIR_ChoiceList : IIR_List {
1259   pIIR_Choice first;
1260   pIIR_ChoiceList rest;
1261 
IIR_ChoiceListIIR_ChoiceList1262   IIR_ChoiceList (pIIR_PosInfo pos, pIIR_Choice first, pIIR_ChoiceList rest)
1263   : IIR_List (pos),
1264     first (first),
1265     rest (rest)
1266     { }
1267 
1268   tree_kind kind ();
1269 };
1270 
1271 struct IIR_ConcurrentStatementList : IIR_List {
1272   pIIR_ConcurrentStatement first;
1273   pIIR_ConcurrentStatementList rest;
1274 
IIR_ConcurrentStatementListIIR_ConcurrentStatementList1275   IIR_ConcurrentStatementList (pIIR_PosInfo pos, pIIR_ConcurrentStatement first, pIIR_ConcurrentStatementList rest)
1276   : IIR_List (pos),
1277     first (first),
1278     rest (rest)
1279     { }
1280 
1281   tree_kind kind ();
1282 };
1283 
1284 struct IIR_ConfigurationItemList : IIR_List {
1285   pIIR_ConfigurationItem first;
1286   pIIR_ConfigurationItemList rest;
1287 
IIR_ConfigurationItemListIIR_ConfigurationItemList1288   IIR_ConfigurationItemList (pIIR_PosInfo pos, pIIR_ConfigurationItem first, pIIR_ConfigurationItemList rest)
1289   : IIR_List (pos),
1290     first (first),
1291     rest (rest)
1292     { }
1293 
1294   tree_kind kind ();
1295 };
1296 
1297 struct IIR_DeclarationList : IIR_List {
1298   pIIR_Declaration first;
1299   pIIR_DeclarationList rest;
1300 
IIR_DeclarationListIIR_DeclarationList1301   IIR_DeclarationList (pIIR_PosInfo pos, pIIR_Declaration first, pIIR_DeclarationList rest)
1302   : IIR_List (pos),
1303     first (first),
1304     rest (rest)
1305     { }
1306 
1307   tree_kind kind ();
1308 };
1309 
1310 struct IIR_ElementDeclarationList : IIR_List {
1311   pIIR_ElementDeclaration first;
1312   pIIR_ElementDeclarationList rest;
1313 
IIR_ElementDeclarationListIIR_ElementDeclarationList1314   IIR_ElementDeclarationList (pIIR_PosInfo pos, pIIR_ElementDeclaration first, pIIR_ElementDeclarationList rest)
1315   : IIR_List (pos),
1316     first (first),
1317     rest (rest)
1318     { }
1319 
1320   tree_kind kind ();
1321 };
1322 
1323 struct IIR_EntityClassEntryList : IIR_List {
1324   pIIR_EntityClassEntry first;
1325   pIIR_EntityClassEntryList rest;
1326 
IIR_EntityClassEntryListIIR_EntityClassEntryList1327   IIR_EntityClassEntryList (pIIR_PosInfo pos, pIIR_EntityClassEntry first, pIIR_EntityClassEntryList rest)
1328   : IIR_List (pos),
1329     first (first),
1330     rest (rest)
1331     { }
1332 
1333   tree_kind kind ();
1334 };
1335 
1336 struct IIR_EnumerationLiteralList : IIR_List {
1337   pIIR_EnumerationLiteral first;
1338   pIIR_EnumerationLiteralList rest;
1339 
IIR_EnumerationLiteralListIIR_EnumerationLiteralList1340   IIR_EnumerationLiteralList (pIIR_PosInfo pos, pIIR_EnumerationLiteral first, pIIR_EnumerationLiteralList rest)
1341   : IIR_List (pos),
1342     first (first),
1343     rest (rest)
1344     { }
1345 
1346   tree_kind kind ();
1347 };
1348 
1349 struct IIR_InterfaceList : IIR_List {
1350   pIIR_InterfaceDeclaration first;
1351   pIIR_InterfaceList rest;
1352 
IIR_InterfaceListIIR_InterfaceList1353   IIR_InterfaceList (pIIR_PosInfo pos, pIIR_InterfaceDeclaration first, pIIR_InterfaceList rest)
1354   : IIR_List (pos),
1355     first (first),
1356     rest (rest)
1357     { }
1358 
1359   tree_kind kind ();
1360 };
1361 
1362 struct IIR_LibraryUnitList : IIR_List {
1363   pIIR_LibraryUnit first;
1364   pIIR_LibraryUnitList rest;
1365 
IIR_LibraryUnitListIIR_LibraryUnitList1366   IIR_LibraryUnitList (pIIR_PosInfo pos, pIIR_LibraryUnit first, pIIR_LibraryUnitList rest)
1367   : IIR_List (pos),
1368     first (first),
1369     rest (rest)
1370     { }
1371 
1372   tree_kind kind ();
1373 };
1374 
1375 struct IIR_SequentialStatementList : IIR_List {
1376   pIIR_SequentialStatement first;
1377   pIIR_SequentialStatementList rest;
1378 
IIR_SequentialStatementListIIR_SequentialStatementList1379   IIR_SequentialStatementList (pIIR_PosInfo pos, pIIR_SequentialStatement first, pIIR_SequentialStatementList rest)
1380   : IIR_List (pos),
1381     first (first),
1382     rest (rest)
1383     { }
1384 
1385   tree_kind kind ();
1386 };
1387 
1388 struct IIR_UnitList : IIR_List {
1389   pIIR_PhysicalUnit first;
1390   pIIR_UnitList rest;
1391 
IIR_UnitListIIR_UnitList1392   IIR_UnitList (pIIR_PosInfo pos, pIIR_PhysicalUnit first, pIIR_UnitList rest)
1393   : IIR_List (pos),
1394     first (first),
1395     rest (rest)
1396     { }
1397 
1398   tree_kind kind ();
1399 };
1400 
1401 struct IIR_WaveformList : IIR_List {
1402   pIIR_WaveformElement first;
1403   pIIR_WaveformList rest;
1404 
IIR_WaveformListIIR_WaveformList1405   IIR_WaveformList (pIIR_PosInfo pos, pIIR_WaveformElement first, pIIR_WaveformList rest)
1406   : IIR_List (pos),
1407     first (first),
1408     rest (rest)
1409     { }
1410 
1411   tree_kind kind ();
1412 };
1413 
1414 struct IIR_TypeList : IIR_List {
1415   pIIR_Type first;
1416   pIIR_TypeList rest;
1417 
IIR_TypeListIIR_TypeList1418   IIR_TypeList (pIIR_PosInfo pos, pIIR_Type first, pIIR_TypeList rest)
1419   : IIR_List (pos),
1420     first (first),
1421     rest (rest)
1422     { }
1423 
1424   tree_kind kind ();
1425 };
1426 
1427 struct IIR_ExpressionList : IIR_List {
1428   pIIR_Expression first;
1429   pIIR_ExpressionList rest;
1430 
IIR_ExpressionListIIR_ExpressionList1431   IIR_ExpressionList (pIIR_PosInfo pos, pIIR_Expression first, pIIR_ExpressionList rest)
1432   : IIR_List (pos),
1433     first (first),
1434     rest (rest)
1435     { }
1436 
1437   tree_kind kind ();
1438 };
1439 
1440 struct IIR_IndexedAssociationList : IIR_List {
1441   pIIR_IndexedAssociation first;
1442   pIIR_IndexedAssociationList rest;
1443 
IIR_IndexedAssociationListIIR_IndexedAssociationList1444   IIR_IndexedAssociationList (pIIR_PosInfo pos, pIIR_IndexedAssociation first, pIIR_IndexedAssociationList rest)
1445   : IIR_List (pos),
1446     first (first),
1447     rest (rest)
1448     { }
1449 
1450   tree_kind kind ();
1451 };
1452 
1453 struct IIR_ElementAssociationList : IIR_List {
1454   pIIR_ElementAssociation first;
1455   pIIR_ElementAssociationList rest;
1456 
IIR_ElementAssociationListIIR_ElementAssociationList1457   IIR_ElementAssociationList (pIIR_PosInfo pos, pIIR_ElementAssociation first, pIIR_ElementAssociationList rest)
1458   : IIR_List (pos),
1459     first (first),
1460     rest (rest)
1461     { }
1462 
1463   tree_kind kind ();
1464 };
1465 
1466 struct IIR_ComponentInstantiationList : IIR_List {
1467   pIIR_ComponentInstantiationStatement first;
1468   pIIR_ComponentInstantiationList rest;
1469 
IIR_ComponentInstantiationListIIR_ComponentInstantiationList1470   IIR_ComponentInstantiationList (pIIR_PosInfo pos, pIIR_ComponentInstantiationStatement first, pIIR_ComponentInstantiationList rest)
1471   : IIR_List (pos),
1472     first (first),
1473     rest (rest)
1474     { }
1475 
1476   tree_kind kind ();
1477 };
1478 
1479 struct IIR_ConfigurationSpecificationList : IIR_List {
1480   pIIR_ConfigurationSpecification first;
1481   pIIR_ConfigurationSpecificationList rest;
1482 
IIR_ConfigurationSpecificationListIIR_ConfigurationSpecificationList1483   IIR_ConfigurationSpecificationList (pIIR_PosInfo pos, pIIR_ConfigurationSpecification first, pIIR_ConfigurationSpecificationList rest)
1484   : IIR_List (pos),
1485     first (first),
1486     rest (rest)
1487     { }
1488 
1489   tree_kind kind ();
1490 };
1491 
1492 struct IIR_IdentifierList : IIR_List {
1493   pIIR_Identifier first;
1494   pIIR_IdentifierList rest;
1495 
IIR_IdentifierListIIR_IdentifierList1496   IIR_IdentifierList (pIIR_PosInfo pos, pIIR_Identifier first, pIIR_IdentifierList rest)
1497   : IIR_List (pos),
1498     first (first),
1499     rest (rest)
1500     { }
1501 
1502   tree_kind kind ();
1503 };
1504 
1505 struct IIR_Range : IIR_Root {
1506 
IIR_RangeIIR_Range1507   IIR_Range (pIIR_PosInfo pos)
1508   : IIR_Root (pos)
1509     { }
1510 
1511   tree_kind kind ();
1512 };
1513 
1514 struct IIR_ExplicitRange : IIR_Range {
1515   pIIR_Expression left;
1516   pIIR_Expression right;
1517   IR_Direction direction;
1518 
IIR_ExplicitRangeIIR_ExplicitRange1519   IIR_ExplicitRange (pIIR_PosInfo pos, pIIR_Expression left, pIIR_Expression right, IR_Direction direction)
1520   : IIR_Range (pos),
1521     left (left),
1522     right (right),
1523     direction (direction)
1524     { }
1525 
1526   tree_kind kind ();
1527 };
1528 
1529 struct IIR_ArrayRange : IIR_Range {
1530   pIIR_Type type;
1531   pIIR_Expression array;
1532   pIIR_Type array_type;
1533   pIIR_Expression index;
1534 
IIR_ArrayRangeIIR_ArrayRange1535   IIR_ArrayRange (pIIR_PosInfo pos, pIIR_Type type, pIIR_Expression array, pIIR_Type array_type, pIIR_Expression index)
1536   : IIR_Range (pos),
1537     type (type),
1538     array (array),
1539     array_type (array_type),
1540     index (index)
1541     { }
1542 
1543   tree_kind kind ();
1544 };
1545 
1546 struct IIR_Attr_ArrayRANGE : IIR_ArrayRange {
1547 
IIR_Attr_ArrayRANGEIIR_Attr_ArrayRANGE1548   IIR_Attr_ArrayRANGE (pIIR_PosInfo pos, pIIR_Type type, pIIR_Expression array, pIIR_Type array_type, pIIR_Expression index)
1549   : IIR_ArrayRange (pos, type, array, array_type, index)
1550     { }
1551 
1552   tree_kind kind ();
1553 };
1554 
1555 struct IIR_Attr_ArrayREVERSE_RANGE : IIR_ArrayRange {
1556 
IIR_Attr_ArrayREVERSE_RANGEIIR_Attr_ArrayREVERSE_RANGE1557   IIR_Attr_ArrayREVERSE_RANGE (pIIR_PosInfo pos, pIIR_Type type, pIIR_Expression array, pIIR_Type array_type, pIIR_Expression index)
1558   : IIR_ArrayRange (pos, type, array, array_type, index)
1559     { }
1560 
1561   tree_kind kind ();
1562 };
1563 
1564 struct IIR_Type : IIR_Root {
1565   pIIR_TypeDeclaration declaration;
1566   pIIR_Type base;
1567   IR_StaticLevel static_level;
1568 
IIR_TypeIIR_Type1569   IIR_Type (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level)
1570   : IIR_Root (pos),
1571     declaration (declaration),
1572     base ((base == NULL)? this:base),
1573     static_level (static_level)
1574     { }
1575 
1576   tree_kind kind ();
1577 };
1578 
1579 struct IIR_Subtype : IIR_Type {
1580   pIIR_Type immediate_base;
1581   pIIR_FunctionDeclaration resolution_function;
1582 
IIR_SubtypeIIR_Subtype1583   IIR_Subtype (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_Type immediate_base, pIIR_FunctionDeclaration resolution_function)
1584   : IIR_Type (pos, declaration, base, static_level),
1585     immediate_base (immediate_base),
1586     resolution_function (resolution_function)
1587     { }
1588 
1589   tree_kind kind ();
1590 };
1591 
1592 struct IIR_ScalarType : IIR_Type {
1593 
IIR_ScalarTypeIIR_ScalarType1594   IIR_ScalarType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level)
1595   : IIR_Type (pos, declaration, base, static_level)
1596     { }
1597 
1598   tree_kind kind ();
1599 };
1600 
1601 struct IIR_ScalarSubtype : IIR_Subtype {
1602   pIIR_Range range;
1603 
IIR_ScalarSubtypeIIR_ScalarSubtype1604   IIR_ScalarSubtype (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_Type immediate_base, pIIR_FunctionDeclaration resolution_function, pIIR_Range range)
1605   : IIR_Subtype (pos, declaration, base, static_level, immediate_base, resolution_function),
1606     range (range)
1607     { }
1608 
1609   tree_kind kind ();
1610 };
1611 
1612 struct IIR_EnumerationType : IIR_ScalarType {
1613   pIIR_EnumerationLiteralList enumeration_literals;
1614 
IIR_EnumerationTypeIIR_EnumerationType1615   IIR_EnumerationType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_EnumerationLiteralList enumeration_literals)
1616   : IIR_ScalarType (pos, declaration, base, static_level),
1617     enumeration_literals (enumeration_literals)
1618     { }
1619 
1620   tree_kind kind ();
1621 };
1622 
1623 struct IIR_IntegerType : IIR_ScalarType {
1624 
IIR_IntegerTypeIIR_IntegerType1625   IIR_IntegerType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level)
1626   : IIR_ScalarType (pos, declaration, base, static_level)
1627     { }
1628 
1629   tree_kind kind ();
1630 };
1631 
1632 struct IIR_FloatingType : IIR_ScalarType {
1633 
IIR_FloatingTypeIIR_FloatingType1634   IIR_FloatingType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level)
1635   : IIR_ScalarType (pos, declaration, base, static_level)
1636     { }
1637 
1638   tree_kind kind ();
1639 };
1640 
1641 struct IIR_PhysicalType : IIR_ScalarType {
1642   pIIR_PhysicalUnit primary_unit;
1643   pIIR_UnitList units;
1644 
IIR_PhysicalTypeIIR_PhysicalType1645   IIR_PhysicalType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_PhysicalUnit primary_unit, pIIR_UnitList units)
1646   : IIR_ScalarType (pos, declaration, base, static_level),
1647     primary_unit (primary_unit),
1648     units (units)
1649     { }
1650 
1651   tree_kind kind ();
1652 };
1653 
1654 struct IIR_CompositeType : IIR_Type {
1655 
IIR_CompositeTypeIIR_CompositeType1656   IIR_CompositeType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level)
1657   : IIR_Type (pos, declaration, base, static_level)
1658     { }
1659 
1660   tree_kind kind ();
1661 };
1662 
1663 struct IIR_RecordType : IIR_CompositeType {
1664   pIIR_ElementDeclarationList element_declarations;
1665 
IIR_RecordTypeIIR_RecordType1666   IIR_RecordType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_ElementDeclarationList element_declarations)
1667   : IIR_CompositeType (pos, declaration, base, static_level),
1668     element_declarations (element_declarations)
1669     { }
1670 
1671   tree_kind kind ();
1672 };
1673 
1674 struct IIR_RecordSubtype : IIR_Subtype {
1675 
IIR_RecordSubtypeIIR_RecordSubtype1676   IIR_RecordSubtype (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_Type immediate_base, pIIR_FunctionDeclaration resolution_function)
1677   : IIR_Subtype (pos, declaration, base, static_level, immediate_base, resolution_function)
1678     { }
1679 
1680   tree_kind kind ();
1681 };
1682 
1683 struct IIR_AccessType : IIR_Type {
1684   pIIR_Type designated_type;
1685 
IIR_AccessTypeIIR_AccessType1686   IIR_AccessType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_Type designated_type)
1687   : IIR_Type (pos, declaration, base, static_level),
1688     designated_type (designated_type)
1689     { }
1690 
1691   tree_kind kind ();
1692 };
1693 
1694 struct IIR_FileType : IIR_Type {
1695   pIIR_Type type_mark;
1696 
IIR_FileTypeIIR_FileType1697   IIR_FileType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_Type type_mark)
1698   : IIR_Type (pos, declaration, base, static_level),
1699     type_mark (type_mark)
1700     { }
1701 
1702   tree_kind kind ();
1703 };
1704 
1705 struct IIR_ArrayType : IIR_CompositeType {
1706   pIIR_TypeList index_types;
1707   pIIR_Type element_type;
1708 
IIR_ArrayTypeIIR_ArrayType1709   IIR_ArrayType (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_TypeList index_types, pIIR_Type element_type)
1710   : IIR_CompositeType (pos, declaration, base, static_level),
1711     index_types (index_types),
1712     element_type (element_type)
1713     { }
1714 
1715   tree_kind kind ();
1716 };
1717 
1718 struct IIR_ArraySubtype : IIR_Subtype {
1719   pIIR_TypeList constraint;
1720 
IIR_ArraySubtypeIIR_ArraySubtype1721   IIR_ArraySubtype (pIIR_PosInfo pos, pIIR_TypeDeclaration declaration, pIIR_Type base, IR_StaticLevel static_level, pIIR_Type immediate_base, pIIR_FunctionDeclaration resolution_function, pIIR_TypeList constraint)
1722   : IIR_Subtype (pos, declaration, base, static_level, immediate_base, resolution_function),
1723     constraint (constraint)
1724     { }
1725 
1726   tree_kind kind ();
1727 };
1728 
1729 struct IIR_Declaration : IIR_Root {
1730   pIIR_TextLiteral declarator;
1731   pIIR_DeclarativeRegion declarative_region;
1732   pIIR_AttributeValueList attributes;
1733   int seqno;
1734 
IIR_DeclarationIIR_Declaration1735   IIR_Declaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno)
1736   : IIR_Root (pos),
1737     declarator (declarator),
1738     declarative_region (declarative_region),
1739     attributes (attributes),
1740     seqno (seqno)
1741     { }
1742 
1743   tree_kind kind ();
1744 };
1745 
1746 struct IIR_DeclarativeRegion : IIR_Declaration {
1747   pIIR_DeclarativeRegion continued;
1748   pIIR_DeclarationList declarations;
1749 
IIR_DeclarativeRegionIIR_DeclarativeRegion1750   IIR_DeclarativeRegion (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations)
1751   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
1752     continued (continued),
1753     declarations (declarations)
1754     { }
1755 
1756   tree_kind kind ();
1757 };
1758 
1759 struct IIR_LoopDeclarativeRegion : IIR_DeclarativeRegion {
1760   pIIR_LoopStatement loop_statement;
1761 
IIR_LoopDeclarativeRegionIIR_LoopDeclarativeRegion1762   IIR_LoopDeclarativeRegion (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_LoopStatement loop_statement)
1763   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
1764     loop_statement (loop_statement)
1765     { }
1766 
1767   tree_kind kind ();
1768 };
1769 
1770 struct IIR_SubprogramDeclaration : IIR_DeclarativeRegion {
1771   pIIR_InterfaceList interface_declarations;
1772   pIIR_SequentialStatementList subprogram_body;
1773   pIIR_SubprogramDeclaration prototype;
1774 
IIR_SubprogramDeclarationIIR_SubprogramDeclaration1775   IIR_SubprogramDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_InterfaceList interface_declarations, pIIR_SequentialStatementList subprogram_body, pIIR_SubprogramDeclaration prototype)
1776   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
1777     interface_declarations (interface_declarations),
1778     subprogram_body (subprogram_body),
1779     prototype (prototype)
1780     { }
1781 
1782   tree_kind kind ();
1783 };
1784 
1785 struct IIR_ProcedureDeclaration : IIR_SubprogramDeclaration {
1786 
IIR_ProcedureDeclarationIIR_ProcedureDeclaration1787   IIR_ProcedureDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_InterfaceList interface_declarations, pIIR_SequentialStatementList subprogram_body, pIIR_SubprogramDeclaration prototype)
1788   : IIR_SubprogramDeclaration (pos, declarator, declarative_region, attributes, seqno, continued, declarations, interface_declarations, subprogram_body, prototype)
1789     { }
1790 
1791   tree_kind kind ();
1792 };
1793 
1794 struct IIR_PredefinedProcedureDeclaration : IIR_ProcedureDeclaration {
1795 
IIR_PredefinedProcedureDeclarationIIR_PredefinedProcedureDeclaration1796   IIR_PredefinedProcedureDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_InterfaceList interface_declarations, pIIR_SequentialStatementList subprogram_body, pIIR_SubprogramDeclaration prototype)
1797   : IIR_ProcedureDeclaration (pos, declarator, declarative_region, attributes, seqno, continued, declarations, interface_declarations, subprogram_body, prototype)
1798     { }
1799 
1800   tree_kind kind ();
1801 };
1802 
1803 struct IIR_FunctionDeclaration : IIR_SubprogramDeclaration {
1804   bool pure;
1805   pIIR_Type return_type;
1806 
IIR_FunctionDeclarationIIR_FunctionDeclaration1807   IIR_FunctionDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_InterfaceList interface_declarations, pIIR_SequentialStatementList subprogram_body, pIIR_SubprogramDeclaration prototype, bool pure, pIIR_Type return_type)
1808   : IIR_SubprogramDeclaration (pos, declarator, declarative_region, attributes, seqno, continued, declarations, interface_declarations, subprogram_body, prototype),
1809     pure (pure),
1810     return_type (return_type)
1811     { }
1812 
1813   tree_kind kind ();
1814 };
1815 
1816 struct IIR_PredefinedFunctionDeclaration : IIR_FunctionDeclaration {
1817 
IIR_PredefinedFunctionDeclarationIIR_PredefinedFunctionDeclaration1818   IIR_PredefinedFunctionDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_InterfaceList interface_declarations, pIIR_SequentialStatementList subprogram_body, pIIR_SubprogramDeclaration prototype, bool pure, pIIR_Type return_type)
1819   : IIR_FunctionDeclaration (pos, declarator, declarative_region, attributes, seqno, continued, declarations, interface_declarations, subprogram_body, prototype, pure, return_type)
1820     { }
1821 
1822   tree_kind kind ();
1823 };
1824 
1825 struct IIR_EnumerationLiteral : IIR_Declaration {
1826   pIIR_EnumerationType subtype;
1827   int enum_pos;
1828 
IIR_EnumerationLiteralIIR_EnumerationLiteral1829   IIR_EnumerationLiteral (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_EnumerationType subtype, int enum_pos)
1830   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
1831     subtype (subtype),
1832     enum_pos (enum_pos)
1833     { }
1834 
1835   tree_kind kind ();
1836 };
1837 
1838 struct IIR_ElementDeclaration : IIR_Declaration {
1839   pIIR_Type subtype;
1840   int declaration_pos;
1841 
IIR_ElementDeclarationIIR_ElementDeclaration1842   IIR_ElementDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, int declaration_pos)
1843   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
1844     subtype (subtype),
1845     declaration_pos (declaration_pos)
1846     { }
1847 
1848   tree_kind kind ();
1849 };
1850 
1851 struct IIR_TypeDeclaration : IIR_Declaration {
1852   pIIR_Type type;
1853 
IIR_TypeDeclarationIIR_TypeDeclaration1854   IIR_TypeDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type type)
1855   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
1856     type (type)
1857     { }
1858 
1859   tree_kind kind ();
1860 };
1861 
1862 struct IIR_SubtypeDeclaration : IIR_TypeDeclaration {
1863 
IIR_SubtypeDeclarationIIR_SubtypeDeclaration1864   IIR_SubtypeDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type type)
1865   : IIR_TypeDeclaration (pos, declarator, declarative_region, attributes, seqno, type)
1866     { }
1867 
1868   tree_kind kind ();
1869 };
1870 
1871 struct IIR_ObjectDeclaration : IIR_Declaration {
1872   pIIR_Type subtype;
1873   pIIR_Expression initial_value;
1874   pIIR_ObjectReference alias_base;
1875 
IIR_ObjectDeclarationIIR_ObjectDeclaration1876   IIR_ObjectDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base)
1877   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
1878     subtype (subtype),
1879     initial_value (initial_value),
1880     alias_base (alias_base)
1881     { }
1882 
1883   tree_kind kind ();
1884 };
1885 
1886 struct IIR_ConstantDeclaration : IIR_ObjectDeclaration {
1887 
IIR_ConstantDeclarationIIR_ConstantDeclaration1888   IIR_ConstantDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base)
1889   : IIR_ObjectDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base)
1890     { }
1891 
1892   tree_kind kind ();
1893 };
1894 
1895 struct IIR_VariableDeclaration : IIR_ObjectDeclaration {
1896 
IIR_VariableDeclarationIIR_VariableDeclaration1897   IIR_VariableDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base)
1898   : IIR_ObjectDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base)
1899     { }
1900 
1901   tree_kind kind ();
1902 };
1903 
1904 struct IIR_SharedVariableDeclaration : IIR_VariableDeclaration {
1905 
IIR_SharedVariableDeclarationIIR_SharedVariableDeclaration1906   IIR_SharedVariableDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base)
1907   : IIR_VariableDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base)
1908     { }
1909 
1910   tree_kind kind ();
1911 };
1912 
1913 struct IIR_SignalDeclaration : IIR_ObjectDeclaration {
1914   IR_SignalKind signal_kind;
1915 
IIR_SignalDeclarationIIR_SignalDeclaration1916   IIR_SignalDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, IR_SignalKind signal_kind)
1917   : IIR_ObjectDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base),
1918     signal_kind (signal_kind)
1919     { }
1920 
1921   tree_kind kind ();
1922 };
1923 
1924 struct IIR_FileDeclaration : IIR_ObjectDeclaration {
1925   pIIR_Expression file_open_expression;
1926   pIIR_Expression file_logical_name;
1927 
IIR_FileDeclarationIIR_FileDeclaration1928   IIR_FileDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, pIIR_Expression file_open_expression, pIIR_Expression file_logical_name)
1929   : IIR_ObjectDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base),
1930     file_open_expression (file_open_expression),
1931     file_logical_name (file_logical_name)
1932     { }
1933 
1934   tree_kind kind ();
1935 };
1936 
1937 struct IIR_InterfaceDeclaration : IIR_ObjectDeclaration {
1938   IR_Mode mode;
1939   bool bus;
1940 
IIR_InterfaceDeclarationIIR_InterfaceDeclaration1941   IIR_InterfaceDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, IR_Mode mode, bool bus)
1942   : IIR_ObjectDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base),
1943     mode (mode),
1944     bus (bus)
1945     { }
1946 
1947   tree_kind kind ();
1948 };
1949 
1950 struct IIR_ConstantInterfaceDeclaration : IIR_InterfaceDeclaration {
1951 
IIR_ConstantInterfaceDeclarationIIR_ConstantInterfaceDeclaration1952   IIR_ConstantInterfaceDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, IR_Mode mode, bool bus)
1953   : IIR_InterfaceDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base, mode, bus)
1954     { }
1955 
1956   tree_kind kind ();
1957 };
1958 
1959 struct IIR_VariableInterfaceDeclaration : IIR_InterfaceDeclaration {
1960 
IIR_VariableInterfaceDeclarationIIR_VariableInterfaceDeclaration1961   IIR_VariableInterfaceDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, IR_Mode mode, bool bus)
1962   : IIR_InterfaceDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base, mode, bus)
1963     { }
1964 
1965   tree_kind kind ();
1966 };
1967 
1968 struct IIR_SignalInterfaceDeclaration : IIR_InterfaceDeclaration {
1969   IR_SignalKind signal_kind;
1970 
IIR_SignalInterfaceDeclarationIIR_SignalInterfaceDeclaration1971   IIR_SignalInterfaceDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, IR_Mode mode, bool bus, IR_SignalKind signal_kind)
1972   : IIR_InterfaceDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base, mode, bus),
1973     signal_kind (signal_kind)
1974     { }
1975 
1976   tree_kind kind ();
1977 };
1978 
1979 struct IIR_FileInterfaceDeclaration : IIR_InterfaceDeclaration {
1980 
IIR_FileInterfaceDeclarationIIR_FileInterfaceDeclaration1981   IIR_FileInterfaceDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype, pIIR_Expression initial_value, pIIR_ObjectReference alias_base, IR_Mode mode, bool bus)
1982   : IIR_InterfaceDeclaration (pos, declarator, declarative_region, attributes, seqno, subtype, initial_value, alias_base, mode, bus)
1983     { }
1984 
1985   tree_kind kind ();
1986 };
1987 
1988 struct IIR_AttributeDeclaration : IIR_Declaration {
1989   pIIR_Type subtype;
1990 
IIR_AttributeDeclarationIIR_AttributeDeclaration1991   IIR_AttributeDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type subtype)
1992   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
1993     subtype (subtype)
1994     { }
1995 
1996   tree_kind kind ();
1997 };
1998 
1999 struct IIR_ComponentDeclaration : IIR_DeclarativeRegion {
2000   pIIR_InterfaceList local_generic_clause;
2001   pIIR_InterfaceList local_port_clause;
2002 
IIR_ComponentDeclarationIIR_ComponentDeclaration2003   IIR_ComponentDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_InterfaceList local_generic_clause, pIIR_InterfaceList local_port_clause)
2004   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
2005     local_generic_clause (local_generic_clause),
2006     local_port_clause (local_port_clause)
2007     { }
2008 
2009   tree_kind kind ();
2010 };
2011 
2012 struct IIR_LibraryDeclaration : IIR_Declaration {
2013   pIIR_LibraryUnitList primary_units;
2014 
IIR_LibraryDeclarationIIR_LibraryDeclaration2015   IIR_LibraryDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_LibraryUnitList primary_units)
2016   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
2017     primary_units (primary_units)
2018     { }
2019 
2020   tree_kind kind ();
2021 };
2022 
2023 struct IIR_LibraryUnit : IIR_DeclarativeRegion {
2024   pIIR_DeclarationList context_items;
2025   pIIR_DeclarationList external_decls;
2026   pIIR_TextLiteral library_name;
2027   pIIR_LibraryUnitList used_units;
2028 
IIR_LibraryUnitIIR_LibraryUnit2029   IIR_LibraryUnit (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarationList context_items, pIIR_DeclarationList external_decls, pIIR_TextLiteral library_name, pIIR_LibraryUnitList used_units)
2030   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
2031     context_items (context_items),
2032     external_decls (external_decls),
2033     library_name (library_name),
2034     used_units (used_units)
2035     { }
2036 
2037   tree_kind kind ();
2038 };
2039 
2040 struct IIR_EntityDeclaration : IIR_LibraryUnit {
2041   pIIR_InterfaceList generic_clause;
2042   pIIR_InterfaceList port_clause;
2043   pIIR_ConcurrentStatementList entity_statement_part;
2044 
IIR_EntityDeclarationIIR_EntityDeclaration2045   IIR_EntityDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarationList context_items, pIIR_DeclarationList external_decls, pIIR_TextLiteral library_name, pIIR_LibraryUnitList used_units, pIIR_InterfaceList generic_clause, pIIR_InterfaceList port_clause, pIIR_ConcurrentStatementList entity_statement_part)
2046   : IIR_LibraryUnit (pos, declarator, declarative_region, attributes, seqno, continued, declarations, context_items, external_decls, library_name, used_units),
2047     generic_clause (generic_clause),
2048     port_clause (port_clause),
2049     entity_statement_part (entity_statement_part)
2050     { }
2051 
2052   tree_kind kind ();
2053 };
2054 
2055 struct IIR_ArchitectureDeclaration : IIR_LibraryUnit {
2056   pIIR_EntityDeclaration entity;
2057   pIIR_ConfigurationSpecificationList configuration_specifications;
2058   pIIR_ConcurrentStatementList architecture_statement_part;
2059 
IIR_ArchitectureDeclarationIIR_ArchitectureDeclaration2060   IIR_ArchitectureDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarationList context_items, pIIR_DeclarationList external_decls, pIIR_TextLiteral library_name, pIIR_LibraryUnitList used_units, pIIR_EntityDeclaration entity, pIIR_ConfigurationSpecificationList configuration_specifications, pIIR_ConcurrentStatementList architecture_statement_part)
2061   : IIR_LibraryUnit (pos, declarator, declarative_region, attributes, seqno, continued, declarations, context_items, external_decls, library_name, used_units),
2062     entity (entity),
2063     configuration_specifications (configuration_specifications),
2064     architecture_statement_part (architecture_statement_part)
2065     { }
2066 
2067   tree_kind kind ();
2068 };
2069 
2070 struct IIR_ArchitectureRef : IIR_DeclarativeRegion {
2071   pIIR_EntityDeclaration entity;
2072   pIIR_TextLiteral architecture_name;
2073 
IIR_ArchitectureRefIIR_ArchitectureRef2074   IIR_ArchitectureRef (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_EntityDeclaration entity, pIIR_TextLiteral architecture_name)
2075   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
2076     entity (entity),
2077     architecture_name (architecture_name)
2078     { }
2079 
2080   tree_kind kind ();
2081 };
2082 
2083 struct IIR_PackageDeclaration : IIR_LibraryUnit {
2084 
IIR_PackageDeclarationIIR_PackageDeclaration2085   IIR_PackageDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarationList context_items, pIIR_DeclarationList external_decls, pIIR_TextLiteral library_name, pIIR_LibraryUnitList used_units)
2086   : IIR_LibraryUnit (pos, declarator, declarative_region, attributes, seqno, continued, declarations, context_items, external_decls, library_name, used_units)
2087     { }
2088 
2089   tree_kind kind ();
2090 };
2091 
2092 struct IIR_PackageBodyDeclaration : IIR_LibraryUnit {
2093   pIIR_PackageDeclaration package;
2094 
IIR_PackageBodyDeclarationIIR_PackageBodyDeclaration2095   IIR_PackageBodyDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarationList context_items, pIIR_DeclarationList external_decls, pIIR_TextLiteral library_name, pIIR_LibraryUnitList used_units, pIIR_PackageDeclaration package)
2096   : IIR_LibraryUnit (pos, declarator, declarative_region, attributes, seqno, continued, declarations, context_items, external_decls, library_name, used_units),
2097     package (package)
2098     { }
2099 
2100   tree_kind kind ();
2101 };
2102 
2103 struct IIR_ConfigurationDeclaration : IIR_LibraryUnit {
2104   pIIR_BlockConfiguration block_configuration;
2105   pIIR_EntityDeclaration entity;
2106 
IIR_ConfigurationDeclarationIIR_ConfigurationDeclaration2107   IIR_ConfigurationDeclaration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarationList context_items, pIIR_DeclarationList external_decls, pIIR_TextLiteral library_name, pIIR_LibraryUnitList used_units, pIIR_BlockConfiguration block_configuration, pIIR_EntityDeclaration entity)
2108   : IIR_LibraryUnit (pos, declarator, declarative_region, attributes, seqno, continued, declarations, context_items, external_decls, library_name, used_units),
2109     block_configuration (block_configuration),
2110     entity (entity)
2111     { }
2112 
2113   tree_kind kind ();
2114 };
2115 
2116 struct IIR_ConfigurationItem : IIR_DeclarativeRegion {
2117 
IIR_ConfigurationItemIIR_ConfigurationItem2118   IIR_ConfigurationItem (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations)
2119   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations)
2120     { }
2121 
2122   tree_kind kind ();
2123 };
2124 
2125 struct IIR_BlockConfiguration : IIR_ConfigurationItem {
2126   pIIR_DeclarativeRegion block_specification;
2127   pIIR_DeclarationList use_clause_list;
2128   pIIR_ConfigurationItemList configuration_item_list;
2129 
IIR_BlockConfigurationIIR_BlockConfiguration2130   IIR_BlockConfiguration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_DeclarativeRegion block_specification, pIIR_DeclarationList use_clause_list, pIIR_ConfigurationItemList configuration_item_list)
2131   : IIR_ConfigurationItem (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
2132     block_specification (block_specification),
2133     use_clause_list (use_clause_list),
2134     configuration_item_list (configuration_item_list)
2135     { }
2136 
2137   tree_kind kind ();
2138 };
2139 
2140 struct IIR_ComponentConfiguration : IIR_ConfigurationItem {
2141   pIIR_LibraryUnit entity_aspect;
2142   pIIR_ComponentInstantiationList instantiation_list;
2143   pIIR_AssociationList generic_map_aspect;
2144   pIIR_AssociationList port_map_aspect;
2145   pIIR_BlockConfiguration block_config;
2146 
IIR_ComponentConfigurationIIR_ComponentConfiguration2147   IIR_ComponentConfiguration (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_LibraryUnit entity_aspect, pIIR_ComponentInstantiationList instantiation_list, pIIR_AssociationList generic_map_aspect, pIIR_AssociationList port_map_aspect, pIIR_BlockConfiguration block_config)
2148   : IIR_ConfigurationItem (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
2149     entity_aspect (entity_aspect),
2150     instantiation_list (instantiation_list),
2151     generic_map_aspect (generic_map_aspect),
2152     port_map_aspect (port_map_aspect),
2153     block_config (block_config)
2154     { }
2155 
2156   tree_kind kind ();
2157 };
2158 
2159 struct IIR_PhysicalUnit : IIR_Declaration {
2160   pIIR_Expression multiplier;
2161   pIIR_PhysicalUnit unit_name;
2162   pIIR_PhysicalType type;
2163   int unit_pos;
2164 
IIR_PhysicalUnitIIR_PhysicalUnit2165   IIR_PhysicalUnit (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Expression multiplier, pIIR_PhysicalUnit unit_name, pIIR_PhysicalType type, int unit_pos)
2166   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
2167     multiplier (multiplier),
2168     unit_name (unit_name),
2169     type (type),
2170     unit_pos (unit_pos)
2171     { }
2172 
2173   tree_kind kind ();
2174 };
2175 
2176 struct IIR_BindingIndication : IIR_Tuple {
2177   pIIR_DeclarativeRegion unit;
2178   pIIR_AssociationList generic_map_list;
2179   pIIR_AssociationList port_map_list;
2180 
IIR_BindingIndicationIIR_BindingIndication2181   IIR_BindingIndication (pIIR_PosInfo pos, pIIR_DeclarativeRegion unit, pIIR_AssociationList generic_map_list, pIIR_AssociationList port_map_list)
2182   : IIR_Tuple (pos),
2183     unit (unit),
2184     generic_map_list (generic_map_list),
2185     port_map_list (port_map_list)
2186     { }
2187 
2188   tree_kind kind ();
2189 };
2190 
2191 struct IIR_ConfigurationSpecification : IIR_Tuple {
2192   pIIR_Identifier label;
2193   pIIR_ComponentDeclaration component;
2194   pIIR_BindingIndication binding;
2195 
IIR_ConfigurationSpecificationIIR_ConfigurationSpecification2196   IIR_ConfigurationSpecification (pIIR_PosInfo pos, pIIR_Identifier label, pIIR_ComponentDeclaration component, pIIR_BindingIndication binding)
2197   : IIR_Tuple (pos),
2198     label (label),
2199     component (component),
2200     binding (binding)
2201     { }
2202 
2203   tree_kind kind ();
2204 };
2205 
2206 struct IIR_DisconnectSpecification : IIR_Declaration {
2207   pIIR_Type type_mark;
2208   pIIR_Expression time_expression;
2209   pIIR_ObjectReference guarded_signal;
2210 
IIR_DisconnectSpecificationIIR_DisconnectSpecification2211   IIR_DisconnectSpecification (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Type type_mark, pIIR_Expression time_expression, pIIR_ObjectReference guarded_signal)
2212   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
2213     type_mark (type_mark),
2214     time_expression (time_expression),
2215     guarded_signal (guarded_signal)
2216     { }
2217 
2218   tree_kind kind ();
2219 };
2220 
2221 struct IIR_Label : IIR_Declaration {
2222   pIIR_SequentialStatement statement;
2223 
IIR_LabelIIR_Label2224   IIR_Label (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_SequentialStatement statement)
2225   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
2226     statement (statement)
2227     { }
2228 
2229   tree_kind kind ();
2230 };
2231 
2232 struct IIR_LibraryClause : IIR_Declaration {
2233 
IIR_LibraryClauseIIR_LibraryClause2234   IIR_LibraryClause (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno)
2235   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno)
2236     { }
2237 
2238   tree_kind kind ();
2239 };
2240 
2241 struct IIR_UseClause : IIR_Declaration {
2242   pIIR_Declaration used_unit;
2243 
IIR_UseClauseIIR_UseClause2244   IIR_UseClause (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_Declaration used_unit)
2245   : IIR_Declaration (pos, declarator, declarative_region, attributes, seqno),
2246     used_unit (used_unit)
2247     { }
2248 
2249   tree_kind kind ();
2250 };
2251 
2252 struct IIR_Expression : IIR_Root {
2253   pIIR_Type subtype;
2254   IR_StaticLevel static_level;
2255 
IIR_ExpressionIIR_Expression2256   IIR_Expression (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2257   : IIR_Root (pos),
2258     subtype (subtype),
2259     static_level (static_level)
2260     { }
2261 
2262   tree_kind kind ();
2263 };
2264 
2265 struct IIR_AbstractLiteralExpression : IIR_Expression {
2266   pIIR_AbstractLiteral value;
2267 
IIR_AbstractLiteralExpressionIIR_AbstractLiteralExpression2268   IIR_AbstractLiteralExpression (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_AbstractLiteral value)
2269   : IIR_Expression (pos, subtype, static_level),
2270     value (value)
2271     { }
2272 
2273   tree_kind kind ();
2274 };
2275 
2276 struct IIR_PhysicalLiteral : IIR_AbstractLiteralExpression {
2277   pIIR_PhysicalUnit unit;
2278 
IIR_PhysicalLiteralIIR_PhysicalLiteral2279   IIR_PhysicalLiteral (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_AbstractLiteral value, pIIR_PhysicalUnit unit)
2280   : IIR_AbstractLiteralExpression (pos, subtype, static_level, value),
2281     unit (unit)
2282     { }
2283 
2284   tree_kind kind ();
2285 };
2286 
2287 struct IIR_ArrayLiteralExpression : IIR_Expression {
2288   pIIR_StringLiteral value;
2289 
IIR_ArrayLiteralExpressionIIR_ArrayLiteralExpression2290   IIR_ArrayLiteralExpression (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_StringLiteral value)
2291   : IIR_Expression (pos, subtype, static_level),
2292     value (value)
2293     { }
2294 
2295   tree_kind kind ();
2296 };
2297 
2298 struct IIR_EnumLiteralReference : IIR_Expression {
2299   pIIR_EnumerationLiteral value;
2300 
IIR_EnumLiteralReferenceIIR_EnumLiteralReference2301   IIR_EnumLiteralReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_EnumerationLiteral value)
2302   : IIR_Expression (pos, subtype, static_level),
2303     value (value)
2304     { }
2305 
2306   tree_kind kind ();
2307 };
2308 
2309 struct IIR_NullExpression : IIR_Expression {
2310 
IIR_NullExpressionIIR_NullExpression2311   IIR_NullExpression (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2312   : IIR_Expression (pos, subtype, static_level)
2313     { }
2314 
2315   tree_kind kind ();
2316 };
2317 
2318 struct IIR_Aggregate : IIR_Expression {
2319 
IIR_AggregateIIR_Aggregate2320   IIR_Aggregate (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2321   : IIR_Expression (pos, subtype, static_level)
2322     { }
2323 
2324   tree_kind kind ();
2325 };
2326 
2327 struct IIR_RecordAggregate : IIR_Aggregate {
2328   pIIR_ElementAssociationList element_association_list;
2329 
IIR_RecordAggregateIIR_RecordAggregate2330   IIR_RecordAggregate (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ElementAssociationList element_association_list)
2331   : IIR_Aggregate (pos, subtype, static_level),
2332     element_association_list (element_association_list)
2333     { }
2334 
2335   tree_kind kind ();
2336 };
2337 
2338 struct IIR_ArtificialRecordAggregate : IIR_RecordAggregate {
2339 
IIR_ArtificialRecordAggregateIIR_ArtificialRecordAggregate2340   IIR_ArtificialRecordAggregate (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ElementAssociationList element_association_list)
2341   : IIR_RecordAggregate (pos, subtype, static_level, element_association_list)
2342     { }
2343 
2344   tree_kind kind ();
2345 };
2346 
2347 struct IIR_ArrayAggregate : IIR_Aggregate {
2348   pIIR_IndexedAssociationList indexed_association_list;
2349 
IIR_ArrayAggregateIIR_ArrayAggregate2350   IIR_ArrayAggregate (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_IndexedAssociationList indexed_association_list)
2351   : IIR_Aggregate (pos, subtype, static_level),
2352     indexed_association_list (indexed_association_list)
2353     { }
2354 
2355   tree_kind kind ();
2356 };
2357 
2358 struct IIR_ArtificialArrayAggregate : IIR_ArrayAggregate {
2359 
IIR_ArtificialArrayAggregateIIR_ArtificialArrayAggregate2360   IIR_ArtificialArrayAggregate (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_IndexedAssociationList indexed_association_list)
2361   : IIR_ArrayAggregate (pos, subtype, static_level, indexed_association_list)
2362     { }
2363 
2364   tree_kind kind ();
2365 };
2366 
2367 struct IIR_FunctionCall : IIR_Expression {
2368   pIIR_FunctionDeclaration function;
2369   pIIR_AssociationList parameter_association_list;
2370 
IIR_FunctionCallIIR_FunctionCall2371   IIR_FunctionCall (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_FunctionDeclaration function, pIIR_AssociationList parameter_association_list)
2372   : IIR_Expression (pos, subtype, static_level),
2373     function (function),
2374     parameter_association_list (parameter_association_list)
2375     { }
2376 
2377   tree_kind kind ();
2378 };
2379 
2380 struct IIR_QualifiedExpression : IIR_Expression {
2381   pIIR_Type type_mark;
2382   pIIR_Expression expression;
2383 
IIR_QualifiedExpressionIIR_QualifiedExpression2384   IIR_QualifiedExpression (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type type_mark, pIIR_Expression expression)
2385   : IIR_Expression (pos, subtype, static_level),
2386     type_mark (type_mark),
2387     expression (expression)
2388     { }
2389 
2390   tree_kind kind ();
2391 };
2392 
2393 struct IIR_TypeConversion : IIR_Expression {
2394   pIIR_Type type_mark;
2395   pIIR_Expression expression;
2396 
IIR_TypeConversionIIR_TypeConversion2397   IIR_TypeConversion (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type type_mark, pIIR_Expression expression)
2398   : IIR_Expression (pos, subtype, static_level),
2399     type_mark (type_mark),
2400     expression (expression)
2401     { }
2402 
2403   tree_kind kind ();
2404 };
2405 
2406 struct IIR_Allocator : IIR_Expression {
2407   pIIR_Type type_mark;
2408   pIIR_Expression value;
2409 
IIR_AllocatorIIR_Allocator2410   IIR_Allocator (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type type_mark, pIIR_Expression value)
2411   : IIR_Expression (pos, subtype, static_level),
2412     type_mark (type_mark),
2413     value (value)
2414     { }
2415 
2416   tree_kind kind ();
2417 };
2418 
2419 struct IIR_OpenExpression : IIR_Expression {
2420 
IIR_OpenExpressionIIR_OpenExpression2421   IIR_OpenExpression (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2422   : IIR_Expression (pos, subtype, static_level)
2423     { }
2424 
2425   tree_kind kind ();
2426 };
2427 
2428 struct IIR_ObjectReference : IIR_Expression {
2429 
IIR_ObjectReferenceIIR_ObjectReference2430   IIR_ObjectReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2431   : IIR_Expression (pos, subtype, static_level)
2432     { }
2433 
2434   tree_kind kind ();
2435 };
2436 
2437 struct IIR_SimpleReference : IIR_ObjectReference {
2438   pIIR_ObjectDeclaration object;
2439 
IIR_SimpleReferenceIIR_SimpleReference2440   IIR_SimpleReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectDeclaration object)
2441   : IIR_ObjectReference (pos, subtype, static_level),
2442     object (object)
2443     { }
2444 
2445   tree_kind kind ();
2446 };
2447 
2448 struct IIR_AccessReference : IIR_ObjectReference {
2449   pIIR_Expression access;
2450 
IIR_AccessReferenceIIR_AccessReference2451   IIR_AccessReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression access)
2452   : IIR_ObjectReference (pos, subtype, static_level),
2453     access (access)
2454     { }
2455 
2456   tree_kind kind ();
2457 };
2458 
2459 struct IIR_RecordReference : IIR_ObjectReference {
2460   pIIR_Expression record;
2461   pIIR_ElementDeclaration element;
2462 
IIR_RecordReferenceIIR_RecordReference2463   IIR_RecordReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression record, pIIR_ElementDeclaration element)
2464   : IIR_ObjectReference (pos, subtype, static_level),
2465     record (record),
2466     element (element)
2467     { }
2468 
2469   tree_kind kind ();
2470 };
2471 
2472 struct IIR_GenericArrayReference : IIR_ObjectReference {
2473   pIIR_Expression array;
2474 
IIR_GenericArrayReferenceIIR_GenericArrayReference2475   IIR_GenericArrayReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array)
2476   : IIR_ObjectReference (pos, subtype, static_level),
2477     array (array)
2478     { }
2479 
2480   tree_kind kind ();
2481 };
2482 
2483 struct IIR_ArrayReference : IIR_GenericArrayReference {
2484   pIIR_ExpressionList indices;
2485 
IIR_ArrayReferenceIIR_ArrayReference2486   IIR_ArrayReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_ExpressionList indices)
2487   : IIR_GenericArrayReference (pos, subtype, static_level, array),
2488     indices (indices)
2489     { }
2490 
2491   tree_kind kind ();
2492 };
2493 
2494 struct IIR_SliceReference : IIR_GenericArrayReference {
2495   pIIR_Range range;
2496 
IIR_SliceReferenceIIR_SliceReference2497   IIR_SliceReference (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Range range)
2498   : IIR_GenericArrayReference (pos, subtype, static_level, array),
2499     range (range)
2500     { }
2501 
2502   tree_kind kind ();
2503 };
2504 
2505 struct IIR_SignalAttr : IIR_ObjectReference {
2506   pIIR_ObjectReference signal;
2507 
IIR_SignalAttrIIR_SignalAttr2508   IIR_SignalAttr (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2509   : IIR_ObjectReference (pos, subtype, static_level),
2510     signal (signal)
2511     { }
2512 
2513   tree_kind kind ();
2514 };
2515 
2516 struct IIR_Attr_DELAYED : IIR_SignalAttr {
2517   pIIR_Expression delay;
2518 
IIR_Attr_DELAYEDIIR_Attr_DELAYED2519   IIR_Attr_DELAYED (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal, pIIR_Expression delay)
2520   : IIR_SignalAttr (pos, subtype, static_level, signal),
2521     delay (delay)
2522     { }
2523 
2524   tree_kind kind ();
2525 };
2526 
2527 struct IIR_Attr_STABLE : IIR_SignalAttr {
2528   pIIR_Expression duration;
2529 
IIR_Attr_STABLEIIR_Attr_STABLE2530   IIR_Attr_STABLE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal, pIIR_Expression duration)
2531   : IIR_SignalAttr (pos, subtype, static_level, signal),
2532     duration (duration)
2533     { }
2534 
2535   tree_kind kind ();
2536 };
2537 
2538 struct IIR_Attr_QUIET : IIR_SignalAttr {
2539   pIIR_Expression duration;
2540 
IIR_Attr_QUIETIIR_Attr_QUIET2541   IIR_Attr_QUIET (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal, pIIR_Expression duration)
2542   : IIR_SignalAttr (pos, subtype, static_level, signal),
2543     duration (duration)
2544     { }
2545 
2546   tree_kind kind ();
2547 };
2548 
2549 struct IIR_Attr_TRANSACTION : IIR_SignalAttr {
2550 
IIR_Attr_TRANSACTIONIIR_Attr_TRANSACTION2551   IIR_Attr_TRANSACTION (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2552   : IIR_SignalAttr (pos, subtype, static_level, signal)
2553     { }
2554 
2555   tree_kind kind ();
2556 };
2557 
2558 struct IIR_FunctionAttr : IIR_Expression {
2559 
IIR_FunctionAttrIIR_FunctionAttr2560   IIR_FunctionAttr (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2561   : IIR_Expression (pos, subtype, static_level)
2562     { }
2563 
2564   tree_kind kind ();
2565 };
2566 
2567 struct IIR_AttrSigFunc : IIR_FunctionAttr {
2568   pIIR_ObjectReference signal;
2569 
IIR_AttrSigFuncIIR_AttrSigFunc2570   IIR_AttrSigFunc (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2571   : IIR_FunctionAttr (pos, subtype, static_level),
2572     signal (signal)
2573     { }
2574 
2575   tree_kind kind ();
2576 };
2577 
2578 struct IIR_Attr_EVENT : IIR_AttrSigFunc {
2579 
IIR_Attr_EVENTIIR_Attr_EVENT2580   IIR_Attr_EVENT (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2581   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2582     { }
2583 
2584   tree_kind kind ();
2585 };
2586 
2587 struct IIR_Attr_ACTIVE : IIR_AttrSigFunc {
2588 
IIR_Attr_ACTIVEIIR_Attr_ACTIVE2589   IIR_Attr_ACTIVE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2590   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2591     { }
2592 
2593   tree_kind kind ();
2594 };
2595 
2596 struct IIR_Attr_LAST_EVENT : IIR_AttrSigFunc {
2597 
IIR_Attr_LAST_EVENTIIR_Attr_LAST_EVENT2598   IIR_Attr_LAST_EVENT (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2599   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2600     { }
2601 
2602   tree_kind kind ();
2603 };
2604 
2605 struct IIR_Attr_LAST_ACTIVE : IIR_AttrSigFunc {
2606 
IIR_Attr_LAST_ACTIVEIIR_Attr_LAST_ACTIVE2607   IIR_Attr_LAST_ACTIVE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2608   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2609     { }
2610 
2611   tree_kind kind ();
2612 };
2613 
2614 struct IIR_Attr_LAST_VALUE : IIR_AttrSigFunc {
2615 
IIR_Attr_LAST_VALUEIIR_Attr_LAST_VALUE2616   IIR_Attr_LAST_VALUE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2617   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2618     { }
2619 
2620   tree_kind kind ();
2621 };
2622 
2623 struct IIR_Attr_DRIVING : IIR_AttrSigFunc {
2624 
IIR_Attr_DRIVINGIIR_Attr_DRIVING2625   IIR_Attr_DRIVING (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2626   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2627     { }
2628 
2629   tree_kind kind ();
2630 };
2631 
2632 struct IIR_Attr_DRIVING_VALUE : IIR_AttrSigFunc {
2633 
IIR_Attr_DRIVING_VALUEIIR_Attr_DRIVING_VALUE2634   IIR_Attr_DRIVING_VALUE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_ObjectReference signal)
2635   : IIR_AttrSigFunc (pos, subtype, static_level, signal)
2636     { }
2637 
2638   tree_kind kind ();
2639 };
2640 
2641 struct IIR_ValueAttr : IIR_Expression {
2642 
IIR_ValueAttrIIR_ValueAttr2643   IIR_ValueAttr (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level)
2644   : IIR_Expression (pos, subtype, static_level)
2645     { }
2646 
2647   tree_kind kind ();
2648 };
2649 
2650 struct IIR_AttrTypeValue : IIR_ValueAttr {
2651   pIIR_Type prefix;
2652   pIIR_Expression argument;
2653 
IIR_AttrTypeValueIIR_AttrTypeValue2654   IIR_AttrTypeValue (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2655   : IIR_ValueAttr (pos, subtype, static_level),
2656     prefix (prefix),
2657     argument (argument)
2658     { }
2659 
2660   tree_kind kind ();
2661 };
2662 
2663 struct IIR_Attr_LEFT : IIR_AttrTypeValue {
2664 
IIR_Attr_LEFTIIR_Attr_LEFT2665   IIR_Attr_LEFT (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2666   : IIR_AttrTypeValue (pos, subtype, static_level, prefix, argument)
2667     { }
2668 
2669   tree_kind kind ();
2670 };
2671 
2672 struct IIR_Attr_RIGHT : IIR_AttrTypeValue {
2673 
IIR_Attr_RIGHTIIR_Attr_RIGHT2674   IIR_Attr_RIGHT (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2675   : IIR_AttrTypeValue (pos, subtype, static_level, prefix, argument)
2676     { }
2677 
2678   tree_kind kind ();
2679 };
2680 
2681 struct IIR_Attr_LOW : IIR_AttrTypeValue {
2682 
IIR_Attr_LOWIIR_Attr_LOW2683   IIR_Attr_LOW (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2684   : IIR_AttrTypeValue (pos, subtype, static_level, prefix, argument)
2685     { }
2686 
2687   tree_kind kind ();
2688 };
2689 
2690 struct IIR_Attr_HIGH : IIR_AttrTypeValue {
2691 
IIR_Attr_HIGHIIR_Attr_HIGH2692   IIR_Attr_HIGH (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2693   : IIR_AttrTypeValue (pos, subtype, static_level, prefix, argument)
2694     { }
2695 
2696   tree_kind kind ();
2697 };
2698 
2699 struct IIR_Attr_ASCENDING : IIR_AttrTypeValue {
2700 
IIR_Attr_ASCENDINGIIR_Attr_ASCENDING2701   IIR_Attr_ASCENDING (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2702   : IIR_AttrTypeValue (pos, subtype, static_level, prefix, argument)
2703     { }
2704 
2705   tree_kind kind ();
2706 };
2707 
2708 struct IIR_Attr_LENGTH : IIR_AttrTypeValue {
2709 
IIR_Attr_LENGTHIIR_Attr_LENGTH2710   IIR_Attr_LENGTH (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2711   : IIR_AttrTypeValue (pos, subtype, static_level, prefix, argument)
2712     { }
2713 
2714   tree_kind kind ();
2715 };
2716 
2717 struct IIR_AttrTypeFunc : IIR_FunctionAttr {
2718   pIIR_Type prefix;
2719   pIIR_Expression argument;
2720 
IIR_AttrTypeFuncIIR_AttrTypeFunc2721   IIR_AttrTypeFunc (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2722   : IIR_FunctionAttr (pos, subtype, static_level),
2723     prefix (prefix),
2724     argument (argument)
2725     { }
2726 
2727   tree_kind kind ();
2728 };
2729 
2730 struct IIR_Attr_IMAGE : IIR_AttrTypeFunc {
2731 
IIR_Attr_IMAGEIIR_Attr_IMAGE2732   IIR_Attr_IMAGE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2733   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2734     { }
2735 
2736   tree_kind kind ();
2737 };
2738 
2739 struct IIR_Attr_VALUE : IIR_AttrTypeFunc {
2740 
IIR_Attr_VALUEIIR_Attr_VALUE2741   IIR_Attr_VALUE (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2742   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2743     { }
2744 
2745   tree_kind kind ();
2746 };
2747 
2748 struct IIR_Attr_POS : IIR_AttrTypeFunc {
2749 
IIR_Attr_POSIIR_Attr_POS2750   IIR_Attr_POS (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2751   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2752     { }
2753 
2754   tree_kind kind ();
2755 };
2756 
2757 struct IIR_Attr_VAL : IIR_AttrTypeFunc {
2758 
IIR_Attr_VALIIR_Attr_VAL2759   IIR_Attr_VAL (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2760   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2761     { }
2762 
2763   tree_kind kind ();
2764 };
2765 
2766 struct IIR_Attr_SUCC : IIR_AttrTypeFunc {
2767 
IIR_Attr_SUCCIIR_Attr_SUCC2768   IIR_Attr_SUCC (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2769   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2770     { }
2771 
2772   tree_kind kind ();
2773 };
2774 
2775 struct IIR_Attr_PRED : IIR_AttrTypeFunc {
2776 
IIR_Attr_PREDIIR_Attr_PRED2777   IIR_Attr_PRED (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2778   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2779     { }
2780 
2781   tree_kind kind ();
2782 };
2783 
2784 struct IIR_Attr_LEFTOF : IIR_AttrTypeFunc {
2785 
IIR_Attr_LEFTOFIIR_Attr_LEFTOF2786   IIR_Attr_LEFTOF (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2787   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2788     { }
2789 
2790   tree_kind kind ();
2791 };
2792 
2793 struct IIR_Attr_RIGHTOF : IIR_AttrTypeFunc {
2794 
IIR_Attr_RIGHTOFIIR_Attr_RIGHTOF2795   IIR_Attr_RIGHTOF (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Type prefix, pIIR_Expression argument)
2796   : IIR_AttrTypeFunc (pos, subtype, static_level, prefix, argument)
2797     { }
2798 
2799   tree_kind kind ();
2800 };
2801 
2802 struct IIR_AttrArrayFunc : IIR_FunctionAttr {
2803   pIIR_Expression array;
2804   pIIR_Type array_type;
2805   int index;
2806 
IIR_AttrArrayFuncIIR_AttrArrayFunc2807   IIR_AttrArrayFunc (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2808   : IIR_FunctionAttr (pos, subtype, static_level),
2809     array (array),
2810     array_type (array_type),
2811     index (index)
2812     { }
2813 
2814   tree_kind kind ();
2815 };
2816 
2817 struct IIR_Attr_ArrayLEFT : IIR_AttrArrayFunc {
2818 
IIR_Attr_ArrayLEFTIIR_Attr_ArrayLEFT2819   IIR_Attr_ArrayLEFT (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2820   : IIR_AttrArrayFunc (pos, subtype, static_level, array, array_type, index)
2821     { }
2822 
2823   tree_kind kind ();
2824 };
2825 
2826 struct IIR_Attr_ArrayRIGHT : IIR_AttrArrayFunc {
2827 
IIR_Attr_ArrayRIGHTIIR_Attr_ArrayRIGHT2828   IIR_Attr_ArrayRIGHT (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2829   : IIR_AttrArrayFunc (pos, subtype, static_level, array, array_type, index)
2830     { }
2831 
2832   tree_kind kind ();
2833 };
2834 
2835 struct IIR_Attr_ArrayHIGH : IIR_AttrArrayFunc {
2836 
IIR_Attr_ArrayHIGHIIR_Attr_ArrayHIGH2837   IIR_Attr_ArrayHIGH (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2838   : IIR_AttrArrayFunc (pos, subtype, static_level, array, array_type, index)
2839     { }
2840 
2841   tree_kind kind ();
2842 };
2843 
2844 struct IIR_Attr_ArrayLOW : IIR_AttrArrayFunc {
2845 
IIR_Attr_ArrayLOWIIR_Attr_ArrayLOW2846   IIR_Attr_ArrayLOW (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2847   : IIR_AttrArrayFunc (pos, subtype, static_level, array, array_type, index)
2848     { }
2849 
2850   tree_kind kind ();
2851 };
2852 
2853 struct IIR_Attr_ArrayASCENDING : IIR_AttrArrayFunc {
2854 
IIR_Attr_ArrayASCENDINGIIR_Attr_ArrayASCENDING2855   IIR_Attr_ArrayASCENDING (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2856   : IIR_AttrArrayFunc (pos, subtype, static_level, array, array_type, index)
2857     { }
2858 
2859   tree_kind kind ();
2860 };
2861 
2862 struct IIR_Attr_ArrayLENGTH : IIR_AttrArrayFunc {
2863 
IIR_Attr_ArrayLENGTHIIR_Attr_ArrayLENGTH2864   IIR_Attr_ArrayLENGTH (pIIR_PosInfo pos, pIIR_Type subtype, IR_StaticLevel static_level, pIIR_Expression array, pIIR_Type array_type, int index)
2865   : IIR_AttrArrayFunc (pos, subtype, static_level, array, array_type, index)
2866     { }
2867 
2868   tree_kind kind ();
2869 };
2870 
2871 struct IIR_SequentialStatement : IIR_Root {
2872   pIIR_Label label;
2873 
IIR_SequentialStatementIIR_SequentialStatement2874   IIR_SequentialStatement (pIIR_PosInfo pos, pIIR_Label label)
2875   : IIR_Root (pos),
2876     label (label)
2877     { }
2878 
2879   tree_kind kind ();
2880 };
2881 
2882 struct IIR_WaitStatement : IIR_SequentialStatement {
2883   pIIR_Expression condition_clause;
2884   pIIR_Expression timeout_clause;
2885   pIIR_ExpressionList sensitivity_list;
2886 
IIR_WaitStatementIIR_WaitStatement2887   IIR_WaitStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression condition_clause, pIIR_Expression timeout_clause, pIIR_ExpressionList sensitivity_list)
2888   : IIR_SequentialStatement (pos, label),
2889     condition_clause (condition_clause),
2890     timeout_clause (timeout_clause),
2891     sensitivity_list (sensitivity_list)
2892     { }
2893 
2894   tree_kind kind ();
2895 };
2896 
2897 struct IIR_AssertionStatement : IIR_SequentialStatement {
2898   pIIR_Expression assertion_condition;
2899   pIIR_Expression report_expression;
2900   pIIR_Expression severity_expression;
2901 
IIR_AssertionStatementIIR_AssertionStatement2902   IIR_AssertionStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression assertion_condition, pIIR_Expression report_expression, pIIR_Expression severity_expression)
2903   : IIR_SequentialStatement (pos, label),
2904     assertion_condition (assertion_condition),
2905     report_expression (report_expression),
2906     severity_expression (severity_expression)
2907     { }
2908 
2909   tree_kind kind ();
2910 };
2911 
2912 struct IIR_ReportStatement : IIR_SequentialStatement {
2913   pIIR_Expression report_expression;
2914   pIIR_Expression severity_expression;
2915 
IIR_ReportStatementIIR_ReportStatement2916   IIR_ReportStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression report_expression, pIIR_Expression severity_expression)
2917   : IIR_SequentialStatement (pos, label),
2918     report_expression (report_expression),
2919     severity_expression (severity_expression)
2920     { }
2921 
2922   tree_kind kind ();
2923 };
2924 
2925 struct IIR_SignalAssignmentStatement : IIR_SequentialStatement {
2926   pIIR_Expression target;
2927   IR_DelayMechanism delay_mechanism;
2928   pIIR_Expression reject_time_expression;
2929   pIIR_WaveformList waveform;
2930 
IIR_SignalAssignmentStatementIIR_SignalAssignmentStatement2931   IIR_SignalAssignmentStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression target, IR_DelayMechanism delay_mechanism, pIIR_Expression reject_time_expression, pIIR_WaveformList waveform)
2932   : IIR_SequentialStatement (pos, label),
2933     target (target),
2934     delay_mechanism (delay_mechanism),
2935     reject_time_expression (reject_time_expression),
2936     waveform (waveform)
2937     { }
2938 
2939   tree_kind kind ();
2940 };
2941 
2942 struct IIR_VariableAssignmentStatement : IIR_SequentialStatement {
2943   pIIR_Expression target;
2944   pIIR_Expression expression;
2945 
IIR_VariableAssignmentStatementIIR_VariableAssignmentStatement2946   IIR_VariableAssignmentStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression target, pIIR_Expression expression)
2947   : IIR_SequentialStatement (pos, label),
2948     target (target),
2949     expression (expression)
2950     { }
2951 
2952   tree_kind kind ();
2953 };
2954 
2955 struct IIR_ProcedureCallStatement : IIR_SequentialStatement {
2956   pIIR_ProcedureDeclaration procedure;
2957   pIIR_AssociationList actual_parameter_part;
2958 
IIR_ProcedureCallStatementIIR_ProcedureCallStatement2959   IIR_ProcedureCallStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_ProcedureDeclaration procedure, pIIR_AssociationList actual_parameter_part)
2960   : IIR_SequentialStatement (pos, label),
2961     procedure (procedure),
2962     actual_parameter_part (actual_parameter_part)
2963     { }
2964 
2965   tree_kind kind ();
2966 };
2967 
2968 struct IIR_IfStatement : IIR_SequentialStatement {
2969   pIIR_Expression condition;
2970   pIIR_SequentialStatementList then_sequence;
2971   pIIR_SequentialStatementList else_sequence;
2972 
IIR_IfStatementIIR_IfStatement2973   IIR_IfStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression condition, pIIR_SequentialStatementList then_sequence, pIIR_SequentialStatementList else_sequence)
2974   : IIR_SequentialStatement (pos, label),
2975     condition (condition),
2976     then_sequence (then_sequence),
2977     else_sequence (else_sequence)
2978     { }
2979 
2980   tree_kind kind ();
2981 };
2982 
2983 struct IIR_CaseStatement : IIR_SequentialStatement {
2984   pIIR_Expression expression;
2985   pIIR_CaseStatementAlternativeList case_statement_alternatives;
2986 
IIR_CaseStatementIIR_CaseStatement2987   IIR_CaseStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_Expression expression, pIIR_CaseStatementAlternativeList case_statement_alternatives)
2988   : IIR_SequentialStatement (pos, label),
2989     expression (expression),
2990     case_statement_alternatives (case_statement_alternatives)
2991     { }
2992 
2993   tree_kind kind ();
2994 };
2995 
2996 struct IIR_LoopStatement : IIR_SequentialStatement {
2997   pIIR_SequentialStatementList sequence_of_statements;
2998   pIIR_LoopDeclarativeRegion declarative_region;
2999 
IIR_LoopStatementIIR_LoopStatement3000   IIR_LoopStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_SequentialStatementList sequence_of_statements, pIIR_LoopDeclarativeRegion declarative_region)
3001   : IIR_SequentialStatement (pos, label),
3002     sequence_of_statements (sequence_of_statements),
3003     declarative_region (declarative_region)
3004     { }
3005 
3006   tree_kind kind ();
3007 };
3008 
3009 struct IIR_ForLoopStatement : IIR_LoopStatement {
3010   pIIR_ConstantDeclaration iterator;
3011 
IIR_ForLoopStatementIIR_ForLoopStatement3012   IIR_ForLoopStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_SequentialStatementList sequence_of_statements, pIIR_LoopDeclarativeRegion declarative_region, pIIR_ConstantDeclaration iterator)
3013   : IIR_LoopStatement (pos, label, sequence_of_statements, declarative_region),
3014     iterator (iterator)
3015     { }
3016 
3017   tree_kind kind ();
3018 };
3019 
3020 struct IIR_WhileLoopStatement : IIR_LoopStatement {
3021   pIIR_Expression condition;
3022 
IIR_WhileLoopStatementIIR_WhileLoopStatement3023   IIR_WhileLoopStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_SequentialStatementList sequence_of_statements, pIIR_LoopDeclarativeRegion declarative_region, pIIR_Expression condition)
3024   : IIR_LoopStatement (pos, label, sequence_of_statements, declarative_region),
3025     condition (condition)
3026     { }
3027 
3028   tree_kind kind ();
3029 };
3030 
3031 struct IIR_LoopControlStatement : IIR_SequentialStatement {
3032   pIIR_LoopStatement loop;
3033   pIIR_Expression condition;
3034 
IIR_LoopControlStatementIIR_LoopControlStatement3035   IIR_LoopControlStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_LoopStatement loop, pIIR_Expression condition)
3036   : IIR_SequentialStatement (pos, label),
3037     loop (loop),
3038     condition (condition)
3039     { }
3040 
3041   tree_kind kind ();
3042 };
3043 
3044 struct IIR_NextStatement : IIR_LoopControlStatement {
3045 
IIR_NextStatementIIR_NextStatement3046   IIR_NextStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_LoopStatement loop, pIIR_Expression condition)
3047   : IIR_LoopControlStatement (pos, label, loop, condition)
3048     { }
3049 
3050   tree_kind kind ();
3051 };
3052 
3053 struct IIR_ExitStatement : IIR_LoopControlStatement {
3054 
IIR_ExitStatementIIR_ExitStatement3055   IIR_ExitStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_LoopStatement loop, pIIR_Expression condition)
3056   : IIR_LoopControlStatement (pos, label, loop, condition)
3057     { }
3058 
3059   tree_kind kind ();
3060 };
3061 
3062 struct IIR_ReturnStatement : IIR_SequentialStatement {
3063   pIIR_SubprogramDeclaration enclosing_subprogram;
3064   pIIR_Expression return_expression;
3065 
IIR_ReturnStatementIIR_ReturnStatement3066   IIR_ReturnStatement (pIIR_PosInfo pos, pIIR_Label label, pIIR_SubprogramDeclaration enclosing_subprogram, pIIR_Expression return_expression)
3067   : IIR_SequentialStatement (pos, label),
3068     enclosing_subprogram (enclosing_subprogram),
3069     return_expression (return_expression)
3070     { }
3071 
3072   tree_kind kind ();
3073 };
3074 
3075 struct IIR_NullStatement : IIR_SequentialStatement {
3076 
IIR_NullStatementIIR_NullStatement3077   IIR_NullStatement (pIIR_PosInfo pos, pIIR_Label label)
3078   : IIR_SequentialStatement (pos, label)
3079     { }
3080 
3081   tree_kind kind ();
3082 };
3083 
3084 struct IIR_ConcurrentStatement : IIR_DeclarativeRegion {
3085 
IIR_ConcurrentStatementIIR_ConcurrentStatement3086   IIR_ConcurrentStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations)
3087   : IIR_DeclarativeRegion (pos, declarator, declarative_region, attributes, seqno, continued, declarations)
3088     { }
3089 
3090   tree_kind kind ();
3091 };
3092 
3093 struct IIR_BlockStatement : IIR_ConcurrentStatement {
3094   pIIR_Expression guard_expression;
3095   pIIR_InterfaceList generic_clause;
3096   pIIR_AssociationList generic_map_aspect;
3097   pIIR_InterfaceList port_clause;
3098   pIIR_AssociationList port_map_aspect;
3099   pIIR_ConfigurationSpecificationList configuration_specifications;
3100   pIIR_ConcurrentStatementList block_statement_part;
3101 
IIR_BlockStatementIIR_BlockStatement3102   IIR_BlockStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_Expression guard_expression, pIIR_InterfaceList generic_clause, pIIR_AssociationList generic_map_aspect, pIIR_InterfaceList port_clause, pIIR_AssociationList port_map_aspect, pIIR_ConfigurationSpecificationList configuration_specifications, pIIR_ConcurrentStatementList block_statement_part)
3103   : IIR_ConcurrentStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
3104     guard_expression (guard_expression),
3105     generic_clause (generic_clause),
3106     generic_map_aspect (generic_map_aspect),
3107     port_clause (port_clause),
3108     port_map_aspect (port_map_aspect),
3109     configuration_specifications (configuration_specifications),
3110     block_statement_part (block_statement_part)
3111     { }
3112 
3113   tree_kind kind ();
3114 };
3115 
3116 struct IIR_ProcessStatement : IIR_ConcurrentStatement {
3117   bool postponed;
3118   bool guarded;
3119   pIIR_SequentialStatementList process_statement_part;
3120 
IIR_ProcessStatementIIR_ProcessStatement3121   IIR_ProcessStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, bool postponed, bool guarded, pIIR_SequentialStatementList process_statement_part)
3122   : IIR_ConcurrentStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
3123     postponed (postponed),
3124     guarded (guarded),
3125     process_statement_part (process_statement_part)
3126     { }
3127 
3128   tree_kind kind ();
3129 };
3130 
3131 struct IIR_ImplicitProcessStatement : IIR_ProcessStatement {
3132 
IIR_ImplicitProcessStatementIIR_ImplicitProcessStatement3133   IIR_ImplicitProcessStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, bool postponed, bool guarded, pIIR_SequentialStatementList process_statement_part)
3134   : IIR_ProcessStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations, postponed, guarded, process_statement_part)
3135     { }
3136 
3137   tree_kind kind ();
3138 };
3139 
3140 struct IIR_SensitizedProcessStatement : IIR_ProcessStatement {
3141   pIIR_ExpressionList sensitivity_list;
3142 
IIR_SensitizedProcessStatementIIR_SensitizedProcessStatement3143   IIR_SensitizedProcessStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, bool postponed, bool guarded, pIIR_SequentialStatementList process_statement_part, pIIR_ExpressionList sensitivity_list)
3144   : IIR_ProcessStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations, postponed, guarded, process_statement_part),
3145     sensitivity_list (sensitivity_list)
3146     { }
3147 
3148   tree_kind kind ();
3149 };
3150 
3151 struct IIR_ComponentInstantiationStatement : IIR_ConcurrentStatement {
3152   pIIR_BindingIndication binding;
3153   pIIR_BindingIndication configuration;
3154 
IIR_ComponentInstantiationStatementIIR_ComponentInstantiationStatement3155   IIR_ComponentInstantiationStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_BindingIndication binding, pIIR_BindingIndication configuration)
3156   : IIR_ConcurrentStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
3157     binding (binding),
3158     configuration (configuration)
3159     { }
3160 
3161   tree_kind kind ();
3162 };
3163 
3164 struct IIR_ConcurrentGenerateStatement : IIR_ConcurrentStatement {
3165   pIIR_ConfigurationSpecificationList configuration_specifications;
3166   pIIR_ConcurrentStatementList concurrent_statement_part;
3167 
IIR_ConcurrentGenerateStatementIIR_ConcurrentGenerateStatement3168   IIR_ConcurrentGenerateStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_ConfigurationSpecificationList configuration_specifications, pIIR_ConcurrentStatementList concurrent_statement_part)
3169   : IIR_ConcurrentStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations),
3170     configuration_specifications (configuration_specifications),
3171     concurrent_statement_part (concurrent_statement_part)
3172     { }
3173 
3174   tree_kind kind ();
3175 };
3176 
3177 struct IIR_ConcurrentGenerateForStatement : IIR_ConcurrentGenerateStatement {
3178   pIIR_ConstantDeclaration generate_parameter_specification;
3179 
IIR_ConcurrentGenerateForStatementIIR_ConcurrentGenerateForStatement3180   IIR_ConcurrentGenerateForStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_ConfigurationSpecificationList configuration_specifications, pIIR_ConcurrentStatementList concurrent_statement_part, pIIR_ConstantDeclaration generate_parameter_specification)
3181   : IIR_ConcurrentGenerateStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations, configuration_specifications, concurrent_statement_part),
3182     generate_parameter_specification (generate_parameter_specification)
3183     { }
3184 
3185   tree_kind kind ();
3186 };
3187 
3188 struct IIR_ConcurrentGenerateIfStatement : IIR_ConcurrentGenerateStatement {
3189   pIIR_Expression condition;
3190 
IIR_ConcurrentGenerateIfStatementIIR_ConcurrentGenerateIfStatement3191   IIR_ConcurrentGenerateIfStatement (pIIR_PosInfo pos, pIIR_TextLiteral declarator, pIIR_DeclarativeRegion declarative_region, pIIR_AttributeValueList attributes, int seqno, pIIR_DeclarativeRegion continued, pIIR_DeclarationList declarations, pIIR_ConfigurationSpecificationList configuration_specifications, pIIR_ConcurrentStatementList concurrent_statement_part, pIIR_Expression condition)
3192   : IIR_ConcurrentGenerateStatement (pos, declarator, declarative_region, attributes, seqno, continued, declarations, configuration_specifications, concurrent_statement_part),
3193     condition (condition)
3194     { }
3195 
3196   tree_kind kind ();
3197 };
3198 
3199 void init_fire_chunk ();
3200 
3201 #endif
3202