1--  Tree node definitions.
2--  Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold
3--
4--  This program is free software: you can redistribute it and/or modify
5--  it under the terms of the GNU General Public License as published by
6--  the Free Software Foundation, either version 2 of the License, or
7--  (at your option) any later version.
8--
9--  This program is distributed in the hope that it will be useful,
10--  but WITHOUT ANY WARRANTY; without even the implied warranty of
11--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12--  GNU General Public License for more details.
13--
14--  You should have received a copy of the GNU General Public License
15--  along with this program.  If not, see <gnu.org/licenses>.
16
17with Ada.Unchecked_Conversion;
18with Tables;
19with Logging; use Logging;
20with Vhdl.Lists; use Vhdl.Lists;
21with Vhdl.Nodes_Meta; use Vhdl.Nodes_Meta;
22with Vhdl.Nodes_Priv; use Vhdl.Nodes_Priv;
23
24package body Vhdl.Nodes is
25   --  A simple type that needs only 2 bits.
26   type Bit2_Type is range 0 .. 2 ** 2 - 1;
27
28   type Kind_Type is range 0 .. 2 ** 9 - 1;
29
30   --  Format of a node.
31   type Format_Type is
32     (
33      Format_Short,
34      Format_Medium
35     );
36
37   -- Common fields are:
38   --   Flag1 : Boolean
39   --   Flag2 : Boolean
40   --   Flag3 : Boolean
41   --   Flag4 : Boolean
42   --   Flag5 : Boolean
43   --   Flag6 : Boolean
44   --   Flag7 : Boolean
45   --   Flag8 : Boolean
46   --   Flag9 : Boolean
47   --   Flag10 : Boolean
48   --   Flag11 : Boolean
49   --   Flag12 : Boolean
50   --   Flag13 : Boolean
51   --   Flag14 : Boolean
52   --   Flag15 : Boolean
53   --   Nkind : Kind_Type
54   --   State1 : Bit2_Type
55   --   State2 : Bit2_Type
56   --   Location : Location_Type
57   --   Field0 : Iir
58   --   Field1 : Iir
59   --   Field2 : Iir
60   --   Field3 : Iir
61   --   Field4 : Iir
62   --   Field5 : Iir
63
64   -- Fields of Format_Short:
65
66   -- Fields of Format_Medium:
67   --   State3 : Bit2_Type
68   --   State4 : Bit2_Type
69   --   Field6 : Iir (location)
70   --   Field7 : Iir (field0)
71   --   Field8 : Iir (field1)
72   --   Field9 : Iir (field2)
73   --   Field10 : Iir (field3)
74   --   Field11 : Iir (field4)
75   --   Field12 : Iir (field5)
76
77   function Create_Node (Format : Format_Type) return Node_Type;
78   procedure Free_Node (N : Node_Type);
79
80   function Get_Nkind (N : Node_Type) return Kind_Type;
81   pragma Inline (Get_Nkind);
82   procedure Set_Nkind (N : Node_Type; Kind : Kind_Type);
83   pragma Inline (Set_Nkind);
84
85   function Get_Field0 (N : Node_Type) return Node_Type;
86   pragma Inline (Get_Field0);
87   procedure Set_Field0 (N : Node_Type; V : Node_Type);
88   pragma Inline (Set_Field0);
89
90   function Get_Field1 (N : Node_Type) return Node_Type;
91   pragma Inline (Get_Field1);
92   procedure Set_Field1 (N : Node_Type; V : Node_Type);
93   pragma Inline (Set_Field1);
94
95   function Get_Field2 (N : Node_Type) return Node_Type;
96   pragma Inline (Get_Field2);
97   procedure Set_Field2 (N : Node_Type; V : Node_Type);
98   pragma Inline (Set_Field2);
99
100   function Get_Field3 (N : Node_Type) return Node_Type;
101   pragma Inline (Get_Field3);
102   procedure Set_Field3 (N : Node_Type; V : Node_Type);
103   pragma Inline (Set_Field3);
104
105   function Get_Field4 (N : Node_Type) return Node_Type;
106   pragma Inline (Get_Field4);
107   procedure Set_Field4 (N : Node_Type; V : Node_Type);
108   pragma Inline (Set_Field4);
109
110
111   function Get_Field5 (N : Node_Type) return Node_Type;
112   pragma Inline (Get_Field5);
113   procedure Set_Field5 (N : Node_Type; V : Node_Type);
114   pragma Inline (Set_Field5);
115
116   function Get_Field6 (N: Node_Type) return Node_Type;
117   pragma Inline (Get_Field6);
118   procedure Set_Field6 (N: Node_Type; Val: Node_Type);
119   pragma Inline (Set_Field6);
120
121   function Get_Field7 (N: Node_Type) return Node_Type;
122   pragma Inline (Get_Field7);
123   procedure Set_Field7 (N: Node_Type; Val: Node_Type);
124   pragma Inline (Set_Field7);
125
126   function Get_Field8 (N: Node_Type) return Node_Type;
127   pragma Inline (Get_Field8);
128   procedure Set_Field8 (N: Node_Type; Val: Node_Type);
129   pragma Inline (Set_Field8);
130
131   function Get_Field9 (N: Node_Type) return Node_Type;
132   pragma Inline (Get_Field9);
133   procedure Set_Field9 (N: Node_Type; Val: Node_Type);
134   pragma Inline (Set_Field9);
135
136   function Get_Field10 (N: Node_Type) return Node_Type;
137   pragma Inline (Get_Field10);
138   procedure Set_Field10 (N: Node_Type; Val: Node_Type);
139   pragma Inline (Set_Field10);
140
141   function Get_Field11 (N: Node_Type) return Node_Type;
142   pragma Inline (Get_Field11);
143   procedure Set_Field11 (N: Node_Type; Val: Node_Type);
144   pragma Inline (Set_Field11);
145
146   function Get_Field12 (N: Node_Type) return Node_Type;
147   pragma Inline (Get_Field12);
148   procedure Set_Field12 (N: Node_Type; Val: Node_Type);
149   pragma Inline (Set_Field12);
150
151
152   function Get_Flag1 (N : Node_Type) return Boolean;
153   pragma Inline (Get_Flag1);
154   procedure Set_Flag1 (N : Node_Type; V : Boolean);
155   pragma Inline (Set_Flag1);
156
157   function Get_Flag2 (N : Node_Type) return Boolean;
158   pragma Inline (Get_Flag2);
159   procedure Set_Flag2 (N : Node_Type; V : Boolean);
160   pragma Inline (Set_Flag2);
161
162   function Get_Flag3 (N : Node_Type) return Boolean;
163   pragma Inline (Get_Flag3);
164   procedure Set_Flag3 (N : Node_Type; V : Boolean);
165   pragma Inline (Set_Flag3);
166
167   function Get_Flag4 (N : Node_Type) return Boolean;
168   pragma Inline (Get_Flag4);
169   procedure Set_Flag4 (N : Node_Type; V : Boolean);
170   pragma Inline (Set_Flag4);
171
172   function Get_Flag5 (N : Node_Type) return Boolean;
173   pragma Inline (Get_Flag5);
174   procedure Set_Flag5 (N : Node_Type; V : Boolean);
175   pragma Inline (Set_Flag5);
176
177   function Get_Flag6 (N : Node_Type) return Boolean;
178   pragma Inline (Get_Flag6);
179   procedure Set_Flag6 (N : Node_Type; V : Boolean);
180   pragma Inline (Set_Flag6);
181
182   function Get_Flag7 (N : Node_Type) return Boolean;
183   pragma Inline (Get_Flag7);
184   procedure Set_Flag7 (N : Node_Type; V : Boolean);
185   pragma Inline (Set_Flag7);
186
187   function Get_Flag8 (N : Node_Type) return Boolean;
188   pragma Inline (Get_Flag8);
189   procedure Set_Flag8 (N : Node_Type; V : Boolean);
190   pragma Inline (Set_Flag8);
191
192   function Get_Flag9 (N : Node_Type) return Boolean;
193   pragma Inline (Get_Flag9);
194   procedure Set_Flag9 (N : Node_Type; V : Boolean);
195   pragma Inline (Set_Flag9);
196
197   function Get_Flag10 (N : Node_Type) return Boolean;
198   pragma Inline (Get_Flag10);
199   procedure Set_Flag10 (N : Node_Type; V : Boolean);
200   pragma Inline (Set_Flag10);
201
202   function Get_Flag11 (N : Node_Type) return Boolean;
203   pragma Inline (Get_Flag11);
204   procedure Set_Flag11 (N : Node_Type; V : Boolean);
205   pragma Inline (Set_Flag11);
206
207   function Get_Flag12 (N : Node_Type) return Boolean;
208   pragma Inline (Get_Flag12);
209   procedure Set_Flag12 (N : Node_Type; V : Boolean);
210   pragma Inline (Set_Flag12);
211
212   function Get_Flag13 (N : Node_Type) return Boolean;
213   pragma Inline (Get_Flag13);
214   procedure Set_Flag13 (N : Node_Type; V : Boolean);
215   pragma Inline (Set_Flag13);
216
217   function Get_Flag14 (N : Node_Type) return Boolean;
218   pragma Inline (Get_Flag14);
219   procedure Set_Flag14 (N : Node_Type; V : Boolean);
220   pragma Inline (Set_Flag14);
221
222   function Get_Flag15 (N : Node_Type) return Boolean;
223   pragma Inline (Get_Flag15);
224   procedure Set_Flag15 (N : Node_Type; V : Boolean);
225   pragma Inline (Set_Flag15);
226
227
228   function Get_State1 (N : Node_Type) return Bit2_Type;
229   pragma Inline (Get_State1);
230   procedure Set_State1 (N : Node_Type; V : Bit2_Type);
231   pragma Inline (Set_State1);
232
233   function Get_State2 (N : Node_Type) return Bit2_Type;
234   pragma Inline (Get_State2);
235   procedure Set_State2 (N : Node_Type; V : Bit2_Type);
236   pragma Inline (Set_State2);
237
238   function Get_State3 (N : Node_Type) return Bit2_Type;
239   pragma Inline (Get_State3);
240   procedure Set_State3 (N : Node_Type; V : Bit2_Type);
241   pragma Inline (Set_State3);
242
243   type Node_Record is record
244      --  First byte:
245      Format : Format_Type;
246      Flag1 : Boolean;
247      Flag2 : Boolean;
248      Flag3 : Boolean;
249      Flag4 : Boolean;
250      Flag5 : Boolean;
251      Flag6 : Boolean;
252      Flag7 : Boolean;
253
254      --  Second byte:
255      Flag8 : Boolean;
256      Flag9 : Boolean;
257      Flag10 : Boolean;
258      Flag11 : Boolean;
259      Flag12 : Boolean;
260      Flag13 : Boolean;
261      Flag14 : Boolean;
262      Flag15 : Boolean;
263
264      --  Third byte:
265      Flag16 : Boolean;
266      Flag17 : Boolean;
267      Flag18 : Boolean;
268
269      --  2*2 = 4 bits
270      State1 : Bit2_Type;
271      State2 : Bit2_Type;
272
273      --  9 bits
274      Kind : Kind_Type;
275
276      -- Location.
277      Location: Location_Type;
278
279      Field0 : Node_Type;
280      Field1 : Node_Type;
281      Field2 : Node_Type;
282      Field3 : Node_Type;
283      Field4 : Node_Type;
284      Field5 : Node_Type;
285   end record;
286   pragma Pack (Node_Record);
287   for Node_Record'Size use 8*32;
288   for Node_Record'Alignment use 4;
289   pragma Suppress_Initialization (Node_Record);
290
291   Init_Node : constant Node_Record := Node_Record'
292     (Format => Format_Short,
293      Kind => 0,
294      State1 | State2 => 0,
295      Location => Location_Nil,
296      Field0 | Field1 | Field2 | Field3 | Field4 | Field5 => Null_Node,
297      others => False);
298
299      --  Suppress the access check of the table base.  This is really safe to
300   --  suppress this check because the table base cannot be null.
301   pragma Suppress (Access_Check);
302
303   --  Suppress the index check on the table.
304   --  Could be done during non-debug, since this may catch errors (reading
305   --  Null_Node or Error_Node).
306   --pragma Suppress (Index_Check);
307
308   package Nodet is new Tables
309     (Table_Component_Type => Node_Record,
310      Table_Index_Type => Node_Type,
311      Table_Low_Bound => 2,
312      Table_Initial => 1024);
313
314   function Get_Last_Node return Iir is
315   begin
316      return Nodet.Last;
317   end Get_Last_Node;
318
319   Free_Chain : Node_Type := Null_Node;
320
321   function Create_Node (Format : Format_Type) return Node_Type
322   is
323      Res : Node_Type;
324   begin
325      case Format is
326         when Format_Medium =>
327            --  Allocate a first node.
328            Nodet.Increment_Last;
329            Res := Nodet.Last;
330            --  Check alignment.
331            if Res mod 2 = 1 then
332               Set_Field1 (Res, Free_Chain);
333               Free_Chain := Res;
334               Nodet.Increment_Last;
335               Res := Nodet.Last;
336            end if;
337            --  Allocate the second node.
338            Nodet.Increment_Last;
339            Nodet.Table (Res) := Init_Node;
340            Nodet.Table (Res).Format := Format_Medium;
341            Nodet.Table (Res + 1) := Init_Node;
342         when Format_Short =>
343            --  Check from free pool
344            if Free_Chain = Null_Node then
345               Nodet.Increment_Last;
346               Res := Nodet.Last;
347            else
348               Res := Free_Chain;
349               Free_Chain := Get_Field1 (Res);
350            end if;
351            Nodet.Table (Res) := Init_Node;
352      end case;
353      return Res;
354   end Create_Node;
355
356   type Free_Node_Hook_Array is
357     array (Natural range 1 .. 8) of Free_Iir_Hook;
358   Nbr_Free_Hooks : Natural := 0;
359
360   Free_Hooks : Free_Node_Hook_Array;
361
362   procedure Register_Free_Hook (Hook : Free_Iir_Hook) is
363   begin
364      if Nbr_Free_Hooks >= Free_Hooks'Last then
365         --  Not enough room in Free_Hooks.
366         raise Internal_Error;
367      end if;
368      Nbr_Free_Hooks := Nbr_Free_Hooks + 1;
369      Free_Hooks (Nbr_Free_Hooks) := Hook;
370   end Register_Free_Hook;
371
372   procedure Free_Node (N : Node_Type) is
373   begin
374      if N = Null_Node then
375         return;
376      end if;
377
378      --  Call hooks.
379      for I in Free_Hooks'First .. Nbr_Free_Hooks loop
380         Free_Hooks (I).all (N);
381      end loop;
382
383      --  Really free the node.
384      Set_Nkind (N, 0);
385      Set_Field1 (N, Free_Chain);
386      Free_Chain := N;
387      if Nodet.Table (N).Format = Format_Medium then
388         Set_Field1 (N + 1, Free_Chain);
389         Free_Chain := N + 1;
390      end if;
391   end Free_Node;
392
393   procedure Free_Iir (Target : Iir) renames Free_Node;
394
395   function Next_Node (N : Node_Type) return Node_Type is
396   begin
397      case Nodet.Table (N).Format is
398         when Format_Medium =>
399            return N + 2;
400         when Format_Short =>
401            return N + 1;
402      end case;
403   end Next_Node;
404
405   function Get_Nkind (N : Node_Type) return Kind_Type is
406   begin
407      return Nodet.Table (N).Kind;
408   end Get_Nkind;
409
410   procedure Set_Nkind (N : Node_Type; Kind : Kind_Type) is
411   begin
412      Nodet.Table (N).Kind := Kind;
413   end Set_Nkind;
414
415
416   procedure Set_Location (N : Iir; Location: Location_Type) is
417   begin
418      Nodet.Table (N).Location := Location;
419   end Set_Location;
420
421   function Get_Location (N: Iir) return Location_Type is
422   begin
423      return Nodet.Table (N).Location;
424   end Get_Location;
425
426
427   procedure Set_Field0 (N : Node_Type; V : Node_Type) is
428   begin
429      Nodet.Table (N).Field0 := V;
430   end Set_Field0;
431
432   function Get_Field0 (N : Node_Type) return Node_Type is
433   begin
434      return Nodet.Table (N).Field0;
435   end Get_Field0;
436
437
438   function Get_Field1 (N : Node_Type) return Node_Type is
439   begin
440      return Nodet.Table (N).Field1;
441   end Get_Field1;
442
443   procedure Set_Field1 (N : Node_Type; V : Node_Type) is
444   begin
445      Nodet.Table (N).Field1 := V;
446   end Set_Field1;
447
448   function Get_Field2 (N : Node_Type) return Node_Type is
449   begin
450      return Nodet.Table (N).Field2;
451   end Get_Field2;
452
453   procedure Set_Field2 (N : Node_Type; V : Node_Type) is
454   begin
455      Nodet.Table (N).Field2 := V;
456   end Set_Field2;
457
458   function Get_Field3 (N : Node_Type) return Node_Type is
459   begin
460      return Nodet.Table (N).Field3;
461   end Get_Field3;
462
463   procedure Set_Field3 (N : Node_Type; V : Node_Type) is
464   begin
465      Nodet.Table (N).Field3 := V;
466   end Set_Field3;
467
468   function Get_Field4 (N : Node_Type) return Node_Type is
469   begin
470      return Nodet.Table (N).Field4;
471   end Get_Field4;
472
473   procedure Set_Field4 (N : Node_Type; V : Node_Type) is
474   begin
475      Nodet.Table (N).Field4 := V;
476   end Set_Field4;
477
478   function Get_Field5 (N : Node_Type) return Node_Type is
479   begin
480      return Nodet.Table (N).Field5;
481   end Get_Field5;
482
483   procedure Set_Field5 (N : Node_Type; V : Node_Type) is
484   begin
485      Nodet.Table (N).Field5 := V;
486   end Set_Field5;
487
488   function Get_Field6 (N: Node_Type) return Node_Type is
489   begin
490      return Node_Type (Nodet.Table (N + 1).Location);
491   end Get_Field6;
492
493   procedure Set_Field6 (N: Node_Type; Val: Node_Type) is
494   begin
495      Nodet.Table (N + 1).Location := Location_Type (Val);
496   end Set_Field6;
497
498   function Get_Field7 (N: Node_Type) return Node_Type is
499   begin
500      return Nodet.Table (N + 1).Field0;
501   end Get_Field7;
502
503   procedure Set_Field7 (N: Node_Type; Val: Node_Type) is
504   begin
505      Nodet.Table (N + 1).Field0 := Val;
506   end Set_Field7;
507
508   function Get_Field8 (N: Node_Type) return Node_Type is
509   begin
510      return Nodet.Table (N + 1).Field1;
511   end Get_Field8;
512
513   procedure Set_Field8 (N: Node_Type; Val: Node_Type) is
514   begin
515      Nodet.Table (N + 1).Field1 := Val;
516   end Set_Field8;
517
518   function Get_Field9 (N: Node_Type) return Node_Type is
519   begin
520      return Nodet.Table (N + 1).Field2;
521   end Get_Field9;
522
523   procedure Set_Field9 (N: Node_Type; Val: Node_Type) is
524   begin
525      Nodet.Table (N + 1).Field2 := Val;
526   end Set_Field9;
527
528   function Get_Field10 (N: Node_Type) return Node_Type is
529   begin
530      return Nodet.Table (N + 1).Field3;
531   end Get_Field10;
532
533   procedure Set_Field10 (N: Node_Type; Val: Node_Type) is
534   begin
535      Nodet.Table (N + 1).Field3 := Val;
536   end Set_Field10;
537
538   function Get_Field11 (N: Node_Type) return Node_Type is
539   begin
540      return Nodet.Table (N + 1).Field4;
541   end Get_Field11;
542
543   procedure Set_Field11 (N: Node_Type; Val: Node_Type) is
544   begin
545      Nodet.Table (N + 1).Field4 := Val;
546   end Set_Field11;
547
548   function Get_Field12 (N: Node_Type) return Node_Type is
549   begin
550      return Nodet.Table (N + 1).Field5;
551   end Get_Field12;
552
553   procedure Set_Field12 (N: Node_Type; Val: Node_Type) is
554   begin
555      Nodet.Table (N + 1).Field5 := Val;
556   end Set_Field12;
557
558
559   function Get_Flag1 (N : Node_Type) return Boolean is
560   begin
561      return Nodet.Table (N).Flag1;
562   end Get_Flag1;
563
564   procedure Set_Flag1 (N : Node_Type; V : Boolean) is
565   begin
566      Nodet.Table (N).Flag1 := V;
567   end Set_Flag1;
568
569   function Get_Flag2 (N : Node_Type) return Boolean is
570   begin
571      return Nodet.Table (N).Flag2;
572   end Get_Flag2;
573
574   procedure Set_Flag2 (N : Node_Type; V : Boolean) is
575   begin
576      Nodet.Table (N).Flag2 := V;
577   end Set_Flag2;
578
579   function Get_Flag3 (N : Node_Type) return Boolean is
580   begin
581      return Nodet.Table (N).Flag3;
582   end Get_Flag3;
583
584   procedure Set_Flag3 (N : Node_Type; V : Boolean) is
585   begin
586      Nodet.Table (N).Flag3 := V;
587   end Set_Flag3;
588
589   function Get_Flag4 (N : Node_Type) return Boolean is
590   begin
591      return Nodet.Table (N).Flag4;
592   end Get_Flag4;
593
594   procedure Set_Flag4 (N : Node_Type; V : Boolean) is
595   begin
596      Nodet.Table (N).Flag4 := V;
597   end Set_Flag4;
598
599   function Get_Flag5 (N : Node_Type) return Boolean is
600   begin
601      return Nodet.Table (N).Flag5;
602   end Get_Flag5;
603
604   procedure Set_Flag5 (N : Node_Type; V : Boolean) is
605   begin
606      Nodet.Table (N).Flag5 := V;
607   end Set_Flag5;
608
609   function Get_Flag6 (N : Node_Type) return Boolean is
610   begin
611      return Nodet.Table (N).Flag6;
612   end Get_Flag6;
613
614   procedure Set_Flag6 (N : Node_Type; V : Boolean) is
615   begin
616      Nodet.Table (N).Flag6 := V;
617   end Set_Flag6;
618
619   function Get_Flag7 (N : Node_Type) return Boolean is
620   begin
621      return Nodet.Table (N).Flag7;
622   end Get_Flag7;
623
624   procedure Set_Flag7 (N : Node_Type; V : Boolean) is
625   begin
626      Nodet.Table (N).Flag7 := V;
627   end Set_Flag7;
628
629   function Get_Flag8 (N : Node_Type) return Boolean is
630   begin
631      return Nodet.Table (N).Flag8;
632   end Get_Flag8;
633
634   procedure Set_Flag8 (N : Node_Type; V : Boolean) is
635   begin
636      Nodet.Table (N).Flag8 := V;
637   end Set_Flag8;
638
639   function Get_Flag9 (N : Node_Type) return Boolean is
640   begin
641      return Nodet.Table (N).Flag9;
642   end Get_Flag9;
643
644   procedure Set_Flag9 (N : Node_Type; V : Boolean) is
645   begin
646      Nodet.Table (N).Flag9 := V;
647   end Set_Flag9;
648
649   function Get_Flag10 (N : Node_Type) return Boolean is
650   begin
651      return Nodet.Table (N).Flag10;
652   end Get_Flag10;
653
654   procedure Set_Flag10 (N : Node_Type; V : Boolean) is
655   begin
656      Nodet.Table (N).Flag10 := V;
657   end Set_Flag10;
658
659   function Get_Flag11 (N : Node_Type) return Boolean is
660   begin
661      return Nodet.Table (N).Flag11;
662   end Get_Flag11;
663
664   procedure Set_Flag11 (N : Node_Type; V : Boolean) is
665   begin
666      Nodet.Table (N).Flag11 := V;
667   end Set_Flag11;
668
669   function Get_Flag12 (N : Node_Type) return Boolean is
670   begin
671      return Nodet.Table (N).Flag12;
672   end Get_Flag12;
673
674   procedure Set_Flag12 (N : Node_Type; V : Boolean) is
675   begin
676      Nodet.Table (N).Flag12 := V;
677   end Set_Flag12;
678
679   function Get_Flag13 (N : Node_Type) return Boolean is
680   begin
681      return Nodet.Table (N).Flag13;
682   end Get_Flag13;
683
684   procedure Set_Flag13 (N : Node_Type; V : Boolean) is
685   begin
686      Nodet.Table (N).Flag13 := V;
687   end Set_Flag13;
688
689   function Get_Flag14 (N : Node_Type) return Boolean is
690   begin
691      return Nodet.Table (N).Flag14;
692   end Get_Flag14;
693
694   procedure Set_Flag14 (N : Node_Type; V : Boolean) is
695   begin
696      Nodet.Table (N).Flag14 := V;
697   end Set_Flag14;
698
699   function Get_Flag15 (N : Node_Type) return Boolean is
700   begin
701      return Nodet.Table (N).Flag15;
702   end Get_Flag15;
703
704   procedure Set_Flag15 (N : Node_Type; V : Boolean) is
705   begin
706      Nodet.Table (N).Flag15 := V;
707   end Set_Flag15;
708
709
710   function Get_State1 (N : Node_Type) return Bit2_Type is
711   begin
712      return Nodet.Table (N).State1;
713   end Get_State1;
714
715   procedure Set_State1 (N : Node_Type; V : Bit2_Type) is
716   begin
717      Nodet.Table (N).State1 := V;
718   end Set_State1;
719
720   function Get_State2 (N : Node_Type) return Bit2_Type is
721   begin
722      return Nodet.Table (N).State2;
723   end Get_State2;
724
725   procedure Set_State2 (N : Node_Type; V : Bit2_Type) is
726   begin
727      Nodet.Table (N).State2 := V;
728   end Set_State2;
729
730   function Get_State3 (N : Node_Type) return Bit2_Type is
731   begin
732      return Nodet.Table (N + 1).State1;
733   end Get_State3;
734
735   procedure Set_State3 (N : Node_Type; V : Bit2_Type) is
736   begin
737      Nodet.Table (N + 1).State1 := V;
738   end Set_State3;
739
740   procedure Initialize is
741   begin
742      Nodet.Init;
743   end Initialize;
744
745   procedure Finalize is
746   begin
747      Nodet.Free;
748   end Finalize;
749
750   function Is_Null (Node : Iir) return Boolean is
751   begin
752      return Node = Null_Iir;
753   end Is_Null;
754
755   function Is_Null_List (Node : Iir_List) return Boolean is
756   begin
757      return Node = Null_Iir_List;
758   end Is_Null_List;
759
760   function Is_Valid (Node : Iir) return Boolean is
761   begin
762      return Node /= Null_Iir;
763   end Is_Valid;
764
765   ---------------------------------------------------
766   -- General subprograms that operate on every iir --
767   ---------------------------------------------------
768
769   function Get_Format (Kind : Iir_Kind) return Format_Type;
770
771   function Create_Iir (Kind : Iir_Kind) return Iir
772   is
773      Res : Iir;
774      Format : Format_Type;
775   begin
776      Format := Get_Format (Kind);
777      Res := Create_Node (Format);
778      Set_Nkind (Res, Iir_Kind'Pos (Kind));
779      return Res;
780   end Create_Iir;
781
782   --  Statistics.
783   procedure Disp_Stats
784   is
785      type Num_Array is array (Iir_Kind) of Natural;
786      Num : Num_Array := (others => 0);
787      type Format_Array is array (Format_Type) of Natural;
788      Formats : Format_Array := (others => 0);
789      Kind : Iir_Kind;
790      I : Iir;
791      Last_I : Iir;
792      Format : Format_Type;
793   begin
794      I := Error_Node + 1;
795      Last_I := Get_Last_Node;
796      while I < Last_I loop
797         Kind := Get_Kind (I);
798         Num (Kind) := Num (Kind) + 1;
799         Format := Get_Format (Kind);
800         Formats (Format) := Formats (Format) + 1;
801         I := Next_Node (I);
802      end loop;
803
804      Log_Line ("Stats per iir_kind:");
805      for J in Iir_Kind loop
806         if Num (J) /= 0 then
807            Log_Line (' ' & Iir_Kind'Image (J) & ':'
808                        & Natural'Image (Num (J)));
809         end if;
810      end loop;
811      Log_Line ("Stats per formats:");
812      for J in Format_Type loop
813         Log_Line (' ' & Format_Type'Image (J) & ':'
814                     & Natural'Image (Formats (J)));
815      end loop;
816   end Disp_Stats;
817
818   function Kind_In (K : Iir_Kind; K1, K2 : Iir_Kind) return Boolean is
819   begin
820      return K = K1 or K = K2;
821   end Kind_In;
822
823   function Iir_Predefined_Shortcut_P (Func : Iir_Predefined_Functions)
824     return Boolean is
825   begin
826      case Func is
827         when Iir_Predefined_Bit_And
828           | Iir_Predefined_Bit_Or
829           | Iir_Predefined_Bit_Nand
830           | Iir_Predefined_Bit_Nor
831           | Iir_Predefined_Boolean_And
832           | Iir_Predefined_Boolean_Or
833           | Iir_Predefined_Boolean_Nand
834           | Iir_Predefined_Boolean_Nor =>
835            return True;
836         when others =>
837            return False;
838      end case;
839   end Iir_Predefined_Shortcut_P;
840
841   function Create_Iir_Error return Iir
842   is
843      Res : Iir;
844   begin
845      Res := Create_Node (Format_Short);
846      Set_Nkind (Res, Iir_Kind'Pos (Iir_Kind_Error));
847      return Res;
848   end Create_Iir_Error;
849
850   procedure Location_Copy (Target : Iir; Src : Iir) is
851   begin
852      Set_Location (Target, Get_Location (Src));
853   end Location_Copy;
854
855   -- Get kind
856   function Get_Kind (N : Iir) return Iir_Kind
857   is
858      --  Speed up: avoid to check that nkind is in the bounds of Iir_Kind.
859      pragma Suppress (Range_Check);
860   begin
861      pragma Assert (N /= Null_Iir);
862      return Iir_Kind'Val (Get_Nkind (N));
863   end Get_Kind;
864
865   function Time_Stamp_Id_To_Iir is new Ada.Unchecked_Conversion
866     (Source => Time_Stamp_Id, Target => Iir);
867
868   function Iir_To_Time_Stamp_Id is new Ada.Unchecked_Conversion
869     (Source => Iir, Target => Time_Stamp_Id);
870
871   function File_Checksum_Id_To_Iir is new Ada.Unchecked_Conversion
872     (Source => File_Checksum_Id, Target => Iir);
873
874   function Iir_To_File_Checksum_Id is new Ada.Unchecked_Conversion
875     (Source => Iir, Target => File_Checksum_Id);
876
877   function Iir_To_Iir_List is new Ada.Unchecked_Conversion
878     (Source => Iir, Target => Iir_List);
879   function Iir_List_To_Iir is new Ada.Unchecked_Conversion
880     (Source => Iir_List, Target => Iir);
881
882   function Iir_To_Iir_Flist is new Ada.Unchecked_Conversion
883     (Source => Iir, Target => Iir_Flist);
884   function Iir_Flist_To_Iir is new Ada.Unchecked_Conversion
885     (Source => Iir_Flist, Target => Iir);
886
887   function Iir_To_Token_Type (N : Iir) return Token_Type is
888   begin
889      return Token_Type'Val (N);
890   end Iir_To_Token_Type;
891
892   function Token_Type_To_Iir (T : Token_Type) return Iir is
893   begin
894      return Token_Type'Pos (T);
895   end Token_Type_To_Iir;
896
897--     function Iir_To_Iir_Index32 (N : Iir) return Iir_Index32 is
898--     begin
899--        return Iir_Index32 (N);
900--     end Iir_To_Iir_Index32;
901
902--     function Iir_Index32_To_Iir (V : Iir_Index32) return Iir is
903--     begin
904--        return Iir_Index32'Pos (V);
905--     end Iir_Index32_To_Iir;
906
907   function Iir_To_Name_Id (N : Iir) return Name_Id is
908   begin
909      return Iir'Pos (N);
910   end Iir_To_Name_Id;
911   pragma Inline (Iir_To_Name_Id);
912
913   function Name_Id_To_Iir (V : Name_Id) return Iir is
914   begin
915      return Name_Id'Pos (V);
916   end Name_Id_To_Iir;
917
918   function Iir_To_Iir_Int32 is new Ada.Unchecked_Conversion
919     (Source => Iir, Target => Iir_Int32);
920
921   function Iir_Int32_To_Iir is new Ada.Unchecked_Conversion
922     (Source => Iir_Int32, Target => Iir);
923
924   function Iir_To_Source_Ptr (N : Iir) return Source_Ptr is
925   begin
926      return Source_Ptr (N);
927   end Iir_To_Source_Ptr;
928
929   function Source_Ptr_To_Iir (P : Source_Ptr) return Iir is
930   begin
931      return Iir (P);
932   end Source_Ptr_To_Iir;
933
934   function Iir_To_Source_File_Entry is new Ada.Unchecked_Conversion
935     (Source => Iir, Target => Source_File_Entry);
936   function Source_File_Entry_To_Iir is new Ada.Unchecked_Conversion
937     (Source => Source_File_Entry, Target => Iir);
938
939   function Boolean_To_Iir_Delay_Mechanism is new Ada.Unchecked_Conversion
940     (Source => Boolean, Target => Iir_Delay_Mechanism);
941   function Iir_Delay_Mechanism_To_Boolean is new Ada.Unchecked_Conversion
942     (Source => Iir_Delay_Mechanism, Target => Boolean);
943
944   function Boolean_To_Iir_Force_Mode is new Ada.Unchecked_Conversion
945     (Source => Boolean, Target => Iir_Force_Mode);
946   function Iir_Force_Mode_To_Boolean is new Ada.Unchecked_Conversion
947     (Source => Iir_Force_Mode, Target => Boolean);
948
949   function Boolean_To_Iir_Signal_Kind is new Ada.Unchecked_Conversion
950     (Source => Boolean, Target => Iir_Signal_Kind);
951   function Iir_Signal_Kind_To_Boolean is new Ada.Unchecked_Conversion
952     (Source => Iir_Signal_Kind, Target => Boolean);
953
954   function Boolean_To_Direction_Type is new Ada.Unchecked_Conversion
955     (Source => Boolean, Target => Direction_Type);
956   function Direction_Type_To_Boolean is new Ada.Unchecked_Conversion
957     (Source => Direction_Type, Target => Boolean);
958
959   function Iir_To_String8_Id is new Ada.Unchecked_Conversion
960     (Source => Iir, Target => String8_Id);
961   function String8_Id_To_Iir is new Ada.Unchecked_Conversion
962     (Source => String8_Id, Target => Iir);
963
964   function Iir_To_Int32 is new Ada.Unchecked_Conversion
965     (Source => Iir, Target => Int32);
966   function Int32_To_Iir is new Ada.Unchecked_Conversion
967     (Source => Int32, Target => Iir);
968
969   function Iir_To_PSL_Node is new Ada.Unchecked_Conversion
970     (Source => Iir, Target => PSL_Node);
971
972   function PSL_Node_To_Iir is new Ada.Unchecked_Conversion
973     (Source => PSL_Node, Target => Iir);
974
975   function Iir_To_PSL_NFA is new Ada.Unchecked_Conversion
976     (Source => Iir, Target => PSL_NFA);
977
978   function PSL_NFA_To_Iir is new Ada.Unchecked_Conversion
979     (Source => PSL_NFA, Target => Iir);
980
981   --  Subprograms
982   function Get_Format (Kind : Iir_Kind) return Format_Type is
983   begin
984      case Kind is
985         when Iir_Kind_Unused
986           | Iir_Kind_Error
987           | Iir_Kind_Library_Clause
988           | Iir_Kind_Use_Clause
989           | Iir_Kind_Context_Reference
990           | Iir_Kind_Integer_Literal
991           | Iir_Kind_Floating_Point_Literal
992           | Iir_Kind_Null_Literal
993           | Iir_Kind_String_Literal8
994           | Iir_Kind_Physical_Int_Literal
995           | Iir_Kind_Physical_Fp_Literal
996           | Iir_Kind_Simple_Aggregate
997           | Iir_Kind_Overflow_Literal
998           | Iir_Kind_Unaffected_Waveform
999           | Iir_Kind_Waveform_Element
1000           | Iir_Kind_Conditional_Waveform
1001           | Iir_Kind_Conditional_Expression
1002           | Iir_Kind_Association_Element_By_Expression
1003           | Iir_Kind_Association_Element_By_Individual
1004           | Iir_Kind_Association_Element_Open
1005           | Iir_Kind_Association_Element_Package
1006           | Iir_Kind_Association_Element_Type
1007           | Iir_Kind_Association_Element_Subprogram
1008           | Iir_Kind_Association_Element_Terminal
1009           | Iir_Kind_Choice_By_Range
1010           | Iir_Kind_Choice_By_Expression
1011           | Iir_Kind_Choice_By_Others
1012           | Iir_Kind_Choice_By_None
1013           | Iir_Kind_Choice_By_Name
1014           | Iir_Kind_Entity_Aspect_Entity
1015           | Iir_Kind_Entity_Aspect_Configuration
1016           | Iir_Kind_Entity_Aspect_Open
1017           | Iir_Kind_Psl_Hierarchical_Name
1018           | Iir_Kind_Block_Configuration
1019           | Iir_Kind_Component_Configuration
1020           | Iir_Kind_Entity_Class
1021           | Iir_Kind_Attribute_Value
1022           | Iir_Kind_Aggregate_Info
1023           | Iir_Kind_Procedure_Call
1024           | Iir_Kind_Record_Element_Constraint
1025           | Iir_Kind_Array_Element_Resolution
1026           | Iir_Kind_Record_Resolution
1027           | Iir_Kind_Record_Element_Resolution
1028           | Iir_Kind_Break_Element
1029           | Iir_Kind_Disconnection_Specification
1030           | Iir_Kind_Step_Limit_Specification
1031           | Iir_Kind_Configuration_Specification
1032           | Iir_Kind_Access_Type_Definition
1033           | Iir_Kind_Incomplete_Type_Definition
1034           | Iir_Kind_Interface_Type_Definition
1035           | Iir_Kind_File_Type_Definition
1036           | Iir_Kind_Protected_Type_Declaration
1037           | Iir_Kind_Record_Type_Definition
1038           | Iir_Kind_Access_Subtype_Definition
1039           | Iir_Kind_Physical_Subtype_Definition
1040           | Iir_Kind_Integer_Subtype_Definition
1041           | Iir_Kind_Enumeration_Subtype_Definition
1042           | Iir_Kind_Enumeration_Type_Definition
1043           | Iir_Kind_Integer_Type_Definition
1044           | Iir_Kind_Floating_Type_Definition
1045           | Iir_Kind_Physical_Type_Definition
1046           | Iir_Kind_Range_Expression
1047           | Iir_Kind_Protected_Type_Body
1048           | Iir_Kind_Wildcard_Type_Definition
1049           | Iir_Kind_Overload_List
1050           | Iir_Kind_Configuration_Declaration
1051           | Iir_Kind_Context_Declaration
1052           | Iir_Kind_Package_Body
1053           | Iir_Kind_Type_Declaration
1054           | Iir_Kind_Anonymous_Type_Declaration
1055           | Iir_Kind_Subtype_Declaration
1056           | Iir_Kind_Nature_Declaration
1057           | Iir_Kind_Subnature_Declaration
1058           | Iir_Kind_Unit_Declaration
1059           | Iir_Kind_Library_Declaration
1060           | Iir_Kind_Attribute_Declaration
1061           | Iir_Kind_Group_Template_Declaration
1062           | Iir_Kind_Group_Declaration
1063           | Iir_Kind_Element_Declaration
1064           | Iir_Kind_Nature_Element_Declaration
1065           | Iir_Kind_Non_Object_Alias_Declaration
1066           | Iir_Kind_Enumeration_Literal
1067           | Iir_Kind_Terminal_Declaration
1068           | Iir_Kind_Object_Alias_Declaration
1069           | Iir_Kind_Free_Quantity_Declaration
1070           | Iir_Kind_Noise_Quantity_Declaration
1071           | Iir_Kind_Guard_Signal_Declaration
1072           | Iir_Kind_Signal_Declaration
1073           | Iir_Kind_Variable_Declaration
1074           | Iir_Kind_Iterator_Declaration
1075           | Iir_Kind_Interface_Constant_Declaration
1076           | Iir_Kind_Interface_Variable_Declaration
1077           | Iir_Kind_Interface_Signal_Declaration
1078           | Iir_Kind_Interface_File_Declaration
1079           | Iir_Kind_Interface_Quantity_Declaration
1080           | Iir_Kind_Interface_Terminal_Declaration
1081           | Iir_Kind_Interface_Type_Declaration
1082           | Iir_Kind_Anonymous_Signal_Declaration
1083           | Iir_Kind_Signal_Attribute_Declaration
1084           | Iir_Kind_Identity_Operator
1085           | Iir_Kind_Negation_Operator
1086           | Iir_Kind_Absolute_Operator
1087           | Iir_Kind_Not_Operator
1088           | Iir_Kind_Implicit_Condition_Operator
1089           | Iir_Kind_Condition_Operator
1090           | Iir_Kind_Reduction_And_Operator
1091           | Iir_Kind_Reduction_Or_Operator
1092           | Iir_Kind_Reduction_Nand_Operator
1093           | Iir_Kind_Reduction_Nor_Operator
1094           | Iir_Kind_Reduction_Xor_Operator
1095           | Iir_Kind_Reduction_Xnor_Operator
1096           | Iir_Kind_And_Operator
1097           | Iir_Kind_Or_Operator
1098           | Iir_Kind_Nand_Operator
1099           | Iir_Kind_Nor_Operator
1100           | Iir_Kind_Xor_Operator
1101           | Iir_Kind_Xnor_Operator
1102           | Iir_Kind_Equality_Operator
1103           | Iir_Kind_Inequality_Operator
1104           | Iir_Kind_Less_Than_Operator
1105           | Iir_Kind_Less_Than_Or_Equal_Operator
1106           | Iir_Kind_Greater_Than_Operator
1107           | Iir_Kind_Greater_Than_Or_Equal_Operator
1108           | Iir_Kind_Match_Equality_Operator
1109           | Iir_Kind_Match_Inequality_Operator
1110           | Iir_Kind_Match_Less_Than_Operator
1111           | Iir_Kind_Match_Less_Than_Or_Equal_Operator
1112           | Iir_Kind_Match_Greater_Than_Operator
1113           | Iir_Kind_Match_Greater_Than_Or_Equal_Operator
1114           | Iir_Kind_Sll_Operator
1115           | Iir_Kind_Sla_Operator
1116           | Iir_Kind_Srl_Operator
1117           | Iir_Kind_Sra_Operator
1118           | Iir_Kind_Rol_Operator
1119           | Iir_Kind_Ror_Operator
1120           | Iir_Kind_Addition_Operator
1121           | Iir_Kind_Substraction_Operator
1122           | Iir_Kind_Concatenation_Operator
1123           | Iir_Kind_Multiplication_Operator
1124           | Iir_Kind_Division_Operator
1125           | Iir_Kind_Modulus_Operator
1126           | Iir_Kind_Remainder_Operator
1127           | Iir_Kind_Exponentiation_Operator
1128           | Iir_Kind_Function_Call
1129           | Iir_Kind_Aggregate
1130           | Iir_Kind_Parenthesis_Expression
1131           | Iir_Kind_Qualified_Expression
1132           | Iir_Kind_Type_Conversion
1133           | Iir_Kind_Allocator_By_Expression
1134           | Iir_Kind_Allocator_By_Subtype
1135           | Iir_Kind_Selected_Element
1136           | Iir_Kind_Dereference
1137           | Iir_Kind_Implicit_Dereference
1138           | Iir_Kind_Slice_Name
1139           | Iir_Kind_Indexed_Name
1140           | Iir_Kind_Psl_Prev
1141           | Iir_Kind_Psl_Stable
1142           | Iir_Kind_Psl_Rose
1143           | Iir_Kind_Psl_Fell
1144           | Iir_Kind_Psl_Expression
1145           | Iir_Kind_Concurrent_Assertion_Statement
1146           | Iir_Kind_Concurrent_Procedure_Call_Statement
1147           | Iir_Kind_If_Generate_Statement
1148           | Iir_Kind_Case_Generate_Statement
1149           | Iir_Kind_For_Generate_Statement
1150           | Iir_Kind_Psl_Default_Clock
1151           | Iir_Kind_Generate_Statement_Body
1152           | Iir_Kind_If_Generate_Else_Clause
1153           | Iir_Kind_Simultaneous_Null_Statement
1154           | Iir_Kind_Simultaneous_Procedural_Statement
1155           | Iir_Kind_Simultaneous_Case_Statement
1156           | Iir_Kind_Simultaneous_If_Statement
1157           | Iir_Kind_Simultaneous_Elsif
1158           | Iir_Kind_Simple_Signal_Assignment_Statement
1159           | Iir_Kind_Conditional_Signal_Assignment_Statement
1160           | Iir_Kind_Signal_Force_Assignment_Statement
1161           | Iir_Kind_Signal_Release_Assignment_Statement
1162           | Iir_Kind_Null_Statement
1163           | Iir_Kind_Assertion_Statement
1164           | Iir_Kind_Report_Statement
1165           | Iir_Kind_Variable_Assignment_Statement
1166           | Iir_Kind_Conditional_Variable_Assignment_Statement
1167           | Iir_Kind_Return_Statement
1168           | Iir_Kind_For_Loop_Statement
1169           | Iir_Kind_While_Loop_Statement
1170           | Iir_Kind_Next_Statement
1171           | Iir_Kind_Exit_Statement
1172           | Iir_Kind_Case_Statement
1173           | Iir_Kind_Procedure_Call_Statement
1174           | Iir_Kind_Break_Statement
1175           | Iir_Kind_If_Statement
1176           | Iir_Kind_Elsif
1177           | Iir_Kind_Character_Literal
1178           | Iir_Kind_Simple_Name
1179           | Iir_Kind_Selected_Name
1180           | Iir_Kind_Operator_Symbol
1181           | Iir_Kind_Reference_Name
1182           | Iir_Kind_External_Constant_Name
1183           | Iir_Kind_External_Signal_Name
1184           | Iir_Kind_External_Variable_Name
1185           | Iir_Kind_Selected_By_All_Name
1186           | Iir_Kind_Parenthesis_Name
1187           | Iir_Kind_Package_Pathname
1188           | Iir_Kind_Absolute_Pathname
1189           | Iir_Kind_Relative_Pathname
1190           | Iir_Kind_Pathname_Element
1191           | Iir_Kind_Base_Attribute
1192           | Iir_Kind_Subtype_Attribute
1193           | Iir_Kind_Element_Attribute
1194           | Iir_Kind_Across_Attribute
1195           | Iir_Kind_Through_Attribute
1196           | Iir_Kind_Nature_Reference_Attribute
1197           | Iir_Kind_Left_Type_Attribute
1198           | Iir_Kind_Right_Type_Attribute
1199           | Iir_Kind_High_Type_Attribute
1200           | Iir_Kind_Low_Type_Attribute
1201           | Iir_Kind_Ascending_Type_Attribute
1202           | Iir_Kind_Image_Attribute
1203           | Iir_Kind_Value_Attribute
1204           | Iir_Kind_Pos_Attribute
1205           | Iir_Kind_Val_Attribute
1206           | Iir_Kind_Succ_Attribute
1207           | Iir_Kind_Pred_Attribute
1208           | Iir_Kind_Leftof_Attribute
1209           | Iir_Kind_Rightof_Attribute
1210           | Iir_Kind_Dot_Attribute
1211           | Iir_Kind_Integ_Attribute
1212           | Iir_Kind_Above_Attribute
1213           | Iir_Kind_Quantity_Delayed_Attribute
1214           | Iir_Kind_Delayed_Attribute
1215           | Iir_Kind_Stable_Attribute
1216           | Iir_Kind_Quiet_Attribute
1217           | Iir_Kind_Transaction_Attribute
1218           | Iir_Kind_Event_Attribute
1219           | Iir_Kind_Active_Attribute
1220           | Iir_Kind_Last_Event_Attribute
1221           | Iir_Kind_Last_Active_Attribute
1222           | Iir_Kind_Last_Value_Attribute
1223           | Iir_Kind_Driving_Attribute
1224           | Iir_Kind_Driving_Value_Attribute
1225           | Iir_Kind_Behavior_Attribute
1226           | Iir_Kind_Structure_Attribute
1227           | Iir_Kind_Simple_Name_Attribute
1228           | Iir_Kind_Instance_Name_Attribute
1229           | Iir_Kind_Path_Name_Attribute
1230           | Iir_Kind_Left_Array_Attribute
1231           | Iir_Kind_Right_Array_Attribute
1232           | Iir_Kind_High_Array_Attribute
1233           | Iir_Kind_Low_Array_Attribute
1234           | Iir_Kind_Length_Array_Attribute
1235           | Iir_Kind_Ascending_Array_Attribute
1236           | Iir_Kind_Range_Array_Attribute
1237           | Iir_Kind_Reverse_Range_Array_Attribute
1238           | Iir_Kind_Attribute_Name =>
1239            return Format_Short;
1240         when Iir_Kind_Design_File
1241           | Iir_Kind_Design_Unit
1242           | Iir_Kind_Block_Header
1243           | Iir_Kind_Binding_Indication
1244           | Iir_Kind_Signature
1245           | Iir_Kind_Attribute_Specification
1246           | Iir_Kind_Array_Type_Definition
1247           | Iir_Kind_Array_Subtype_Definition
1248           | Iir_Kind_Record_Subtype_Definition
1249           | Iir_Kind_Floating_Subtype_Definition
1250           | Iir_Kind_Subtype_Definition
1251           | Iir_Kind_Scalar_Nature_Definition
1252           | Iir_Kind_Record_Nature_Definition
1253           | Iir_Kind_Array_Nature_Definition
1254           | Iir_Kind_Array_Subnature_Definition
1255           | Iir_Kind_Entity_Declaration
1256           | Iir_Kind_Package_Declaration
1257           | Iir_Kind_Package_Instantiation_Declaration
1258           | Iir_Kind_Vmode_Declaration
1259           | Iir_Kind_Vprop_Declaration
1260           | Iir_Kind_Vunit_Declaration
1261           | Iir_Kind_Architecture_Body
1262           | Iir_Kind_Package_Header
1263           | Iir_Kind_Component_Declaration
1264           | Iir_Kind_Psl_Declaration
1265           | Iir_Kind_Psl_Endpoint_Declaration
1266           | Iir_Kind_Function_Declaration
1267           | Iir_Kind_Procedure_Declaration
1268           | Iir_Kind_Function_Body
1269           | Iir_Kind_Procedure_Body
1270           | Iir_Kind_Function_Instantiation_Declaration
1271           | Iir_Kind_Procedure_Instantiation_Declaration
1272           | Iir_Kind_Spectrum_Quantity_Declaration
1273           | Iir_Kind_Across_Quantity_Declaration
1274           | Iir_Kind_Through_Quantity_Declaration
1275           | Iir_Kind_File_Declaration
1276           | Iir_Kind_Constant_Declaration
1277           | Iir_Kind_Interface_Package_Declaration
1278           | Iir_Kind_Interface_Function_Declaration
1279           | Iir_Kind_Interface_Procedure_Declaration
1280           | Iir_Kind_Sensitized_Process_Statement
1281           | Iir_Kind_Process_Statement
1282           | Iir_Kind_Concurrent_Simple_Signal_Assignment
1283           | Iir_Kind_Concurrent_Conditional_Signal_Assignment
1284           | Iir_Kind_Concurrent_Selected_Signal_Assignment
1285           | Iir_Kind_Concurrent_Break_Statement
1286           | Iir_Kind_Psl_Assert_Directive
1287           | Iir_Kind_Psl_Assume_Directive
1288           | Iir_Kind_Psl_Cover_Directive
1289           | Iir_Kind_Psl_Restrict_Directive
1290           | Iir_Kind_Block_Statement
1291           | Iir_Kind_Component_Instantiation_Statement
1292           | Iir_Kind_Simple_Simultaneous_Statement
1293           | Iir_Kind_Selected_Waveform_Assignment_Statement
1294           | Iir_Kind_Wait_Statement
1295           | Iir_Kind_Signal_Slew_Attribute
1296           | Iir_Kind_Quantity_Slew_Attribute
1297           | Iir_Kind_Ramp_Attribute
1298           | Iir_Kind_Zoh_Attribute
1299           | Iir_Kind_Ltf_Attribute
1300           | Iir_Kind_Ztf_Attribute =>
1301            return Format_Medium;
1302      end case;
1303   end Get_Format;
1304
1305   function Get_First_Design_Unit (Design : Iir) return Iir is
1306   begin
1307      pragma Assert (Design /= Null_Iir);
1308      pragma Assert (Has_First_Design_Unit (Get_Kind (Design)),
1309                     "no field First_Design_Unit");
1310      return Get_Field5 (Design);
1311   end Get_First_Design_Unit;
1312
1313   procedure Set_First_Design_Unit (Design : Iir; Chain : Iir) is
1314   begin
1315      pragma Assert (Design /= Null_Iir);
1316      pragma Assert (Has_First_Design_Unit (Get_Kind (Design)),
1317                     "no field First_Design_Unit");
1318      Set_Field5 (Design, Chain);
1319   end Set_First_Design_Unit;
1320
1321   function Get_Last_Design_Unit (Design : Iir) return Iir is
1322   begin
1323      pragma Assert (Design /= Null_Iir);
1324      pragma Assert (Has_Last_Design_Unit (Get_Kind (Design)),
1325                     "no field Last_Design_Unit");
1326      return Get_Field6 (Design);
1327   end Get_Last_Design_Unit;
1328
1329   procedure Set_Last_Design_Unit (Design : Iir; Chain : Iir) is
1330   begin
1331      pragma Assert (Design /= Null_Iir);
1332      pragma Assert (Has_Last_Design_Unit (Get_Kind (Design)),
1333                     "no field Last_Design_Unit");
1334      Set_Field6 (Design, Chain);
1335   end Set_Last_Design_Unit;
1336
1337   function Get_Library_Declaration (Design : Iir) return Iir is
1338   begin
1339      pragma Assert (Design /= Null_Iir);
1340      pragma Assert (Has_Library_Declaration (Get_Kind (Design)),
1341                     "no field Library_Declaration");
1342      return Get_Field1 (Design);
1343   end Get_Library_Declaration;
1344
1345   procedure Set_Library_Declaration (Design : Iir; Library : Iir) is
1346   begin
1347      pragma Assert (Design /= Null_Iir);
1348      pragma Assert (Has_Library_Declaration (Get_Kind (Design)),
1349                     "no field Library_Declaration");
1350      Set_Field1 (Design, Library);
1351   end Set_Library_Declaration;
1352
1353   function Get_File_Checksum (Design : Iir) return File_Checksum_Id is
1354   begin
1355      pragma Assert (Design /= Null_Iir);
1356      pragma Assert (Has_File_Checksum (Get_Kind (Design)),
1357                     "no field File_Checksum");
1358      return Iir_To_File_Checksum_Id (Get_Field4 (Design));
1359   end Get_File_Checksum;
1360
1361   procedure Set_File_Checksum (Design : Iir; Checksum : File_Checksum_Id) is
1362   begin
1363      pragma Assert (Design /= Null_Iir);
1364      pragma Assert (Has_File_Checksum (Get_Kind (Design)),
1365                     "no field File_Checksum");
1366      Set_Field4 (Design, File_Checksum_Id_To_Iir (Checksum));
1367   end Set_File_Checksum;
1368
1369   function Get_Analysis_Time_Stamp (Design : Iir) return Time_Stamp_Id is
1370   begin
1371      pragma Assert (Design /= Null_Iir);
1372      pragma Assert (Has_Analysis_Time_Stamp (Get_Kind (Design)),
1373                     "no field Analysis_Time_Stamp");
1374      return Iir_To_Time_Stamp_Id (Get_Field3 (Design));
1375   end Get_Analysis_Time_Stamp;
1376
1377   procedure Set_Analysis_Time_Stamp (Design : Iir; Stamp : Time_Stamp_Id) is
1378   begin
1379      pragma Assert (Design /= Null_Iir);
1380      pragma Assert (Has_Analysis_Time_Stamp (Get_Kind (Design)),
1381                     "no field Analysis_Time_Stamp");
1382      Set_Field3 (Design, Time_Stamp_Id_To_Iir (Stamp));
1383   end Set_Analysis_Time_Stamp;
1384
1385   function Get_Design_File_Source (Design : Iir) return Source_File_Entry is
1386   begin
1387      pragma Assert (Design /= Null_Iir);
1388      pragma Assert (Has_Design_File_Source (Get_Kind (Design)),
1389                     "no field Design_File_Source");
1390      return Iir_To_Source_File_Entry (Get_Field7 (Design));
1391   end Get_Design_File_Source;
1392
1393   procedure Set_Design_File_Source (Design : Iir; Sfe : Source_File_Entry) is
1394   begin
1395      pragma Assert (Design /= Null_Iir);
1396      pragma Assert (Has_Design_File_Source (Get_Kind (Design)),
1397                     "no field Design_File_Source");
1398      Set_Field7 (Design, Source_File_Entry_To_Iir (Sfe));
1399   end Set_Design_File_Source;
1400
1401   function Get_Library (File : Iir_Design_File) return Iir is
1402   begin
1403      pragma Assert (File /= Null_Iir);
1404      pragma Assert (Has_Library (Get_Kind (File)),
1405                     "no field Library");
1406      return Get_Field0 (File);
1407   end Get_Library;
1408
1409   procedure Set_Library (File : Iir_Design_File; Lib : Iir) is
1410   begin
1411      pragma Assert (File /= Null_Iir);
1412      pragma Assert (Has_Library (Get_Kind (File)),
1413                     "no field Library");
1414      Set_Field0 (File, Lib);
1415   end Set_Library;
1416
1417   function Get_File_Dependence_List (File : Iir_Design_File) return Iir_List
1418   is
1419   begin
1420      pragma Assert (File /= Null_Iir);
1421      pragma Assert (Has_File_Dependence_List (Get_Kind (File)),
1422                     "no field File_Dependence_List");
1423      return Iir_To_Iir_List (Get_Field1 (File));
1424   end Get_File_Dependence_List;
1425
1426   procedure Set_File_Dependence_List (File : Iir_Design_File; Lst : Iir_List)
1427   is
1428   begin
1429      pragma Assert (File /= Null_Iir);
1430      pragma Assert (Has_File_Dependence_List (Get_Kind (File)),
1431                     "no field File_Dependence_List");
1432      Set_Field1 (File, Iir_List_To_Iir (Lst));
1433   end Set_File_Dependence_List;
1434
1435   function Get_Design_File_Filename (File : Iir_Design_File) return Name_Id
1436   is
1437   begin
1438      pragma Assert (File /= Null_Iir);
1439      pragma Assert (Has_Design_File_Filename (Get_Kind (File)),
1440                     "no field Design_File_Filename");
1441      return Name_Id'Val (Get_Field12 (File));
1442   end Get_Design_File_Filename;
1443
1444   procedure Set_Design_File_Filename (File : Iir_Design_File; Name : Name_Id)
1445   is
1446   begin
1447      pragma Assert (File /= Null_Iir);
1448      pragma Assert (Has_Design_File_Filename (Get_Kind (File)),
1449                     "no field Design_File_Filename");
1450      Set_Field12 (File, Name_Id'Pos (Name));
1451   end Set_Design_File_Filename;
1452
1453   function Get_Design_File_Directory (File : Iir_Design_File) return Name_Id
1454   is
1455   begin
1456      pragma Assert (File /= Null_Iir);
1457      pragma Assert (Has_Design_File_Directory (Get_Kind (File)),
1458                     "no field Design_File_Directory");
1459      return Name_Id'Val (Get_Field11 (File));
1460   end Get_Design_File_Directory;
1461
1462   procedure Set_Design_File_Directory (File : Iir_Design_File; Dir : Name_Id)
1463   is
1464   begin
1465      pragma Assert (File /= Null_Iir);
1466      pragma Assert (Has_Design_File_Directory (Get_Kind (File)),
1467                     "no field Design_File_Directory");
1468      Set_Field11 (File, Name_Id'Pos (Dir));
1469   end Set_Design_File_Directory;
1470
1471   function Get_Design_File (Unit : Iir_Design_Unit) return Iir is
1472   begin
1473      pragma Assert (Unit /= Null_Iir);
1474      pragma Assert (Has_Design_File (Get_Kind (Unit)),
1475                     "no field Design_File");
1476      return Get_Field0 (Unit);
1477   end Get_Design_File;
1478
1479   procedure Set_Design_File (Unit : Iir_Design_Unit; File : Iir) is
1480   begin
1481      pragma Assert (Unit /= Null_Iir);
1482      pragma Assert (Has_Design_File (Get_Kind (Unit)),
1483                     "no field Design_File");
1484      Set_Field0 (Unit, File);
1485   end Set_Design_File;
1486
1487   function Get_Design_File_Chain (Library : Iir) return Iir is
1488   begin
1489      pragma Assert (Library /= Null_Iir);
1490      pragma Assert (Has_Design_File_Chain (Get_Kind (Library)),
1491                     "no field Design_File_Chain");
1492      return Get_Field1 (Library);
1493   end Get_Design_File_Chain;
1494
1495   procedure Set_Design_File_Chain (Library : Iir; Chain : Iir) is
1496   begin
1497      pragma Assert (Library /= Null_Iir);
1498      pragma Assert (Has_Design_File_Chain (Get_Kind (Library)),
1499                     "no field Design_File_Chain");
1500      Set_Field1 (Library, Chain);
1501   end Set_Design_File_Chain;
1502
1503   function Get_Library_Directory (Library : Iir) return Name_Id is
1504   begin
1505      pragma Assert (Library /= Null_Iir);
1506      pragma Assert (Has_Library_Directory (Get_Kind (Library)),
1507                     "no field Library_Directory");
1508      return Name_Id'Val (Get_Field5 (Library));
1509   end Get_Library_Directory;
1510
1511   procedure Set_Library_Directory (Library : Iir; Dir : Name_Id) is
1512   begin
1513      pragma Assert (Library /= Null_Iir);
1514      pragma Assert (Has_Library_Directory (Get_Kind (Library)),
1515                     "no field Library_Directory");
1516      Set_Field5 (Library, Name_Id'Pos (Dir));
1517   end Set_Library_Directory;
1518
1519   function Get_Date (Target : Iir) return Date_Type is
1520   begin
1521      pragma Assert (Target /= Null_Iir);
1522      pragma Assert (Has_Date (Get_Kind (Target)),
1523                     "no field Date");
1524      return Date_Type'Val (Get_Field4 (Target));
1525   end Get_Date;
1526
1527   procedure Set_Date (Target : Iir; Date : Date_Type) is
1528   begin
1529      pragma Assert (Target /= Null_Iir);
1530      pragma Assert (Has_Date (Get_Kind (Target)),
1531                     "no field Date");
1532      Set_Field4 (Target, Date_Type'Pos (Date));
1533   end Set_Date;
1534
1535   function Get_Context_Items (Design_Unit : Iir) return Iir is
1536   begin
1537      pragma Assert (Design_Unit /= Null_Iir);
1538      pragma Assert (Has_Context_Items (Get_Kind (Design_Unit)),
1539                     "no field Context_Items");
1540      return Get_Field1 (Design_Unit);
1541   end Get_Context_Items;
1542
1543   procedure Set_Context_Items (Design_Unit : Iir; Items_Chain : Iir) is
1544   begin
1545      pragma Assert (Design_Unit /= Null_Iir);
1546      pragma Assert (Has_Context_Items (Get_Kind (Design_Unit)),
1547                     "no field Context_Items");
1548      Set_Field1 (Design_Unit, Items_Chain);
1549   end Set_Context_Items;
1550
1551   function Get_Dependence_List (Unit : Iir) return Iir_List is
1552   begin
1553      pragma Assert (Unit /= Null_Iir);
1554      pragma Assert (Has_Dependence_List (Get_Kind (Unit)),
1555                     "no field Dependence_List");
1556      return Iir_To_Iir_List (Get_Field8 (Unit));
1557   end Get_Dependence_List;
1558
1559   procedure Set_Dependence_List (Unit : Iir; List : Iir_List) is
1560   begin
1561      pragma Assert (Unit /= Null_Iir);
1562      pragma Assert (Has_Dependence_List (Get_Kind (Unit)),
1563                     "no field Dependence_List");
1564      Set_Field8 (Unit, Iir_List_To_Iir (List));
1565   end Set_Dependence_List;
1566
1567   function Get_Analysis_Checks_List (Unit : Iir) return Iir_List is
1568   begin
1569      pragma Assert (Unit /= Null_Iir);
1570      pragma Assert (Has_Analysis_Checks_List (Get_Kind (Unit)),
1571                     "no field Analysis_Checks_List");
1572      return Iir_To_Iir_List (Get_Field9 (Unit));
1573   end Get_Analysis_Checks_List;
1574
1575   procedure Set_Analysis_Checks_List (Unit : Iir; List : Iir_List) is
1576   begin
1577      pragma Assert (Unit /= Null_Iir);
1578      pragma Assert (Has_Analysis_Checks_List (Get_Kind (Unit)),
1579                     "no field Analysis_Checks_List");
1580      Set_Field9 (Unit, Iir_List_To_Iir (List));
1581   end Set_Analysis_Checks_List;
1582
1583   function Get_Date_State (Unit : Iir_Design_Unit) return Date_State_Type is
1584   begin
1585      pragma Assert (Unit /= Null_Iir);
1586      pragma Assert (Has_Date_State (Get_Kind (Unit)),
1587                     "no field Date_State");
1588      return Date_State_Type'Val (Get_State1 (Unit));
1589   end Get_Date_State;
1590
1591   procedure Set_Date_State (Unit : Iir_Design_Unit; State : Date_State_Type)
1592   is
1593   begin
1594      pragma Assert (Unit /= Null_Iir);
1595      pragma Assert (Has_Date_State (Get_Kind (Unit)),
1596                     "no field Date_State");
1597      Set_State1 (Unit, Date_State_Type'Pos (State));
1598   end Set_Date_State;
1599
1600   function Get_Guarded_Target_State (Stmt : Iir) return Tri_State_Type is
1601   begin
1602      pragma Assert (Stmt /= Null_Iir);
1603      pragma Assert (Has_Guarded_Target_State (Get_Kind (Stmt)),
1604                     "no field Guarded_Target_State");
1605      return Tri_State_Type'Val (Get_State1 (Stmt));
1606   end Get_Guarded_Target_State;
1607
1608   procedure Set_Guarded_Target_State (Stmt : Iir; State : Tri_State_Type) is
1609   begin
1610      pragma Assert (Stmt /= Null_Iir);
1611      pragma Assert (Has_Guarded_Target_State (Get_Kind (Stmt)),
1612                     "no field Guarded_Target_State");
1613      Set_State1 (Stmt, Tri_State_Type'Pos (State));
1614   end Set_Guarded_Target_State;
1615
1616   function Get_Library_Unit (Design_Unit : Iir_Design_Unit) return Iir is
1617   begin
1618      pragma Assert (Design_Unit /= Null_Iir);
1619      pragma Assert (Has_Library_Unit (Get_Kind (Design_Unit)),
1620                     "no field Library_Unit");
1621      return Get_Field5 (Design_Unit);
1622   end Get_Library_Unit;
1623
1624   procedure Set_Library_Unit (Design_Unit : Iir_Design_Unit; Lib_Unit : Iir)
1625   is
1626   begin
1627      pragma Assert (Design_Unit /= Null_Iir);
1628      pragma Assert (Has_Library_Unit (Get_Kind (Design_Unit)),
1629                     "no field Library_Unit");
1630      Set_Field5 (Design_Unit, Lib_Unit);
1631   end Set_Library_Unit;
1632
1633   function Get_Hash_Chain (Design_Unit : Iir_Design_Unit) return Iir is
1634   begin
1635      pragma Assert (Design_Unit /= Null_Iir);
1636      pragma Assert (Has_Hash_Chain (Get_Kind (Design_Unit)),
1637                     "no field Hash_Chain");
1638      return Get_Field7 (Design_Unit);
1639   end Get_Hash_Chain;
1640
1641   procedure Set_Hash_Chain (Design_Unit : Iir_Design_Unit; Chain : Iir) is
1642   begin
1643      pragma Assert (Design_Unit /= Null_Iir);
1644      pragma Assert (Has_Hash_Chain (Get_Kind (Design_Unit)),
1645                     "no field Hash_Chain");
1646      Set_Field7 (Design_Unit, Chain);
1647   end Set_Hash_Chain;
1648
1649   function Get_Design_Unit_Source_Pos (Design_Unit : Iir) return Source_Ptr
1650   is
1651   begin
1652      pragma Assert (Design_Unit /= Null_Iir);
1653      pragma Assert (Has_Design_Unit_Source_Pos (Get_Kind (Design_Unit)),
1654                     "no field Design_Unit_Source_Pos");
1655      return Iir_To_Source_Ptr (Get_Field10 (Design_Unit));
1656   end Get_Design_Unit_Source_Pos;
1657
1658   procedure Set_Design_Unit_Source_Pos (Design_Unit : Iir; Pos : Source_Ptr)
1659   is
1660   begin
1661      pragma Assert (Design_Unit /= Null_Iir);
1662      pragma Assert (Has_Design_Unit_Source_Pos (Get_Kind (Design_Unit)),
1663                     "no field Design_Unit_Source_Pos");
1664      Set_Field10 (Design_Unit, Source_Ptr_To_Iir (Pos));
1665   end Set_Design_Unit_Source_Pos;
1666
1667   function Get_Design_Unit_Source_Line (Design_Unit : Iir) return Int32 is
1668   begin
1669      pragma Assert (Design_Unit /= Null_Iir);
1670      pragma Assert (Has_Design_Unit_Source_Line (Get_Kind (Design_Unit)),
1671                     "no field Design_Unit_Source_Line");
1672      return Iir_To_Int32 (Get_Field11 (Design_Unit));
1673   end Get_Design_Unit_Source_Line;
1674
1675   procedure Set_Design_Unit_Source_Line (Design_Unit : Iir; Line : Int32) is
1676   begin
1677      pragma Assert (Design_Unit /= Null_Iir);
1678      pragma Assert (Has_Design_Unit_Source_Line (Get_Kind (Design_Unit)),
1679                     "no field Design_Unit_Source_Line");
1680      Set_Field11 (Design_Unit, Int32_To_Iir (Line));
1681   end Set_Design_Unit_Source_Line;
1682
1683   function Get_Design_Unit_Source_Col (Design_Unit : Iir) return Int32 is
1684   begin
1685      pragma Assert (Design_Unit /= Null_Iir);
1686      pragma Assert (Has_Design_Unit_Source_Col (Get_Kind (Design_Unit)),
1687                     "no field Design_Unit_Source_Col");
1688      return Iir_To_Int32 (Get_Field12 (Design_Unit));
1689   end Get_Design_Unit_Source_Col;
1690
1691   procedure Set_Design_Unit_Source_Col (Design_Unit : Iir; Line : Int32) is
1692   begin
1693      pragma Assert (Design_Unit /= Null_Iir);
1694      pragma Assert (Has_Design_Unit_Source_Col (Get_Kind (Design_Unit)),
1695                     "no field Design_Unit_Source_Col");
1696      Set_Field12 (Design_Unit, Int32_To_Iir (Line));
1697   end Set_Design_Unit_Source_Col;
1698
1699   type Int64_Conv is record
1700      Field4: Iir;
1701      Field5: Iir;
1702   end record;
1703   pragma Pack (Int64_Conv);
1704   pragma Assert (Int64_Conv'Size = Int64'Size);
1705
1706   function Get_Value (Lit : Iir) return Int64
1707   is
1708      function To_Int64 is new Ada.Unchecked_Conversion
1709         (Int64_Conv, Int64);
1710      Conv : Int64_Conv;
1711   begin
1712      pragma Assert (Lit /= Null_Iir);
1713      pragma Assert (Has_Value (Get_Kind (Lit)),
1714                     "no field Value");
1715      Conv.Field4 := Get_Field4 (Lit);
1716      Conv.Field5 := Get_Field5 (Lit);
1717      return To_Int64 (Conv);
1718   end Get_Value;
1719
1720   procedure Set_Value (Lit : Iir; Val : Int64)
1721   is
1722      function To_Int64_Conv is new Ada.Unchecked_Conversion
1723         (Int64, Int64_Conv);
1724      Conv : Int64_Conv;
1725   begin
1726      pragma Assert (Lit /= Null_Iir);
1727      pragma Assert (Has_Value (Get_Kind (Lit)),
1728                     "no field Value");
1729      Conv := To_Int64_Conv (Val);
1730      Set_Field4 (Lit, Conv.Field4);
1731      Set_Field5 (Lit, Conv.Field5);
1732   end Set_Value;
1733
1734   function Get_Enum_Pos (Lit : Iir) return Iir_Int32 is
1735   begin
1736      pragma Assert (Lit /= Null_Iir);
1737      pragma Assert (Has_Enum_Pos (Get_Kind (Lit)),
1738                     "no field Enum_Pos");
1739      return Iir_Int32'Val (Get_Field5 (Lit));
1740   end Get_Enum_Pos;
1741
1742   procedure Set_Enum_Pos (Lit : Iir; Val : Iir_Int32) is
1743   begin
1744      pragma Assert (Lit /= Null_Iir);
1745      pragma Assert (Has_Enum_Pos (Get_Kind (Lit)),
1746                     "no field Enum_Pos");
1747      Set_Field5 (Lit, Iir_Int32'Pos (Val));
1748   end Set_Enum_Pos;
1749
1750   function Get_Physical_Literal (Unit : Iir) return Iir is
1751   begin
1752      pragma Assert (Unit /= Null_Iir);
1753      pragma Assert (Has_Physical_Literal (Get_Kind (Unit)),
1754                     "no field Physical_Literal");
1755      return Get_Field4 (Unit);
1756   end Get_Physical_Literal;
1757
1758   procedure Set_Physical_Literal (Unit : Iir; Lit : Iir) is
1759   begin
1760      pragma Assert (Unit /= Null_Iir);
1761      pragma Assert (Has_Physical_Literal (Get_Kind (Unit)),
1762                     "no field Physical_Literal");
1763      Set_Field4 (Unit, Lit);
1764   end Set_Physical_Literal;
1765
1766   type Fp64_Conv is record
1767      Field4: Iir;
1768      Field5: Iir;
1769   end record;
1770   pragma Pack (Fp64_Conv);
1771   pragma Assert (Fp64_Conv'Size = Fp64'Size);
1772
1773   function Get_Fp_Value (Lit : Iir) return Fp64
1774   is
1775      function To_Fp64 is new Ada.Unchecked_Conversion
1776         (Fp64_Conv, Fp64);
1777      Conv : Fp64_Conv;
1778   begin
1779      pragma Assert (Lit /= Null_Iir);
1780      pragma Assert (Has_Fp_Value (Get_Kind (Lit)),
1781                     "no field Fp_Value");
1782      Conv.Field4 := Get_Field4 (Lit);
1783      Conv.Field5 := Get_Field5 (Lit);
1784      return To_Fp64 (Conv);
1785   end Get_Fp_Value;
1786
1787   procedure Set_Fp_Value (Lit : Iir; Val : Fp64)
1788   is
1789      function To_Fp64_Conv is new Ada.Unchecked_Conversion
1790         (Fp64, Fp64_Conv);
1791      Conv : Fp64_Conv;
1792   begin
1793      pragma Assert (Lit /= Null_Iir);
1794      pragma Assert (Has_Fp_Value (Get_Kind (Lit)),
1795                     "no field Fp_Value");
1796      Conv := To_Fp64_Conv (Val);
1797      Set_Field4 (Lit, Conv.Field4);
1798      Set_Field5 (Lit, Conv.Field5);
1799   end Set_Fp_Value;
1800
1801   function Get_Simple_Aggregate_List (Target : Iir) return Iir_Flist is
1802   begin
1803      pragma Assert (Target /= Null_Iir);
1804      pragma Assert (Has_Simple_Aggregate_List (Get_Kind (Target)),
1805                     "no field Simple_Aggregate_List");
1806      return Iir_To_Iir_Flist (Get_Field4 (Target));
1807   end Get_Simple_Aggregate_List;
1808
1809   procedure Set_Simple_Aggregate_List (Target : Iir; List : Iir_Flist) is
1810   begin
1811      pragma Assert (Target /= Null_Iir);
1812      pragma Assert (Has_Simple_Aggregate_List (Get_Kind (Target)),
1813                     "no field Simple_Aggregate_List");
1814      Set_Field4 (Target, Iir_Flist_To_Iir (List));
1815   end Set_Simple_Aggregate_List;
1816
1817   function Get_String8_Id (Lit : Iir) return String8_Id is
1818   begin
1819      pragma Assert (Lit /= Null_Iir);
1820      pragma Assert (Has_String8_Id (Get_Kind (Lit)),
1821                     "no field String8_Id");
1822      return Iir_To_String8_Id (Get_Field5 (Lit));
1823   end Get_String8_Id;
1824
1825   procedure Set_String8_Id (Lit : Iir; Id : String8_Id) is
1826   begin
1827      pragma Assert (Lit /= Null_Iir);
1828      pragma Assert (Has_String8_Id (Get_Kind (Lit)),
1829                     "no field String8_Id");
1830      Set_Field5 (Lit, String8_Id_To_Iir (Id));
1831   end Set_String8_Id;
1832
1833   function Get_String_Length (Lit : Iir) return Int32 is
1834   begin
1835      pragma Assert (Lit /= Null_Iir);
1836      pragma Assert (Has_String_Length (Get_Kind (Lit)),
1837                     "no field String_Length");
1838      return Iir_To_Int32 (Get_Field4 (Lit));
1839   end Get_String_Length;
1840
1841   procedure Set_String_Length (Lit : Iir; Len : Int32) is
1842   begin
1843      pragma Assert (Lit /= Null_Iir);
1844      pragma Assert (Has_String_Length (Get_Kind (Lit)),
1845                     "no field String_Length");
1846      Set_Field4 (Lit, Int32_To_Iir (Len));
1847   end Set_String_Length;
1848
1849   type Number_Base_Type_Conv is record
1850      Flag12: Boolean;
1851      Flag13: Boolean;
1852      Flag14: Boolean;
1853   end record;
1854   pragma Pack (Number_Base_Type_Conv);
1855   pragma Assert (Number_Base_Type_Conv'Size = Number_Base_Type'Size);
1856
1857   function Get_Bit_String_Base (Lit : Iir) return Number_Base_Type
1858   is
1859      function To_Number_Base_Type is new Ada.Unchecked_Conversion
1860         (Number_Base_Type_Conv, Number_Base_Type);
1861      Conv : Number_Base_Type_Conv;
1862   begin
1863      pragma Assert (Lit /= Null_Iir);
1864      pragma Assert (Has_Bit_String_Base (Get_Kind (Lit)),
1865                     "no field Bit_String_Base");
1866      Conv.Flag12 := Get_Flag12 (Lit);
1867      Conv.Flag13 := Get_Flag13 (Lit);
1868      Conv.Flag14 := Get_Flag14 (Lit);
1869      return To_Number_Base_Type (Conv);
1870   end Get_Bit_String_Base;
1871
1872   procedure Set_Bit_String_Base (Lit : Iir; Base : Number_Base_Type)
1873   is
1874      function To_Number_Base_Type_Conv is new Ada.Unchecked_Conversion
1875         (Number_Base_Type, Number_Base_Type_Conv);
1876      Conv : Number_Base_Type_Conv;
1877   begin
1878      pragma Assert (Lit /= Null_Iir);
1879      pragma Assert (Has_Bit_String_Base (Get_Kind (Lit)),
1880                     "no field Bit_String_Base");
1881      Conv := To_Number_Base_Type_Conv (Base);
1882      Set_Flag12 (Lit, Conv.Flag12);
1883      Set_Flag13 (Lit, Conv.Flag13);
1884      Set_Flag14 (Lit, Conv.Flag14);
1885   end Set_Bit_String_Base;
1886
1887   function Get_Has_Signed (Lit : Iir) return Boolean is
1888   begin
1889      pragma Assert (Lit /= Null_Iir);
1890      pragma Assert (Has_Has_Signed (Get_Kind (Lit)),
1891                     "no field Has_Signed");
1892      return Get_Flag1 (Lit);
1893   end Get_Has_Signed;
1894
1895   procedure Set_Has_Signed (Lit : Iir; Flag : Boolean) is
1896   begin
1897      pragma Assert (Lit /= Null_Iir);
1898      pragma Assert (Has_Has_Signed (Get_Kind (Lit)),
1899                     "no field Has_Signed");
1900      Set_Flag1 (Lit, Flag);
1901   end Set_Has_Signed;
1902
1903   function Get_Has_Sign (Lit : Iir) return Boolean is
1904   begin
1905      pragma Assert (Lit /= Null_Iir);
1906      pragma Assert (Has_Has_Sign (Get_Kind (Lit)),
1907                     "no field Has_Sign");
1908      return Get_Flag2 (Lit);
1909   end Get_Has_Sign;
1910
1911   procedure Set_Has_Sign (Lit : Iir; Flag : Boolean) is
1912   begin
1913      pragma Assert (Lit /= Null_Iir);
1914      pragma Assert (Has_Has_Sign (Get_Kind (Lit)),
1915                     "no field Has_Sign");
1916      Set_Flag2 (Lit, Flag);
1917   end Set_Has_Sign;
1918
1919   function Get_Has_Length (Lit : Iir) return Boolean is
1920   begin
1921      pragma Assert (Lit /= Null_Iir);
1922      pragma Assert (Has_Has_Length (Get_Kind (Lit)),
1923                     "no field Has_Length");
1924      return Get_Flag3 (Lit);
1925   end Get_Has_Length;
1926
1927   procedure Set_Has_Length (Lit : Iir; Flag : Boolean) is
1928   begin
1929      pragma Assert (Lit /= Null_Iir);
1930      pragma Assert (Has_Has_Length (Get_Kind (Lit)),
1931                     "no field Has_Length");
1932      Set_Flag3 (Lit, Flag);
1933   end Set_Has_Length;
1934
1935   function Get_Literal_Length (Lit : Iir) return Int32 is
1936   begin
1937      pragma Assert (Lit /= Null_Iir);
1938      pragma Assert (Has_Literal_Length (Get_Kind (Lit)),
1939                     "no field Literal_Length");
1940      return Iir_To_Int32 (Get_Field0 (Lit));
1941   end Get_Literal_Length;
1942
1943   procedure Set_Literal_Length (Lit : Iir; Len : Int32) is
1944   begin
1945      pragma Assert (Lit /= Null_Iir);
1946      pragma Assert (Has_Literal_Length (Get_Kind (Lit)),
1947                     "no field Literal_Length");
1948      Set_Field0 (Lit, Int32_To_Iir (Len));
1949   end Set_Literal_Length;
1950
1951   function Get_Literal_Origin (Lit : Iir) return Iir is
1952   begin
1953      pragma Assert (Lit /= Null_Iir);
1954      pragma Assert (Has_Literal_Origin (Get_Kind (Lit)),
1955                     "no field Literal_Origin");
1956      return Get_Field2 (Lit);
1957   end Get_Literal_Origin;
1958
1959   procedure Set_Literal_Origin (Lit : Iir; Orig : Iir) is
1960   begin
1961      pragma Assert (Lit /= Null_Iir);
1962      pragma Assert (Has_Literal_Origin (Get_Kind (Lit)),
1963                     "no field Literal_Origin");
1964      Set_Field2 (Lit, Orig);
1965   end Set_Literal_Origin;
1966
1967   function Get_Range_Origin (Lit : Iir) return Iir is
1968   begin
1969      pragma Assert (Lit /= Null_Iir);
1970      pragma Assert (Has_Range_Origin (Get_Kind (Lit)),
1971                     "no field Range_Origin");
1972      return Get_Field0 (Lit);
1973   end Get_Range_Origin;
1974
1975   procedure Set_Range_Origin (Lit : Iir; Orig : Iir) is
1976   begin
1977      pragma Assert (Lit /= Null_Iir);
1978      pragma Assert (Has_Range_Origin (Get_Kind (Lit)),
1979                     "no field Range_Origin");
1980      Set_Field0 (Lit, Orig);
1981   end Set_Range_Origin;
1982
1983   function Get_Literal_Subtype (Lit : Iir) return Iir is
1984   begin
1985      pragma Assert (Lit /= Null_Iir);
1986      pragma Assert (Has_Literal_Subtype (Get_Kind (Lit)),
1987                     "no field Literal_Subtype");
1988      return Get_Field3 (Lit);
1989   end Get_Literal_Subtype;
1990
1991   procedure Set_Literal_Subtype (Lit : Iir; Atype : Iir) is
1992   begin
1993      pragma Assert (Lit /= Null_Iir);
1994      pragma Assert (Has_Literal_Subtype (Get_Kind (Lit)),
1995                     "no field Literal_Subtype");
1996      Set_Field3 (Lit, Atype);
1997   end Set_Literal_Subtype;
1998
1999   function Get_Allocator_Subtype (Lit : Iir) return Iir is
2000   begin
2001      pragma Assert (Lit /= Null_Iir);
2002      pragma Assert (Has_Allocator_Subtype (Get_Kind (Lit)),
2003                     "no field Allocator_Subtype");
2004      return Get_Field3 (Lit);
2005   end Get_Allocator_Subtype;
2006
2007   procedure Set_Allocator_Subtype (Lit : Iir; Atype : Iir) is
2008   begin
2009      pragma Assert (Lit /= Null_Iir);
2010      pragma Assert (Has_Allocator_Subtype (Get_Kind (Lit)),
2011                     "no field Allocator_Subtype");
2012      Set_Field3 (Lit, Atype);
2013   end Set_Allocator_Subtype;
2014
2015   function Get_Entity_Class (Target : Iir) return Token_Type is
2016   begin
2017      pragma Assert (Target /= Null_Iir);
2018      pragma Assert (Has_Entity_Class (Get_Kind (Target)),
2019                     "no field Entity_Class");
2020      return Iir_To_Token_Type (Get_Field3 (Target));
2021   end Get_Entity_Class;
2022
2023   procedure Set_Entity_Class (Target : Iir; Kind : Token_Type) is
2024   begin
2025      pragma Assert (Target /= Null_Iir);
2026      pragma Assert (Has_Entity_Class (Get_Kind (Target)),
2027                     "no field Entity_Class");
2028      Set_Field3 (Target, Token_Type_To_Iir (Kind));
2029   end Set_Entity_Class;
2030
2031   function Get_Entity_Name_List (Target : Iir) return Iir_Flist is
2032   begin
2033      pragma Assert (Target /= Null_Iir);
2034      pragma Assert (Has_Entity_Name_List (Get_Kind (Target)),
2035                     "no field Entity_Name_List");
2036      return Iir_To_Iir_Flist (Get_Field8 (Target));
2037   end Get_Entity_Name_List;
2038
2039   procedure Set_Entity_Name_List (Target : Iir; Names : Iir_Flist) is
2040   begin
2041      pragma Assert (Target /= Null_Iir);
2042      pragma Assert (Has_Entity_Name_List (Get_Kind (Target)),
2043                     "no field Entity_Name_List");
2044      Set_Field8 (Target, Iir_Flist_To_Iir (Names));
2045   end Set_Entity_Name_List;
2046
2047   function Get_Attribute_Designator (Target : Iir) return Iir is
2048   begin
2049      pragma Assert (Target /= Null_Iir);
2050      pragma Assert (Has_Attribute_Designator (Get_Kind (Target)),
2051                     "no field Attribute_Designator");
2052      return Get_Field6 (Target);
2053   end Get_Attribute_Designator;
2054
2055   procedure Set_Attribute_Designator (Target : Iir; Designator : Iir) is
2056   begin
2057      pragma Assert (Target /= Null_Iir);
2058      pragma Assert (Has_Attribute_Designator (Get_Kind (Target)),
2059                     "no field Attribute_Designator");
2060      Set_Field6 (Target, Designator);
2061   end Set_Attribute_Designator;
2062
2063   function Get_Attribute_Specification_Chain (Target : Iir) return Iir is
2064   begin
2065      pragma Assert (Target /= Null_Iir);
2066      pragma Assert (Has_Attribute_Specification_Chain (Get_Kind (Target)),
2067                     "no field Attribute_Specification_Chain");
2068      return Get_Field7 (Target);
2069   end Get_Attribute_Specification_Chain;
2070
2071   procedure Set_Attribute_Specification_Chain (Target : Iir; Chain : Iir) is
2072   begin
2073      pragma Assert (Target /= Null_Iir);
2074      pragma Assert (Has_Attribute_Specification_Chain (Get_Kind (Target)),
2075                     "no field Attribute_Specification_Chain");
2076      Set_Field7 (Target, Chain);
2077   end Set_Attribute_Specification_Chain;
2078
2079   function Get_Attribute_Specification (Val : Iir) return Iir is
2080   begin
2081      pragma Assert (Val /= Null_Iir);
2082      pragma Assert (Has_Attribute_Specification (Get_Kind (Val)),
2083                     "no field Attribute_Specification");
2084      return Get_Field4 (Val);
2085   end Get_Attribute_Specification;
2086
2087   procedure Set_Attribute_Specification (Val : Iir; Attr : Iir) is
2088   begin
2089      pragma Assert (Val /= Null_Iir);
2090      pragma Assert (Has_Attribute_Specification (Get_Kind (Val)),
2091                     "no field Attribute_Specification");
2092      Set_Field4 (Val, Attr);
2093   end Set_Attribute_Specification;
2094
2095   function Get_Static_Attribute_Flag (Attr : Iir) return Boolean is
2096   begin
2097      pragma Assert (Attr /= Null_Iir);
2098      pragma Assert (Has_Static_Attribute_Flag (Get_Kind (Attr)),
2099                     "no field Static_Attribute_Flag");
2100      return Get_Flag2 (Attr);
2101   end Get_Static_Attribute_Flag;
2102
2103   procedure Set_Static_Attribute_Flag (Attr : Iir; Flag : Boolean) is
2104   begin
2105      pragma Assert (Attr /= Null_Iir);
2106      pragma Assert (Has_Static_Attribute_Flag (Get_Kind (Attr)),
2107                     "no field Static_Attribute_Flag");
2108      Set_Flag2 (Attr, Flag);
2109   end Set_Static_Attribute_Flag;
2110
2111   function Get_Signal_List (Target : Iir) return Iir_Flist is
2112   begin
2113      pragma Assert (Target /= Null_Iir);
2114      pragma Assert (Has_Signal_List (Get_Kind (Target)),
2115                     "no field Signal_List");
2116      return Iir_To_Iir_Flist (Get_Field3 (Target));
2117   end Get_Signal_List;
2118
2119   procedure Set_Signal_List (Target : Iir; List : Iir_Flist) is
2120   begin
2121      pragma Assert (Target /= Null_Iir);
2122      pragma Assert (Has_Signal_List (Get_Kind (Target)),
2123                     "no field Signal_List");
2124      Set_Field3 (Target, Iir_Flist_To_Iir (List));
2125   end Set_Signal_List;
2126
2127   function Get_Quantity_List (Target : Iir) return Iir_Flist is
2128   begin
2129      pragma Assert (Target /= Null_Iir);
2130      pragma Assert (Has_Quantity_List (Get_Kind (Target)),
2131                     "no field Quantity_List");
2132      return Iir_To_Iir_Flist (Get_Field3 (Target));
2133   end Get_Quantity_List;
2134
2135   procedure Set_Quantity_List (Target : Iir; List : Iir_Flist) is
2136   begin
2137      pragma Assert (Target /= Null_Iir);
2138      pragma Assert (Has_Quantity_List (Get_Kind (Target)),
2139                     "no field Quantity_List");
2140      Set_Field3 (Target, Iir_Flist_To_Iir (List));
2141   end Set_Quantity_List;
2142
2143   function Get_Designated_Entity (Val : Iir_Attribute_Value) return Iir is
2144   begin
2145      pragma Assert (Val /= Null_Iir);
2146      pragma Assert (Has_Designated_Entity (Get_Kind (Val)),
2147                     "no field Designated_Entity");
2148      return Get_Field3 (Val);
2149   end Get_Designated_Entity;
2150
2151   procedure Set_Designated_Entity (Val : Iir_Attribute_Value; Entity : Iir)
2152   is
2153   begin
2154      pragma Assert (Val /= Null_Iir);
2155      pragma Assert (Has_Designated_Entity (Get_Kind (Val)),
2156                     "no field Designated_Entity");
2157      Set_Field3 (Val, Entity);
2158   end Set_Designated_Entity;
2159
2160   function Get_Formal (Target : Iir) return Iir is
2161   begin
2162      pragma Assert (Target /= Null_Iir);
2163      pragma Assert (Has_Formal (Get_Kind (Target)),
2164                     "no field Formal");
2165      return Get_Field1 (Target);
2166   end Get_Formal;
2167
2168   procedure Set_Formal (Target : Iir; Formal : Iir) is
2169   begin
2170      pragma Assert (Target /= Null_Iir);
2171      pragma Assert (Has_Formal (Get_Kind (Target)),
2172                     "no field Formal");
2173      Set_Field1 (Target, Formal);
2174   end Set_Formal;
2175
2176   function Get_Actual (Target : Iir) return Iir is
2177   begin
2178      pragma Assert (Target /= Null_Iir);
2179      pragma Assert (Has_Actual (Get_Kind (Target)),
2180                     "no field Actual");
2181      return Get_Field3 (Target);
2182   end Get_Actual;
2183
2184   procedure Set_Actual (Target : Iir; Actual : Iir) is
2185   begin
2186      pragma Assert (Target /= Null_Iir);
2187      pragma Assert (Has_Actual (Get_Kind (Target)),
2188                     "no field Actual");
2189      Set_Field3 (Target, Actual);
2190   end Set_Actual;
2191
2192   function Get_Actual_Conversion (Target : Iir) return Iir is
2193   begin
2194      pragma Assert (Target /= Null_Iir);
2195      pragma Assert (Has_Actual_Conversion (Get_Kind (Target)),
2196                     "no field Actual_Conversion");
2197      return Get_Field4 (Target);
2198   end Get_Actual_Conversion;
2199
2200   procedure Set_Actual_Conversion (Target : Iir; Conv : Iir) is
2201   begin
2202      pragma Assert (Target /= Null_Iir);
2203      pragma Assert (Has_Actual_Conversion (Get_Kind (Target)),
2204                     "no field Actual_Conversion");
2205      Set_Field4 (Target, Conv);
2206   end Set_Actual_Conversion;
2207
2208   function Get_Formal_Conversion (Target : Iir) return Iir is
2209   begin
2210      pragma Assert (Target /= Null_Iir);
2211      pragma Assert (Has_Formal_Conversion (Get_Kind (Target)),
2212                     "no field Formal_Conversion");
2213      return Get_Field5 (Target);
2214   end Get_Formal_Conversion;
2215
2216   procedure Set_Formal_Conversion (Target : Iir; Conv : Iir) is
2217   begin
2218      pragma Assert (Target /= Null_Iir);
2219      pragma Assert (Has_Formal_Conversion (Get_Kind (Target)),
2220                     "no field Formal_Conversion");
2221      Set_Field5 (Target, Conv);
2222   end Set_Formal_Conversion;
2223
2224   function Get_Whole_Association_Flag (Target : Iir) return Boolean is
2225   begin
2226      pragma Assert (Target /= Null_Iir);
2227      pragma Assert (Has_Whole_Association_Flag (Get_Kind (Target)),
2228                     "no field Whole_Association_Flag");
2229      return Get_Flag1 (Target);
2230   end Get_Whole_Association_Flag;
2231
2232   procedure Set_Whole_Association_Flag (Target : Iir; Flag : Boolean) is
2233   begin
2234      pragma Assert (Target /= Null_Iir);
2235      pragma Assert (Has_Whole_Association_Flag (Get_Kind (Target)),
2236                     "no field Whole_Association_Flag");
2237      Set_Flag1 (Target, Flag);
2238   end Set_Whole_Association_Flag;
2239
2240   function Get_Collapse_Signal_Flag (Target : Iir) return Boolean is
2241   begin
2242      pragma Assert (Target /= Null_Iir);
2243      pragma Assert (Has_Collapse_Signal_Flag (Get_Kind (Target)),
2244                     "no field Collapse_Signal_Flag");
2245      return Get_Flag2 (Target);
2246   end Get_Collapse_Signal_Flag;
2247
2248   procedure Set_Collapse_Signal_Flag (Target : Iir; Flag : Boolean) is
2249   begin
2250      pragma Assert (Target /= Null_Iir);
2251      pragma Assert (Has_Collapse_Signal_Flag (Get_Kind (Target)),
2252                     "no field Collapse_Signal_Flag");
2253      Set_Flag2 (Target, Flag);
2254   end Set_Collapse_Signal_Flag;
2255
2256   function Get_Artificial_Flag (Target : Iir) return Boolean is
2257   begin
2258      pragma Assert (Target /= Null_Iir);
2259      pragma Assert (Has_Artificial_Flag (Get_Kind (Target)),
2260                     "no field Artificial_Flag");
2261      return Get_Flag3 (Target);
2262   end Get_Artificial_Flag;
2263
2264   procedure Set_Artificial_Flag (Target : Iir; Flag : Boolean) is
2265   begin
2266      pragma Assert (Target /= Null_Iir);
2267      pragma Assert (Has_Artificial_Flag (Get_Kind (Target)),
2268                     "no field Artificial_Flag");
2269      Set_Flag3 (Target, Flag);
2270   end Set_Artificial_Flag;
2271
2272   function Get_Open_Flag (Target : Iir) return Boolean is
2273   begin
2274      pragma Assert (Target /= Null_Iir);
2275      pragma Assert (Has_Open_Flag (Get_Kind (Target)),
2276                     "no field Open_Flag");
2277      return Get_Flag7 (Target);
2278   end Get_Open_Flag;
2279
2280   procedure Set_Open_Flag (Target : Iir; Flag : Boolean) is
2281   begin
2282      pragma Assert (Target /= Null_Iir);
2283      pragma Assert (Has_Open_Flag (Get_Kind (Target)),
2284                     "no field Open_Flag");
2285      Set_Flag7 (Target, Flag);
2286   end Set_Open_Flag;
2287
2288   function Get_After_Drivers_Flag (Target : Iir) return Boolean is
2289   begin
2290      pragma Assert (Target /= Null_Iir);
2291      pragma Assert (Has_After_Drivers_Flag (Get_Kind (Target)),
2292                     "no field After_Drivers_Flag");
2293      return Get_Flag5 (Target);
2294   end Get_After_Drivers_Flag;
2295
2296   procedure Set_After_Drivers_Flag (Target : Iir; Flag : Boolean) is
2297   begin
2298      pragma Assert (Target /= Null_Iir);
2299      pragma Assert (Has_After_Drivers_Flag (Get_Kind (Target)),
2300                     "no field After_Drivers_Flag");
2301      Set_Flag5 (Target, Flag);
2302   end Set_After_Drivers_Flag;
2303
2304   function Get_We_Value (We : Iir_Waveform_Element) return Iir is
2305   begin
2306      pragma Assert (We /= Null_Iir);
2307      pragma Assert (Has_We_Value (Get_Kind (We)),
2308                     "no field We_Value");
2309      return Get_Field1 (We);
2310   end Get_We_Value;
2311
2312   procedure Set_We_Value (We : Iir_Waveform_Element; An_Iir : Iir) is
2313   begin
2314      pragma Assert (We /= Null_Iir);
2315      pragma Assert (Has_We_Value (Get_Kind (We)),
2316                     "no field We_Value");
2317      Set_Field1 (We, An_Iir);
2318   end Set_We_Value;
2319
2320   function Get_Time (We : Iir_Waveform_Element) return Iir is
2321   begin
2322      pragma Assert (We /= Null_Iir);
2323      pragma Assert (Has_Time (Get_Kind (We)),
2324                     "no field Time");
2325      return Get_Field3 (We);
2326   end Get_Time;
2327
2328   procedure Set_Time (We : Iir_Waveform_Element; An_Iir : Iir) is
2329   begin
2330      pragma Assert (We /= Null_Iir);
2331      pragma Assert (Has_Time (Get_Kind (We)),
2332                     "no field Time");
2333      Set_Field3 (We, An_Iir);
2334   end Set_Time;
2335
2336   function Get_Associated_Expr (Target : Iir) return Iir is
2337   begin
2338      pragma Assert (Target /= Null_Iir);
2339      pragma Assert (Has_Associated_Expr (Get_Kind (Target)),
2340                     "no field Associated_Expr");
2341      return Get_Field3 (Target);
2342   end Get_Associated_Expr;
2343
2344   procedure Set_Associated_Expr (Target : Iir; Associated : Iir) is
2345   begin
2346      pragma Assert (Target /= Null_Iir);
2347      pragma Assert (Has_Associated_Expr (Get_Kind (Target)),
2348                     "no field Associated_Expr");
2349      Set_Field3 (Target, Associated);
2350   end Set_Associated_Expr;
2351
2352   function Get_Associated_Block (Target : Iir) return Iir is
2353   begin
2354      pragma Assert (Target /= Null_Iir);
2355      pragma Assert (Has_Associated_Block (Get_Kind (Target)),
2356                     "no field Associated_Block");
2357      return Get_Field3 (Target);
2358   end Get_Associated_Block;
2359
2360   procedure Set_Associated_Block (Target : Iir; Associated : Iir) is
2361   begin
2362      pragma Assert (Target /= Null_Iir);
2363      pragma Assert (Has_Associated_Block (Get_Kind (Target)),
2364                     "no field Associated_Block");
2365      Set_Field3 (Target, Associated);
2366   end Set_Associated_Block;
2367
2368   function Get_Associated_Chain (Target : Iir) return Iir is
2369   begin
2370      pragma Assert (Target /= Null_Iir);
2371      pragma Assert (Has_Associated_Chain (Get_Kind (Target)),
2372                     "no field Associated_Chain");
2373      return Get_Field4 (Target);
2374   end Get_Associated_Chain;
2375
2376   procedure Set_Associated_Chain (Target : Iir; Associated : Iir) is
2377   begin
2378      pragma Assert (Target /= Null_Iir);
2379      pragma Assert (Has_Associated_Chain (Get_Kind (Target)),
2380                     "no field Associated_Chain");
2381      Set_Field4 (Target, Associated);
2382   end Set_Associated_Chain;
2383
2384   function Get_Choice_Name (Choice : Iir) return Iir is
2385   begin
2386      pragma Assert (Choice /= Null_Iir);
2387      pragma Assert (Has_Choice_Name (Get_Kind (Choice)),
2388                     "no field Choice_Name");
2389      return Get_Field5 (Choice);
2390   end Get_Choice_Name;
2391
2392   procedure Set_Choice_Name (Choice : Iir; Name : Iir) is
2393   begin
2394      pragma Assert (Choice /= Null_Iir);
2395      pragma Assert (Has_Choice_Name (Get_Kind (Choice)),
2396                     "no field Choice_Name");
2397      Set_Field5 (Choice, Name);
2398   end Set_Choice_Name;
2399
2400   function Get_Choice_Expression (Choice : Iir) return Iir is
2401   begin
2402      pragma Assert (Choice /= Null_Iir);
2403      pragma Assert (Has_Choice_Expression (Get_Kind (Choice)),
2404                     "no field Choice_Expression");
2405      return Get_Field5 (Choice);
2406   end Get_Choice_Expression;
2407
2408   procedure Set_Choice_Expression (Choice : Iir; Name : Iir) is
2409   begin
2410      pragma Assert (Choice /= Null_Iir);
2411      pragma Assert (Has_Choice_Expression (Get_Kind (Choice)),
2412                     "no field Choice_Expression");
2413      Set_Field5 (Choice, Name);
2414   end Set_Choice_Expression;
2415
2416   function Get_Choice_Range (Choice : Iir) return Iir is
2417   begin
2418      pragma Assert (Choice /= Null_Iir);
2419      pragma Assert (Has_Choice_Range (Get_Kind (Choice)),
2420                     "no field Choice_Range");
2421      return Get_Field5 (Choice);
2422   end Get_Choice_Range;
2423
2424   procedure Set_Choice_Range (Choice : Iir; Name : Iir) is
2425   begin
2426      pragma Assert (Choice /= Null_Iir);
2427      pragma Assert (Has_Choice_Range (Get_Kind (Choice)),
2428                     "no field Choice_Range");
2429      Set_Field5 (Choice, Name);
2430   end Set_Choice_Range;
2431
2432   function Get_Same_Alternative_Flag (Target : Iir) return Boolean is
2433   begin
2434      pragma Assert (Target /= Null_Iir);
2435      pragma Assert (Has_Same_Alternative_Flag (Get_Kind (Target)),
2436                     "no field Same_Alternative_Flag");
2437      return Get_Flag1 (Target);
2438   end Get_Same_Alternative_Flag;
2439
2440   procedure Set_Same_Alternative_Flag (Target : Iir; Val : Boolean) is
2441   begin
2442      pragma Assert (Target /= Null_Iir);
2443      pragma Assert (Has_Same_Alternative_Flag (Get_Kind (Target)),
2444                     "no field Same_Alternative_Flag");
2445      Set_Flag1 (Target, Val);
2446   end Set_Same_Alternative_Flag;
2447
2448   function Get_Element_Type_Flag (Target : Iir) return Boolean is
2449   begin
2450      pragma Assert (Target /= Null_Iir);
2451      pragma Assert (Has_Element_Type_Flag (Get_Kind (Target)),
2452                     "no field Element_Type_Flag");
2453      return Get_Flag2 (Target);
2454   end Get_Element_Type_Flag;
2455
2456   procedure Set_Element_Type_Flag (Target : Iir; Val : Boolean) is
2457   begin
2458      pragma Assert (Target /= Null_Iir);
2459      pragma Assert (Has_Element_Type_Flag (Get_Kind (Target)),
2460                     "no field Element_Type_Flag");
2461      Set_Flag2 (Target, Val);
2462   end Set_Element_Type_Flag;
2463
2464   function Get_Architecture (Target : Iir_Entity_Aspect_Entity) return Iir is
2465   begin
2466      pragma Assert (Target /= Null_Iir);
2467      pragma Assert (Has_Architecture (Get_Kind (Target)),
2468                     "no field Architecture");
2469      return Get_Field3 (Target);
2470   end Get_Architecture;
2471
2472   procedure Set_Architecture (Target : Iir_Entity_Aspect_Entity; Arch : Iir)
2473   is
2474   begin
2475      pragma Assert (Target /= Null_Iir);
2476      pragma Assert (Has_Architecture (Get_Kind (Target)),
2477                     "no field Architecture");
2478      Set_Field3 (Target, Arch);
2479   end Set_Architecture;
2480
2481   function Get_Block_Specification (Target : Iir) return Iir is
2482   begin
2483      pragma Assert (Target /= Null_Iir);
2484      pragma Assert (Has_Block_Specification (Get_Kind (Target)),
2485                     "no field Block_Specification");
2486      return Get_Field5 (Target);
2487   end Get_Block_Specification;
2488
2489   procedure Set_Block_Specification (Target : Iir; Block : Iir) is
2490   begin
2491      pragma Assert (Target /= Null_Iir);
2492      pragma Assert (Has_Block_Specification (Get_Kind (Target)),
2493                     "no field Block_Specification");
2494      Set_Field5 (Target, Block);
2495   end Set_Block_Specification;
2496
2497   function Get_Prev_Block_Configuration (Target : Iir) return Iir is
2498   begin
2499      pragma Assert (Target /= Null_Iir);
2500      pragma Assert (Has_Prev_Block_Configuration (Get_Kind (Target)),
2501                     "no field Prev_Block_Configuration");
2502      return Get_Field4 (Target);
2503   end Get_Prev_Block_Configuration;
2504
2505   procedure Set_Prev_Block_Configuration (Target : Iir; Block : Iir) is
2506   begin
2507      pragma Assert (Target /= Null_Iir);
2508      pragma Assert (Has_Prev_Block_Configuration (Get_Kind (Target)),
2509                     "no field Prev_Block_Configuration");
2510      Set_Field4 (Target, Block);
2511   end Set_Prev_Block_Configuration;
2512
2513   function Get_Configuration_Item_Chain (Target : Iir) return Iir is
2514   begin
2515      pragma Assert (Target /= Null_Iir);
2516      pragma Assert (Has_Configuration_Item_Chain (Get_Kind (Target)),
2517                     "no field Configuration_Item_Chain");
2518      return Get_Field3 (Target);
2519   end Get_Configuration_Item_Chain;
2520
2521   procedure Set_Configuration_Item_Chain (Target : Iir; Chain : Iir) is
2522   begin
2523      pragma Assert (Target /= Null_Iir);
2524      pragma Assert (Has_Configuration_Item_Chain (Get_Kind (Target)),
2525                     "no field Configuration_Item_Chain");
2526      Set_Field3 (Target, Chain);
2527   end Set_Configuration_Item_Chain;
2528
2529   function Get_Attribute_Value_Chain (Target : Iir) return Iir is
2530   begin
2531      pragma Assert (Target /= Null_Iir);
2532      pragma Assert (Has_Attribute_Value_Chain (Get_Kind (Target)),
2533                     "no field Attribute_Value_Chain");
2534      return Get_Field5 (Target);
2535   end Get_Attribute_Value_Chain;
2536
2537   procedure Set_Attribute_Value_Chain (Target : Iir; Chain : Iir) is
2538   begin
2539      pragma Assert (Target /= Null_Iir);
2540      pragma Assert (Has_Attribute_Value_Chain (Get_Kind (Target)),
2541                     "no field Attribute_Value_Chain");
2542      Set_Field5 (Target, Chain);
2543   end Set_Attribute_Value_Chain;
2544
2545   function Get_Spec_Chain (Target : Iir) return Iir is
2546   begin
2547      pragma Assert (Target /= Null_Iir);
2548      pragma Assert (Has_Spec_Chain (Get_Kind (Target)),
2549                     "no field Spec_Chain");
2550      return Get_Field2 (Target);
2551   end Get_Spec_Chain;
2552
2553   procedure Set_Spec_Chain (Target : Iir; Chain : Iir) is
2554   begin
2555      pragma Assert (Target /= Null_Iir);
2556      pragma Assert (Has_Spec_Chain (Get_Kind (Target)),
2557                     "no field Spec_Chain");
2558      Set_Field2 (Target, Chain);
2559   end Set_Spec_Chain;
2560
2561   function Get_Value_Chain (Target : Iir) return Iir is
2562   begin
2563      pragma Assert (Target /= Null_Iir);
2564      pragma Assert (Has_Value_Chain (Get_Kind (Target)),
2565                     "no field Value_Chain");
2566      return Get_Field0 (Target);
2567   end Get_Value_Chain;
2568
2569   procedure Set_Value_Chain (Target : Iir; Chain : Iir) is
2570   begin
2571      pragma Assert (Target /= Null_Iir);
2572      pragma Assert (Has_Value_Chain (Get_Kind (Target)),
2573                     "no field Value_Chain");
2574      Set_Field0 (Target, Chain);
2575   end Set_Value_Chain;
2576
2577   function Get_Attribute_Value_Spec_Chain (Target : Iir) return Iir is
2578   begin
2579      pragma Assert (Target /= Null_Iir);
2580      pragma Assert (Has_Attribute_Value_Spec_Chain (Get_Kind (Target)),
2581                     "no field Attribute_Value_Spec_Chain");
2582      return Get_Field4 (Target);
2583   end Get_Attribute_Value_Spec_Chain;
2584
2585   procedure Set_Attribute_Value_Spec_Chain (Target : Iir; Chain : Iir) is
2586   begin
2587      pragma Assert (Target /= Null_Iir);
2588      pragma Assert (Has_Attribute_Value_Spec_Chain (Get_Kind (Target)),
2589                     "no field Attribute_Value_Spec_Chain");
2590      Set_Field4 (Target, Chain);
2591   end Set_Attribute_Value_Spec_Chain;
2592
2593   function Get_Entity_Name (Arch : Iir) return Iir is
2594   begin
2595      pragma Assert (Arch /= Null_Iir);
2596      pragma Assert (Has_Entity_Name (Get_Kind (Arch)),
2597                     "no field Entity_Name");
2598      return Get_Field2 (Arch);
2599   end Get_Entity_Name;
2600
2601   procedure Set_Entity_Name (Arch : Iir; Entity : Iir) is
2602   begin
2603      pragma Assert (Arch /= Null_Iir);
2604      pragma Assert (Has_Entity_Name (Get_Kind (Arch)),
2605                     "no field Entity_Name");
2606      Set_Field2 (Arch, Entity);
2607   end Set_Entity_Name;
2608
2609   function Get_Package (Package_Body : Iir) return Iir is
2610   begin
2611      pragma Assert (Package_Body /= Null_Iir);
2612      pragma Assert (Has_Package (Get_Kind (Package_Body)),
2613                     "no field Package");
2614      return Get_Field4 (Package_Body);
2615   end Get_Package;
2616
2617   procedure Set_Package (Package_Body : Iir; Decl : Iir) is
2618   begin
2619      pragma Assert (Package_Body /= Null_Iir);
2620      pragma Assert (Has_Package (Get_Kind (Package_Body)),
2621                     "no field Package");
2622      Set_Field4 (Package_Body, Decl);
2623   end Set_Package;
2624
2625   function Get_Package_Body (Pkg : Iir) return Iir is
2626   begin
2627      pragma Assert (Pkg /= Null_Iir);
2628      pragma Assert (Has_Package_Body (Get_Kind (Pkg)),
2629                     "no field Package_Body");
2630      return Get_Field4 (Pkg);
2631   end Get_Package_Body;
2632
2633   procedure Set_Package_Body (Pkg : Iir; Decl : Iir) is
2634   begin
2635      pragma Assert (Pkg /= Null_Iir);
2636      pragma Assert (Has_Package_Body (Get_Kind (Pkg)),
2637                     "no field Package_Body");
2638      Set_Field4 (Pkg, Decl);
2639   end Set_Package_Body;
2640
2641   function Get_Instance_Package_Body (Pkg : Iir) return Iir is
2642   begin
2643      pragma Assert (Pkg /= Null_Iir);
2644      pragma Assert (Has_Instance_Package_Body (Get_Kind (Pkg)),
2645                     "no field Instance_Package_Body");
2646      return Get_Field4 (Pkg);
2647   end Get_Instance_Package_Body;
2648
2649   procedure Set_Instance_Package_Body (Pkg : Iir; Decl : Iir) is
2650   begin
2651      pragma Assert (Pkg /= Null_Iir);
2652      pragma Assert (Has_Instance_Package_Body (Get_Kind (Pkg)),
2653                     "no field Instance_Package_Body");
2654      Set_Field4 (Pkg, Decl);
2655   end Set_Instance_Package_Body;
2656
2657   function Get_Need_Body (Decl : Iir_Package_Declaration) return Boolean is
2658   begin
2659      pragma Assert (Decl /= Null_Iir);
2660      pragma Assert (Has_Need_Body (Get_Kind (Decl)),
2661                     "no field Need_Body");
2662      return Get_Flag1 (Decl);
2663   end Get_Need_Body;
2664
2665   procedure Set_Need_Body (Decl : Iir_Package_Declaration; Flag : Boolean) is
2666   begin
2667      pragma Assert (Decl /= Null_Iir);
2668      pragma Assert (Has_Need_Body (Get_Kind (Decl)),
2669                     "no field Need_Body");
2670      Set_Flag1 (Decl, Flag);
2671   end Set_Need_Body;
2672
2673   function Get_Macro_Expanded_Flag (Decl : Iir) return Boolean is
2674   begin
2675      pragma Assert (Decl /= Null_Iir);
2676      pragma Assert (Has_Macro_Expanded_Flag (Get_Kind (Decl)),
2677                     "no field Macro_Expanded_Flag");
2678      return Get_Flag2 (Decl);
2679   end Get_Macro_Expanded_Flag;
2680
2681   procedure Set_Macro_Expanded_Flag (Decl : Iir; Flag : Boolean) is
2682   begin
2683      pragma Assert (Decl /= Null_Iir);
2684      pragma Assert (Has_Macro_Expanded_Flag (Get_Kind (Decl)),
2685                     "no field Macro_Expanded_Flag");
2686      Set_Flag2 (Decl, Flag);
2687   end Set_Macro_Expanded_Flag;
2688
2689   function Get_Need_Instance_Bodies (Decl : Iir) return Boolean is
2690   begin
2691      pragma Assert (Decl /= Null_Iir);
2692      pragma Assert (Has_Need_Instance_Bodies (Get_Kind (Decl)),
2693                     "no field Need_Instance_Bodies");
2694      return Get_Flag3 (Decl);
2695   end Get_Need_Instance_Bodies;
2696
2697   procedure Set_Need_Instance_Bodies (Decl : Iir; Flag : Boolean) is
2698   begin
2699      pragma Assert (Decl /= Null_Iir);
2700      pragma Assert (Has_Need_Instance_Bodies (Get_Kind (Decl)),
2701                     "no field Need_Instance_Bodies");
2702      Set_Flag3 (Decl, Flag);
2703   end Set_Need_Instance_Bodies;
2704
2705   function Get_Hierarchical_Name (Vunit : Iir) return Iir is
2706   begin
2707      pragma Assert (Vunit /= Null_Iir);
2708      pragma Assert (Has_Hierarchical_Name (Get_Kind (Vunit)),
2709                     "no field Hierarchical_Name");
2710      return Get_Field1 (Vunit);
2711   end Get_Hierarchical_Name;
2712
2713   procedure Set_Hierarchical_Name (Vunit : Iir; Name : Iir) is
2714   begin
2715      pragma Assert (Vunit /= Null_Iir);
2716      pragma Assert (Has_Hierarchical_Name (Get_Kind (Vunit)),
2717                     "no field Hierarchical_Name");
2718      Set_Field1 (Vunit, Name);
2719   end Set_Hierarchical_Name;
2720
2721   function Get_Inherit_Spec_Chain (Vunit : Iir) return Iir is
2722   begin
2723      pragma Assert (Vunit /= Null_Iir);
2724      pragma Assert (Has_Inherit_Spec_Chain (Get_Kind (Vunit)),
2725                     "no field Inherit_Spec_Chain");
2726      return Get_Field2 (Vunit);
2727   end Get_Inherit_Spec_Chain;
2728
2729   procedure Set_Inherit_Spec_Chain (Vunit : Iir; Chain : Iir) is
2730   begin
2731      pragma Assert (Vunit /= Null_Iir);
2732      pragma Assert (Has_Inherit_Spec_Chain (Get_Kind (Vunit)),
2733                     "no field Inherit_Spec_Chain");
2734      Set_Field2 (Vunit, Chain);
2735   end Set_Inherit_Spec_Chain;
2736
2737   function Get_Vunit_Item_Chain (Vunit : Iir) return Iir is
2738   begin
2739      pragma Assert (Vunit /= Null_Iir);
2740      pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)),
2741                     "no field Vunit_Item_Chain");
2742      return Get_Field6 (Vunit);
2743   end Get_Vunit_Item_Chain;
2744
2745   procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir) is
2746   begin
2747      pragma Assert (Vunit /= Null_Iir);
2748      pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)),
2749                     "no field Vunit_Item_Chain");
2750      Set_Field6 (Vunit, Chain);
2751   end Set_Vunit_Item_Chain;
2752
2753   function Get_Bound_Vunit_Chain (Unit : Iir) return Iir is
2754   begin
2755      pragma Assert (Unit /= Null_Iir);
2756      pragma Assert (Has_Bound_Vunit_Chain (Get_Kind (Unit)),
2757                     "no field Bound_Vunit_Chain");
2758      return Get_Field8 (Unit);
2759   end Get_Bound_Vunit_Chain;
2760
2761   procedure Set_Bound_Vunit_Chain (Unit : Iir; Vunit : Iir) is
2762   begin
2763      pragma Assert (Unit /= Null_Iir);
2764      pragma Assert (Has_Bound_Vunit_Chain (Get_Kind (Unit)),
2765                     "no field Bound_Vunit_Chain");
2766      Set_Field8 (Unit, Vunit);
2767   end Set_Bound_Vunit_Chain;
2768
2769   function Get_Verification_Block_Configuration (Vunit : Iir) return Iir is
2770   begin
2771      pragma Assert (Vunit /= Null_Iir);
2772      pragma Assert (Has_Verification_Block_Configuration (Get_Kind (Vunit)),
2773                     "no field Verification_Block_Configuration");
2774      return Get_Field4 (Vunit);
2775   end Get_Verification_Block_Configuration;
2776
2777   procedure Set_Verification_Block_Configuration (Vunit : Iir; Conf : Iir) is
2778   begin
2779      pragma Assert (Vunit /= Null_Iir);
2780      pragma Assert (Has_Verification_Block_Configuration (Get_Kind (Vunit)),
2781                     "no field Verification_Block_Configuration");
2782      Set_Field4 (Vunit, Conf);
2783   end Set_Verification_Block_Configuration;
2784
2785   function Get_Block_Configuration (Target : Iir) return Iir is
2786   begin
2787      pragma Assert (Target /= Null_Iir);
2788      pragma Assert (Has_Block_Configuration (Get_Kind (Target)),
2789                     "no field Block_Configuration");
2790      return Get_Field4 (Target);
2791   end Get_Block_Configuration;
2792
2793   procedure Set_Block_Configuration (Target : Iir; Block : Iir) is
2794   begin
2795      pragma Assert (Target /= Null_Iir);
2796      pragma Assert (Has_Block_Configuration (Get_Kind (Target)),
2797                     "no field Block_Configuration");
2798      Set_Field4 (Target, Block);
2799   end Set_Block_Configuration;
2800
2801   function Get_Concurrent_Statement_Chain (Target : Iir) return Iir is
2802   begin
2803      pragma Assert (Target /= Null_Iir);
2804      pragma Assert (Has_Concurrent_Statement_Chain (Get_Kind (Target)),
2805                     "no field Concurrent_Statement_Chain");
2806      return Get_Field4 (Target);
2807   end Get_Concurrent_Statement_Chain;
2808
2809   procedure Set_Concurrent_Statement_Chain (Target : Iir; First : Iir) is
2810   begin
2811      pragma Assert (Target /= Null_Iir);
2812      pragma Assert (Has_Concurrent_Statement_Chain (Get_Kind (Target)),
2813                     "no field Concurrent_Statement_Chain");
2814      Set_Field4 (Target, First);
2815   end Set_Concurrent_Statement_Chain;
2816
2817   function Get_Chain (Target : Iir) return Iir is
2818   begin
2819      pragma Assert (Target /= Null_Iir);
2820      pragma Assert (Has_Chain (Get_Kind (Target)),
2821                     "no field Chain");
2822      return Get_Field2 (Target);
2823   end Get_Chain;
2824
2825   procedure Set_Chain (Target : Iir; Chain : Iir) is
2826   begin
2827      pragma Assert (Target /= Null_Iir);
2828      pragma Assert (Has_Chain (Get_Kind (Target)),
2829                     "no field Chain");
2830      Set_Field2 (Target, Chain);
2831   end Set_Chain;
2832
2833   function Get_Port_Chain (Target : Iir) return Iir is
2834   begin
2835      pragma Assert (Target /= Null_Iir);
2836      pragma Assert (Has_Port_Chain (Get_Kind (Target)),
2837                     "no field Port_Chain");
2838      return Get_Field7 (Target);
2839   end Get_Port_Chain;
2840
2841   procedure Set_Port_Chain (Target : Iir; Chain : Iir) is
2842   begin
2843      pragma Assert (Target /= Null_Iir);
2844      pragma Assert (Has_Port_Chain (Get_Kind (Target)),
2845                     "no field Port_Chain");
2846      Set_Field7 (Target, Chain);
2847   end Set_Port_Chain;
2848
2849   function Get_Generic_Chain (Target : Iir) return Iir is
2850   begin
2851      pragma Assert (Target /= Null_Iir);
2852      pragma Assert (Has_Generic_Chain (Get_Kind (Target)),
2853                     "no field Generic_Chain");
2854      return Get_Field6 (Target);
2855   end Get_Generic_Chain;
2856
2857   procedure Set_Generic_Chain (Target : Iir; Generics : Iir) is
2858   begin
2859      pragma Assert (Target /= Null_Iir);
2860      pragma Assert (Has_Generic_Chain (Get_Kind (Target)),
2861                     "no field Generic_Chain");
2862      Set_Field6 (Target, Generics);
2863   end Set_Generic_Chain;
2864
2865   function Get_Type (Target : Iir) return Iir is
2866   begin
2867      pragma Assert (Target /= Null_Iir);
2868      pragma Assert (Has_Type (Get_Kind (Target)),
2869                     "no field Type");
2870      return Get_Field1 (Target);
2871   end Get_Type;
2872
2873   procedure Set_Type (Target : Iir; Atype : Iir) is
2874   begin
2875      pragma Assert (Target /= Null_Iir);
2876      pragma Assert (Has_Type (Get_Kind (Target)),
2877                     "no field Type");
2878      Set_Field1 (Target, Atype);
2879   end Set_Type;
2880
2881   function Get_Subtype_Indication (Target : Iir) return Iir is
2882   begin
2883      pragma Assert (Target /= Null_Iir);
2884      pragma Assert (Has_Subtype_Indication (Get_Kind (Target)),
2885                     "no field Subtype_Indication");
2886      return Get_Field5 (Target);
2887   end Get_Subtype_Indication;
2888
2889   procedure Set_Subtype_Indication (Target : Iir; Atype : Iir) is
2890   begin
2891      pragma Assert (Target /= Null_Iir);
2892      pragma Assert (Has_Subtype_Indication (Get_Kind (Target)),
2893                     "no field Subtype_Indication");
2894      Set_Field5 (Target, Atype);
2895   end Set_Subtype_Indication;
2896
2897   function Get_Discrete_Range (Target : Iir) return Iir is
2898   begin
2899      pragma Assert (Target /= Null_Iir);
2900      pragma Assert (Has_Discrete_Range (Get_Kind (Target)),
2901                     "no field Discrete_Range");
2902      return Get_Field4 (Target);
2903   end Get_Discrete_Range;
2904
2905   procedure Set_Discrete_Range (Target : Iir; Rng : Iir) is
2906   begin
2907      pragma Assert (Target /= Null_Iir);
2908      pragma Assert (Has_Discrete_Range (Get_Kind (Target)),
2909                     "no field Discrete_Range");
2910      Set_Field4 (Target, Rng);
2911   end Set_Discrete_Range;
2912
2913   function Get_Type_Definition (Decl : Iir) return Iir is
2914   begin
2915      pragma Assert (Decl /= Null_Iir);
2916      pragma Assert (Has_Type_Definition (Get_Kind (Decl)),
2917                     "no field Type_Definition");
2918      return Get_Field1 (Decl);
2919   end Get_Type_Definition;
2920
2921   procedure Set_Type_Definition (Decl : Iir; Atype : Iir) is
2922   begin
2923      pragma Assert (Decl /= Null_Iir);
2924      pragma Assert (Has_Type_Definition (Get_Kind (Decl)),
2925                     "no field Type_Definition");
2926      Set_Field1 (Decl, Atype);
2927   end Set_Type_Definition;
2928
2929   function Get_Subtype_Definition (Target : Iir) return Iir is
2930   begin
2931      pragma Assert (Target /= Null_Iir);
2932      pragma Assert (Has_Subtype_Definition (Get_Kind (Target)),
2933                     "no field Subtype_Definition");
2934      return Get_Field4 (Target);
2935   end Get_Subtype_Definition;
2936
2937   procedure Set_Subtype_Definition (Target : Iir; Def : Iir) is
2938   begin
2939      pragma Assert (Target /= Null_Iir);
2940      pragma Assert (Has_Subtype_Definition (Get_Kind (Target)),
2941                     "no field Subtype_Definition");
2942      Set_Field4 (Target, Def);
2943   end Set_Subtype_Definition;
2944
2945   function Get_Incomplete_Type_Declaration (N : Iir) return Iir is
2946   begin
2947      pragma Assert (N /= Null_Iir);
2948      pragma Assert (Has_Incomplete_Type_Declaration (Get_Kind (N)),
2949                     "no field Incomplete_Type_Declaration");
2950      return Get_Field5 (N);
2951   end Get_Incomplete_Type_Declaration;
2952
2953   procedure Set_Incomplete_Type_Declaration (N : Iir; Decl : Iir) is
2954   begin
2955      pragma Assert (N /= Null_Iir);
2956      pragma Assert (Has_Incomplete_Type_Declaration (Get_Kind (N)),
2957                     "no field Incomplete_Type_Declaration");
2958      Set_Field5 (N, Decl);
2959   end Set_Incomplete_Type_Declaration;
2960
2961   function Get_Interface_Type_Subprograms (Target : Iir) return Iir is
2962   begin
2963      pragma Assert (Target /= Null_Iir);
2964      pragma Assert (Has_Interface_Type_Subprograms (Get_Kind (Target)),
2965                     "no field Interface_Type_Subprograms");
2966      return Get_Field4 (Target);
2967   end Get_Interface_Type_Subprograms;
2968
2969   procedure Set_Interface_Type_Subprograms (Target : Iir; Subprg : Iir) is
2970   begin
2971      pragma Assert (Target /= Null_Iir);
2972      pragma Assert (Has_Interface_Type_Subprograms (Get_Kind (Target)),
2973                     "no field Interface_Type_Subprograms");
2974      Set_Field4 (Target, Subprg);
2975   end Set_Interface_Type_Subprograms;
2976
2977   function Get_Nature_Definition (Target : Iir) return Iir is
2978   begin
2979      pragma Assert (Target /= Null_Iir);
2980      pragma Assert (Has_Nature_Definition (Get_Kind (Target)),
2981                     "no field Nature_Definition");
2982      return Get_Field1 (Target);
2983   end Get_Nature_Definition;
2984
2985   procedure Set_Nature_Definition (Target : Iir; Def : Iir) is
2986   begin
2987      pragma Assert (Target /= Null_Iir);
2988      pragma Assert (Has_Nature_Definition (Get_Kind (Target)),
2989                     "no field Nature_Definition");
2990      Set_Field1 (Target, Def);
2991   end Set_Nature_Definition;
2992
2993   function Get_Nature (Target : Iir) return Iir is
2994   begin
2995      pragma Assert (Target /= Null_Iir);
2996      pragma Assert (Has_Nature (Get_Kind (Target)),
2997                     "no field Nature");
2998      return Get_Field1 (Target);
2999   end Get_Nature;
3000
3001   procedure Set_Nature (Target : Iir; Nature : Iir) is
3002   begin
3003      pragma Assert (Target /= Null_Iir);
3004      pragma Assert (Has_Nature (Get_Kind (Target)),
3005                     "no field Nature");
3006      Set_Field1 (Target, Nature);
3007   end Set_Nature;
3008
3009   function Get_Subnature_Indication (Decl : Iir) return Iir is
3010   begin
3011      pragma Assert (Decl /= Null_Iir);
3012      pragma Assert (Has_Subnature_Indication (Get_Kind (Decl)),
3013                     "no field Subnature_Indication");
3014      return Get_Field5 (Decl);
3015   end Get_Subnature_Indication;
3016
3017   procedure Set_Subnature_Indication (Decl : Iir; Sub_Nature : Iir) is
3018   begin
3019      pragma Assert (Decl /= Null_Iir);
3020      pragma Assert (Has_Subnature_Indication (Get_Kind (Decl)),
3021                     "no field Subnature_Indication");
3022      Set_Field5 (Decl, Sub_Nature);
3023   end Set_Subnature_Indication;
3024
3025   type Iir_Mode_Conv is record
3026      Flag13: Boolean;
3027      Flag14: Boolean;
3028      Flag15: Boolean;
3029   end record;
3030   pragma Pack (Iir_Mode_Conv);
3031   pragma Assert (Iir_Mode_Conv'Size = Iir_Mode'Size);
3032
3033   function Get_Mode (Target : Iir) return Iir_Mode
3034   is
3035      function To_Iir_Mode is new Ada.Unchecked_Conversion
3036         (Iir_Mode_Conv, Iir_Mode);
3037      Conv : Iir_Mode_Conv;
3038   begin
3039      pragma Assert (Target /= Null_Iir);
3040      pragma Assert (Has_Mode (Get_Kind (Target)),
3041                     "no field Mode");
3042      Conv.Flag13 := Get_Flag13 (Target);
3043      Conv.Flag14 := Get_Flag14 (Target);
3044      Conv.Flag15 := Get_Flag15 (Target);
3045      return To_Iir_Mode (Conv);
3046   end Get_Mode;
3047
3048   procedure Set_Mode (Target : Iir; Mode : Iir_Mode)
3049   is
3050      function To_Iir_Mode_Conv is new Ada.Unchecked_Conversion
3051         (Iir_Mode, Iir_Mode_Conv);
3052      Conv : Iir_Mode_Conv;
3053   begin
3054      pragma Assert (Target /= Null_Iir);
3055      pragma Assert (Has_Mode (Get_Kind (Target)),
3056                     "no field Mode");
3057      Conv := To_Iir_Mode_Conv (Mode);
3058      Set_Flag13 (Target, Conv.Flag13);
3059      Set_Flag14 (Target, Conv.Flag14);
3060      Set_Flag15 (Target, Conv.Flag15);
3061   end Set_Mode;
3062
3063   function Get_Guarded_Signal_Flag (Target : Iir) return Boolean is
3064   begin
3065      pragma Assert (Target /= Null_Iir);
3066      pragma Assert (Has_Guarded_Signal_Flag (Get_Kind (Target)),
3067                     "no field Guarded_Signal_Flag");
3068      return Get_Flag8 (Target);
3069   end Get_Guarded_Signal_Flag;
3070
3071   procedure Set_Guarded_Signal_Flag (Target : Iir; Guarded : Boolean) is
3072   begin
3073      pragma Assert (Target /= Null_Iir);
3074      pragma Assert (Has_Guarded_Signal_Flag (Get_Kind (Target)),
3075                     "no field Guarded_Signal_Flag");
3076      Set_Flag8 (Target, Guarded);
3077   end Set_Guarded_Signal_Flag;
3078
3079   function Get_Signal_Kind (Target : Iir) return Iir_Signal_Kind is
3080   begin
3081      pragma Assert (Target /= Null_Iir);
3082      pragma Assert (Has_Signal_Kind (Get_Kind (Target)),
3083                     "no field Signal_Kind");
3084      return Boolean_To_Iir_Signal_Kind (Get_Flag9 (Target));
3085   end Get_Signal_Kind;
3086
3087   procedure Set_Signal_Kind (Target : Iir; Signal_Kind : Iir_Signal_Kind) is
3088   begin
3089      pragma Assert (Target /= Null_Iir);
3090      pragma Assert (Has_Signal_Kind (Get_Kind (Target)),
3091                     "no field Signal_Kind");
3092      Set_Flag9 (Target, Iir_Signal_Kind_To_Boolean (Signal_Kind));
3093   end Set_Signal_Kind;
3094
3095   function Get_Base_Name (Target : Iir) return Iir is
3096   begin
3097      pragma Assert (Target /= Null_Iir);
3098      pragma Assert (Has_Base_Name (Get_Kind (Target)),
3099                     "no field Base_Name");
3100      return Get_Field5 (Target);
3101   end Get_Base_Name;
3102
3103   procedure Set_Base_Name (Target : Iir; Name : Iir) is
3104   begin
3105      pragma Assert (Target /= Null_Iir);
3106      pragma Assert (Has_Base_Name (Get_Kind (Target)),
3107                     "no field Base_Name");
3108      Set_Field5 (Target, Name);
3109   end Set_Base_Name;
3110
3111   function Get_Interface_Declaration_Chain (Target : Iir) return Iir is
3112   begin
3113      pragma Assert (Target /= Null_Iir);
3114      pragma Assert (Has_Interface_Declaration_Chain (Get_Kind (Target)),
3115                     "no field Interface_Declaration_Chain");
3116      return Get_Field5 (Target);
3117   end Get_Interface_Declaration_Chain;
3118
3119   procedure Set_Interface_Declaration_Chain (Target : Iir; Chain : Iir) is
3120   begin
3121      pragma Assert (Target /= Null_Iir);
3122      pragma Assert (Has_Interface_Declaration_Chain (Get_Kind (Target)),
3123                     "no field Interface_Declaration_Chain");
3124      Set_Field5 (Target, Chain);
3125   end Set_Interface_Declaration_Chain;
3126
3127   function Get_Subprogram_Specification (Target : Iir) return Iir is
3128   begin
3129      pragma Assert (Target /= Null_Iir);
3130      pragma Assert (Has_Subprogram_Specification (Get_Kind (Target)),
3131                     "no field Subprogram_Specification");
3132      return Get_Field6 (Target);
3133   end Get_Subprogram_Specification;
3134
3135   procedure Set_Subprogram_Specification (Target : Iir; Spec : Iir) is
3136   begin
3137      pragma Assert (Target /= Null_Iir);
3138      pragma Assert (Has_Subprogram_Specification (Get_Kind (Target)),
3139                     "no field Subprogram_Specification");
3140      Set_Field6 (Target, Spec);
3141   end Set_Subprogram_Specification;
3142
3143   function Get_Sequential_Statement_Chain (Target : Iir) return Iir is
3144   begin
3145      pragma Assert (Target /= Null_Iir);
3146      pragma Assert (Has_Sequential_Statement_Chain (Get_Kind (Target)),
3147                     "no field Sequential_Statement_Chain");
3148      return Get_Field4 (Target);
3149   end Get_Sequential_Statement_Chain;
3150
3151   procedure Set_Sequential_Statement_Chain (Target : Iir; Chain : Iir) is
3152   begin
3153      pragma Assert (Target /= Null_Iir);
3154      pragma Assert (Has_Sequential_Statement_Chain (Get_Kind (Target)),
3155                     "no field Sequential_Statement_Chain");
3156      Set_Field4 (Target, Chain);
3157   end Set_Sequential_Statement_Chain;
3158
3159   function Get_Simultaneous_Statement_Chain (Target : Iir) return Iir is
3160   begin
3161      pragma Assert (Target /= Null_Iir);
3162      pragma Assert (Has_Simultaneous_Statement_Chain (Get_Kind (Target)),
3163                     "no field Simultaneous_Statement_Chain");
3164      return Get_Field4 (Target);
3165   end Get_Simultaneous_Statement_Chain;
3166
3167   procedure Set_Simultaneous_Statement_Chain (Target : Iir; Chain : Iir) is
3168   begin
3169      pragma Assert (Target /= Null_Iir);
3170      pragma Assert (Has_Simultaneous_Statement_Chain (Get_Kind (Target)),
3171                     "no field Simultaneous_Statement_Chain");
3172      Set_Field4 (Target, Chain);
3173   end Set_Simultaneous_Statement_Chain;
3174
3175   function Get_Subprogram_Body (Target : Iir) return Iir is
3176   begin
3177      pragma Assert (Target /= Null_Iir);
3178      pragma Assert (Has_Subprogram_Body (Get_Kind (Target)),
3179                     "no field Subprogram_Body");
3180      return Get_Field9 (Target);
3181   end Get_Subprogram_Body;
3182
3183   procedure Set_Subprogram_Body (Target : Iir; A_Body : Iir) is
3184   begin
3185      pragma Assert (Target /= Null_Iir);
3186      pragma Assert (Has_Subprogram_Body (Get_Kind (Target)),
3187                     "no field Subprogram_Body");
3188      Set_Field9 (Target, A_Body);
3189   end Set_Subprogram_Body;
3190
3191   function Get_Overload_Number (Target : Iir) return Iir_Int32 is
3192   begin
3193      pragma Assert (Target /= Null_Iir);
3194      pragma Assert (Has_Overload_Number (Get_Kind (Target)),
3195                     "no field Overload_Number");
3196      return Iir_Int32'Val (Get_Field12 (Target));
3197   end Get_Overload_Number;
3198
3199   procedure Set_Overload_Number (Target : Iir; Val : Iir_Int32) is
3200   begin
3201      pragma Assert (Target /= Null_Iir);
3202      pragma Assert (Has_Overload_Number (Get_Kind (Target)),
3203                     "no field Overload_Number");
3204      Set_Field12 (Target, Iir_Int32'Pos (Val));
3205   end Set_Overload_Number;
3206
3207   function Get_Subprogram_Depth (Target : Iir) return Iir_Int32 is
3208   begin
3209      pragma Assert (Target /= Null_Iir);
3210      pragma Assert (Has_Subprogram_Depth (Get_Kind (Target)),
3211                     "no field Subprogram_Depth");
3212      return Iir_Int32'Val (Get_Field10 (Target));
3213   end Get_Subprogram_Depth;
3214
3215   procedure Set_Subprogram_Depth (Target : Iir; Depth : Iir_Int32) is
3216   begin
3217      pragma Assert (Target /= Null_Iir);
3218      pragma Assert (Has_Subprogram_Depth (Get_Kind (Target)),
3219                     "no field Subprogram_Depth");
3220      Set_Field10 (Target, Iir_Int32'Pos (Depth));
3221   end Set_Subprogram_Depth;
3222
3223   function Get_Subprogram_Hash (Target : Iir) return Iir_Int32 is
3224   begin
3225      pragma Assert (Target /= Null_Iir);
3226      pragma Assert (Has_Subprogram_Hash (Get_Kind (Target)),
3227                     "no field Subprogram_Hash");
3228      return Iir_Int32'Val (Get_Field4 (Target));
3229   end Get_Subprogram_Hash;
3230
3231   procedure Set_Subprogram_Hash (Target : Iir; Val : Iir_Int32) is
3232   begin
3233      pragma Assert (Target /= Null_Iir);
3234      pragma Assert (Has_Subprogram_Hash (Get_Kind (Target)),
3235                     "no field Subprogram_Hash");
3236      Set_Field4 (Target, Iir_Int32'Pos (Val));
3237   end Set_Subprogram_Hash;
3238
3239   function Get_Impure_Depth (Target : Iir) return Iir_Int32 is
3240   begin
3241      pragma Assert (Target /= Null_Iir);
3242      pragma Assert (Has_Impure_Depth (Get_Kind (Target)),
3243                     "no field Impure_Depth");
3244      return Iir_To_Iir_Int32 (Get_Field3 (Target));
3245   end Get_Impure_Depth;
3246
3247   procedure Set_Impure_Depth (Target : Iir; Depth : Iir_Int32) is
3248   begin
3249      pragma Assert (Target /= Null_Iir);
3250      pragma Assert (Has_Impure_Depth (Get_Kind (Target)),
3251                     "no field Impure_Depth");
3252      Set_Field3 (Target, Iir_Int32_To_Iir (Depth));
3253   end Set_Impure_Depth;
3254
3255   function Get_Return_Type (Target : Iir) return Iir is
3256   begin
3257      pragma Assert (Target /= Null_Iir);
3258      pragma Assert (Has_Return_Type (Get_Kind (Target)),
3259                     "no field Return_Type");
3260      return Get_Field1 (Target);
3261   end Get_Return_Type;
3262
3263   procedure Set_Return_Type (Target : Iir; Decl : Iir) is
3264   begin
3265      pragma Assert (Target /= Null_Iir);
3266      pragma Assert (Has_Return_Type (Get_Kind (Target)),
3267                     "no field Return_Type");
3268      Set_Field1 (Target, Decl);
3269   end Set_Return_Type;
3270
3271   function Get_Implicit_Definition (D : Iir) return Iir_Predefined_Functions
3272   is
3273   begin
3274      pragma Assert (D /= Null_Iir);
3275      pragma Assert (Has_Implicit_Definition (Get_Kind (D)),
3276                     "no field Implicit_Definition");
3277      return Iir_Predefined_Functions'Val (Get_Field7 (D));
3278   end Get_Implicit_Definition;
3279
3280   procedure Set_Implicit_Definition (D : Iir; Def : Iir_Predefined_Functions)
3281   is
3282   begin
3283      pragma Assert (D /= Null_Iir);
3284      pragma Assert (Has_Implicit_Definition (Get_Kind (D)),
3285                     "no field Implicit_Definition");
3286      Set_Field7 (D, Iir_Predefined_Functions'Pos (Def));
3287   end Set_Implicit_Definition;
3288
3289   function Get_Uninstantiated_Subprogram_Name (N : Iir) return Iir is
3290   begin
3291      pragma Assert (N /= Null_Iir);
3292      pragma Assert (Has_Uninstantiated_Subprogram_Name (Get_Kind (N)),
3293                     "no field Uninstantiated_Subprogram_Name");
3294      return Get_Field7 (N);
3295   end Get_Uninstantiated_Subprogram_Name;
3296
3297   procedure Set_Uninstantiated_Subprogram_Name (N : Iir; Name : Iir) is
3298   begin
3299      pragma Assert (N /= Null_Iir);
3300      pragma Assert (Has_Uninstantiated_Subprogram_Name (Get_Kind (N)),
3301                     "no field Uninstantiated_Subprogram_Name");
3302      Set_Field7 (N, Name);
3303   end Set_Uninstantiated_Subprogram_Name;
3304
3305   function Get_Default_Value (Target : Iir) return Iir is
3306   begin
3307      pragma Assert (Target /= Null_Iir);
3308      pragma Assert (Has_Default_Value (Get_Kind (Target)),
3309                     "no field Default_Value");
3310      return Get_Field4 (Target);
3311   end Get_Default_Value;
3312
3313   procedure Set_Default_Value (Target : Iir; Value : Iir) is
3314   begin
3315      pragma Assert (Target /= Null_Iir);
3316      pragma Assert (Has_Default_Value (Get_Kind (Target)),
3317                     "no field Default_Value");
3318      Set_Field4 (Target, Value);
3319   end Set_Default_Value;
3320
3321   function Get_Deferred_Declaration (Target : Iir) return Iir is
3322   begin
3323      pragma Assert (Target /= Null_Iir);
3324      pragma Assert (Has_Deferred_Declaration (Get_Kind (Target)),
3325                     "no field Deferred_Declaration");
3326      return Get_Field6 (Target);
3327   end Get_Deferred_Declaration;
3328
3329   procedure Set_Deferred_Declaration (Target : Iir; Decl : Iir) is
3330   begin
3331      pragma Assert (Target /= Null_Iir);
3332      pragma Assert (Has_Deferred_Declaration (Get_Kind (Target)),
3333                     "no field Deferred_Declaration");
3334      Set_Field6 (Target, Decl);
3335   end Set_Deferred_Declaration;
3336
3337   function Get_Deferred_Declaration_Flag (Target : Iir) return Boolean is
3338   begin
3339      pragma Assert (Target /= Null_Iir);
3340      pragma Assert (Has_Deferred_Declaration_Flag (Get_Kind (Target)),
3341                     "no field Deferred_Declaration_Flag");
3342      return Get_Flag1 (Target);
3343   end Get_Deferred_Declaration_Flag;
3344
3345   procedure Set_Deferred_Declaration_Flag (Target : Iir; Flag : Boolean) is
3346   begin
3347      pragma Assert (Target /= Null_Iir);
3348      pragma Assert (Has_Deferred_Declaration_Flag (Get_Kind (Target)),
3349                     "no field Deferred_Declaration_Flag");
3350      Set_Flag1 (Target, Flag);
3351   end Set_Deferred_Declaration_Flag;
3352
3353   function Get_Shared_Flag (Target : Iir) return Boolean is
3354   begin
3355      pragma Assert (Target /= Null_Iir);
3356      pragma Assert (Has_Shared_Flag (Get_Kind (Target)),
3357                     "no field Shared_Flag");
3358      return Get_Flag2 (Target);
3359   end Get_Shared_Flag;
3360
3361   procedure Set_Shared_Flag (Target : Iir; Shared : Boolean) is
3362   begin
3363      pragma Assert (Target /= Null_Iir);
3364      pragma Assert (Has_Shared_Flag (Get_Kind (Target)),
3365                     "no field Shared_Flag");
3366      Set_Flag2 (Target, Shared);
3367   end Set_Shared_Flag;
3368
3369   function Get_Design_Unit (Target : Iir) return Iir is
3370   begin
3371      pragma Assert (Target /= Null_Iir);
3372      pragma Assert (Has_Design_Unit (Get_Kind (Target)),
3373                     "no field Design_Unit");
3374      return Get_Field0 (Target);
3375   end Get_Design_Unit;
3376
3377   procedure Set_Design_Unit (Target : Iir; Unit : Iir) is
3378   begin
3379      pragma Assert (Target /= Null_Iir);
3380      pragma Assert (Has_Design_Unit (Get_Kind (Target)),
3381                     "no field Design_Unit");
3382      Set_Field0 (Target, Unit);
3383   end Set_Design_Unit;
3384
3385   function Get_Block_Statement (Target : Iir) return Iir is
3386   begin
3387      pragma Assert (Target /= Null_Iir);
3388      pragma Assert (Has_Block_Statement (Get_Kind (Target)),
3389                     "no field Block_Statement");
3390      return Get_Field5 (Target);
3391   end Get_Block_Statement;
3392
3393   procedure Set_Block_Statement (Target : Iir; Block : Iir) is
3394   begin
3395      pragma Assert (Target /= Null_Iir);
3396      pragma Assert (Has_Block_Statement (Get_Kind (Target)),
3397                     "no field Block_Statement");
3398      Set_Field5 (Target, Block);
3399   end Set_Block_Statement;
3400
3401   function Get_Signal_Driver (Target : Iir_Signal_Declaration) return Iir is
3402   begin
3403      pragma Assert (Target /= Null_Iir);
3404      pragma Assert (Has_Signal_Driver (Get_Kind (Target)),
3405                     "no field Signal_Driver");
3406      return Get_Field7 (Target);
3407   end Get_Signal_Driver;
3408
3409   procedure Set_Signal_Driver (Target : Iir_Signal_Declaration; Driver : Iir)
3410   is
3411   begin
3412      pragma Assert (Target /= Null_Iir);
3413      pragma Assert (Has_Signal_Driver (Get_Kind (Target)),
3414                     "no field Signal_Driver");
3415      Set_Field7 (Target, Driver);
3416   end Set_Signal_Driver;
3417
3418   function Get_Declaration_Chain (Target : Iir) return Iir is
3419   begin
3420      pragma Assert (Target /= Null_Iir);
3421      pragma Assert (Has_Declaration_Chain (Get_Kind (Target)),
3422                     "no field Declaration_Chain");
3423      return Get_Field1 (Target);
3424   end Get_Declaration_Chain;
3425
3426   procedure Set_Declaration_Chain (Target : Iir; Decls : Iir) is
3427   begin
3428      pragma Assert (Target /= Null_Iir);
3429      pragma Assert (Has_Declaration_Chain (Get_Kind (Target)),
3430                     "no field Declaration_Chain");
3431      Set_Field1 (Target, Decls);
3432   end Set_Declaration_Chain;
3433
3434   function Get_File_Logical_Name (Target : Iir_File_Declaration) return Iir
3435   is
3436   begin
3437      pragma Assert (Target /= Null_Iir);
3438      pragma Assert (Has_File_Logical_Name (Get_Kind (Target)),
3439                     "no field File_Logical_Name");
3440      return Get_Field6 (Target);
3441   end Get_File_Logical_Name;
3442
3443   procedure Set_File_Logical_Name (Target : Iir_File_Declaration; Name : Iir)
3444   is
3445   begin
3446      pragma Assert (Target /= Null_Iir);
3447      pragma Assert (Has_File_Logical_Name (Get_Kind (Target)),
3448                     "no field File_Logical_Name");
3449      Set_Field6 (Target, Name);
3450   end Set_File_Logical_Name;
3451
3452   function Get_File_Open_Kind (Target : Iir_File_Declaration) return Iir is
3453   begin
3454      pragma Assert (Target /= Null_Iir);
3455      pragma Assert (Has_File_Open_Kind (Get_Kind (Target)),
3456                     "no field File_Open_Kind");
3457      return Get_Field7 (Target);
3458   end Get_File_Open_Kind;
3459
3460   procedure Set_File_Open_Kind (Target : Iir_File_Declaration; Kind : Iir) is
3461   begin
3462      pragma Assert (Target /= Null_Iir);
3463      pragma Assert (Has_File_Open_Kind (Get_Kind (Target)),
3464                     "no field File_Open_Kind");
3465      Set_Field7 (Target, Kind);
3466   end Set_File_Open_Kind;
3467
3468   function Get_Element_Position (Target : Iir) return Iir_Index32 is
3469   begin
3470      pragma Assert (Target /= Null_Iir);
3471      pragma Assert (Has_Element_Position (Get_Kind (Target)),
3472                     "no field Element_Position");
3473      return Iir_Index32'Val (Get_Field4 (Target));
3474   end Get_Element_Position;
3475
3476   procedure Set_Element_Position (Target : Iir; Pos : Iir_Index32) is
3477   begin
3478      pragma Assert (Target /= Null_Iir);
3479      pragma Assert (Has_Element_Position (Get_Kind (Target)),
3480                     "no field Element_Position");
3481      Set_Field4 (Target, Iir_Index32'Pos (Pos));
3482   end Set_Element_Position;
3483
3484   function Get_Use_Clause_Chain (Target : Iir) return Iir is
3485   begin
3486      pragma Assert (Target /= Null_Iir);
3487      pragma Assert (Has_Use_Clause_Chain (Get_Kind (Target)),
3488                     "no field Use_Clause_Chain");
3489      return Get_Field3 (Target);
3490   end Get_Use_Clause_Chain;
3491
3492   procedure Set_Use_Clause_Chain (Target : Iir; Chain : Iir) is
3493   begin
3494      pragma Assert (Target /= Null_Iir);
3495      pragma Assert (Has_Use_Clause_Chain (Get_Kind (Target)),
3496                     "no field Use_Clause_Chain");
3497      Set_Field3 (Target, Chain);
3498   end Set_Use_Clause_Chain;
3499
3500   function Get_Context_Reference_Chain (Target : Iir) return Iir is
3501   begin
3502      pragma Assert (Target /= Null_Iir);
3503      pragma Assert (Has_Context_Reference_Chain (Get_Kind (Target)),
3504                     "no field Context_Reference_Chain");
3505      return Get_Field3 (Target);
3506   end Get_Context_Reference_Chain;
3507
3508   procedure Set_Context_Reference_Chain (Target : Iir; Chain : Iir) is
3509   begin
3510      pragma Assert (Target /= Null_Iir);
3511      pragma Assert (Has_Context_Reference_Chain (Get_Kind (Target)),
3512                     "no field Context_Reference_Chain");
3513      Set_Field3 (Target, Chain);
3514   end Set_Context_Reference_Chain;
3515
3516   function Get_Selected_Name (Target : Iir) return Iir is
3517   begin
3518      pragma Assert (Target /= Null_Iir);
3519      pragma Assert (Has_Selected_Name (Get_Kind (Target)),
3520                     "no field Selected_Name");
3521      return Get_Field1 (Target);
3522   end Get_Selected_Name;
3523
3524   procedure Set_Selected_Name (Target : Iir; Name : Iir) is
3525   begin
3526      pragma Assert (Target /= Null_Iir);
3527      pragma Assert (Has_Selected_Name (Get_Kind (Target)),
3528                     "no field Selected_Name");
3529      Set_Field1 (Target, Name);
3530   end Set_Selected_Name;
3531
3532   function Get_Type_Declarator (Def : Iir) return Iir is
3533   begin
3534      pragma Assert (Def /= Null_Iir);
3535      pragma Assert (Has_Type_Declarator (Get_Kind (Def)),
3536                     "no field Type_Declarator");
3537      return Get_Field3 (Def);
3538   end Get_Type_Declarator;
3539
3540   procedure Set_Type_Declarator (Def : Iir; Decl : Iir) is
3541   begin
3542      pragma Assert (Def /= Null_Iir);
3543      pragma Assert (Has_Type_Declarator (Get_Kind (Def)),
3544                     "no field Type_Declarator");
3545      Set_Field3 (Def, Decl);
3546   end Set_Type_Declarator;
3547
3548   function Get_Complete_Type_Definition (N : Iir) return Iir is
3549   begin
3550      pragma Assert (N /= Null_Iir);
3551      pragma Assert (Has_Complete_Type_Definition (Get_Kind (N)),
3552                     "no field Complete_Type_Definition");
3553      return Get_Field5 (N);
3554   end Get_Complete_Type_Definition;
3555
3556   procedure Set_Complete_Type_Definition (N : Iir; Def : Iir) is
3557   begin
3558      pragma Assert (N /= Null_Iir);
3559      pragma Assert (Has_Complete_Type_Definition (Get_Kind (N)),
3560                     "no field Complete_Type_Definition");
3561      Set_Field5 (N, Def);
3562   end Set_Complete_Type_Definition;
3563
3564   function Get_Incomplete_Type_Ref_Chain (N : Iir) return Iir is
3565   begin
3566      pragma Assert (N /= Null_Iir);
3567      pragma Assert (Has_Incomplete_Type_Ref_Chain (Get_Kind (N)),
3568                     "no field Incomplete_Type_Ref_Chain");
3569      return Get_Field0 (N);
3570   end Get_Incomplete_Type_Ref_Chain;
3571
3572   procedure Set_Incomplete_Type_Ref_Chain (N : Iir; Def : Iir) is
3573   begin
3574      pragma Assert (N /= Null_Iir);
3575      pragma Assert (Has_Incomplete_Type_Ref_Chain (Get_Kind (N)),
3576                     "no field Incomplete_Type_Ref_Chain");
3577      Set_Field0 (N, Def);
3578   end Set_Incomplete_Type_Ref_Chain;
3579
3580   function Get_Associated_Type (Def : Iir) return Iir is
3581   begin
3582      pragma Assert (Def /= Null_Iir);
3583      pragma Assert (Has_Associated_Type (Get_Kind (Def)),
3584                     "no field Associated_Type");
3585      return Get_Field5 (Def);
3586   end Get_Associated_Type;
3587
3588   procedure Set_Associated_Type (Def : Iir; Atype : Iir) is
3589   begin
3590      pragma Assert (Def /= Null_Iir);
3591      pragma Assert (Has_Associated_Type (Get_Kind (Def)),
3592                     "no field Associated_Type");
3593      Set_Field5 (Def, Atype);
3594   end Set_Associated_Type;
3595
3596   function Get_Enumeration_Literal_List (Target : Iir) return Iir_Flist is
3597   begin
3598      pragma Assert (Target /= Null_Iir);
3599      pragma Assert (Has_Enumeration_Literal_List (Get_Kind (Target)),
3600                     "no field Enumeration_Literal_List");
3601      return Iir_To_Iir_Flist (Get_Field2 (Target));
3602   end Get_Enumeration_Literal_List;
3603
3604   procedure Set_Enumeration_Literal_List (Target : Iir; List : Iir_Flist) is
3605   begin
3606      pragma Assert (Target /= Null_Iir);
3607      pragma Assert (Has_Enumeration_Literal_List (Get_Kind (Target)),
3608                     "no field Enumeration_Literal_List");
3609      Set_Field2 (Target, Iir_Flist_To_Iir (List));
3610   end Set_Enumeration_Literal_List;
3611
3612   function Get_Entity_Class_Entry_Chain (Target : Iir) return Iir is
3613   begin
3614      pragma Assert (Target /= Null_Iir);
3615      pragma Assert (Has_Entity_Class_Entry_Chain (Get_Kind (Target)),
3616                     "no field Entity_Class_Entry_Chain");
3617      return Get_Field1 (Target);
3618   end Get_Entity_Class_Entry_Chain;
3619
3620   procedure Set_Entity_Class_Entry_Chain (Target : Iir; Chain : Iir) is
3621   begin
3622      pragma Assert (Target /= Null_Iir);
3623      pragma Assert (Has_Entity_Class_Entry_Chain (Get_Kind (Target)),
3624                     "no field Entity_Class_Entry_Chain");
3625      Set_Field1 (Target, Chain);
3626   end Set_Entity_Class_Entry_Chain;
3627
3628   function Get_Group_Constituent_List (Group : Iir) return Iir_Flist is
3629   begin
3630      pragma Assert (Group /= Null_Iir);
3631      pragma Assert (Has_Group_Constituent_List (Get_Kind (Group)),
3632                     "no field Group_Constituent_List");
3633      return Iir_To_Iir_Flist (Get_Field1 (Group));
3634   end Get_Group_Constituent_List;
3635
3636   procedure Set_Group_Constituent_List (Group : Iir; List : Iir_Flist) is
3637   begin
3638      pragma Assert (Group /= Null_Iir);
3639      pragma Assert (Has_Group_Constituent_List (Get_Kind (Group)),
3640                     "no field Group_Constituent_List");
3641      Set_Field1 (Group, Iir_Flist_To_Iir (List));
3642   end Set_Group_Constituent_List;
3643
3644   function Get_Unit_Chain (Target : Iir) return Iir is
3645   begin
3646      pragma Assert (Target /= Null_Iir);
3647      pragma Assert (Has_Unit_Chain (Get_Kind (Target)),
3648                     "no field Unit_Chain");
3649      return Get_Field2 (Target);
3650   end Get_Unit_Chain;
3651
3652   procedure Set_Unit_Chain (Target : Iir; Chain : Iir) is
3653   begin
3654      pragma Assert (Target /= Null_Iir);
3655      pragma Assert (Has_Unit_Chain (Get_Kind (Target)),
3656                     "no field Unit_Chain");
3657      Set_Field2 (Target, Chain);
3658   end Set_Unit_Chain;
3659
3660   function Get_Primary_Unit (Target : Iir) return Iir is
3661   begin
3662      pragma Assert (Target /= Null_Iir);
3663      pragma Assert (Has_Primary_Unit (Get_Kind (Target)),
3664                     "no field Primary_Unit");
3665      return Get_Field2 (Target);
3666   end Get_Primary_Unit;
3667
3668   procedure Set_Primary_Unit (Target : Iir; Unit : Iir) is
3669   begin
3670      pragma Assert (Target /= Null_Iir);
3671      pragma Assert (Has_Primary_Unit (Get_Kind (Target)),
3672                     "no field Primary_Unit");
3673      Set_Field2 (Target, Unit);
3674   end Set_Primary_Unit;
3675
3676   function Get_Identifier (Target : Iir) return Name_Id is
3677   begin
3678      pragma Assert (Target /= Null_Iir);
3679      pragma Assert (Has_Identifier (Get_Kind (Target)),
3680                     "no field Identifier");
3681      return Iir_To_Name_Id (Get_Field3 (Target));
3682   end Get_Identifier;
3683
3684   procedure Set_Identifier (Target : Iir; Identifier : Name_Id) is
3685   begin
3686      pragma Assert (Target /= Null_Iir);
3687      pragma Assert (Has_Identifier (Get_Kind (Target)),
3688                     "no field Identifier");
3689      Set_Field3 (Target, Name_Id_To_Iir (Identifier));
3690   end Set_Identifier;
3691
3692   function Get_Label (Target : Iir) return Name_Id is
3693   begin
3694      pragma Assert (Target /= Null_Iir);
3695      pragma Assert (Has_Label (Get_Kind (Target)),
3696                     "no field Label");
3697      return Iir_To_Name_Id (Get_Field3 (Target));
3698   end Get_Label;
3699
3700   procedure Set_Label (Target : Iir; Label : Name_Id) is
3701   begin
3702      pragma Assert (Target /= Null_Iir);
3703      pragma Assert (Has_Label (Get_Kind (Target)),
3704                     "no field Label");
3705      Set_Field3 (Target, Name_Id_To_Iir (Label));
3706   end Set_Label;
3707
3708   function Get_Visible_Flag (Target : Iir) return Boolean is
3709   begin
3710      pragma Assert (Target /= Null_Iir);
3711      pragma Assert (Has_Visible_Flag (Get_Kind (Target)),
3712                     "no field Visible_Flag");
3713      return Get_Flag4 (Target);
3714   end Get_Visible_Flag;
3715
3716   procedure Set_Visible_Flag (Target : Iir; Flag : Boolean) is
3717   begin
3718      pragma Assert (Target /= Null_Iir);
3719      pragma Assert (Has_Visible_Flag (Get_Kind (Target)),
3720                     "no field Visible_Flag");
3721      Set_Flag4 (Target, Flag);
3722   end Set_Visible_Flag;
3723
3724   function Get_Range_Constraint (Target : Iir) return Iir is
3725   begin
3726      pragma Assert (Target /= Null_Iir);
3727      pragma Assert (Has_Range_Constraint (Get_Kind (Target)),
3728                     "no field Range_Constraint");
3729      return Get_Field1 (Target);
3730   end Get_Range_Constraint;
3731
3732   procedure Set_Range_Constraint (Target : Iir; Constraint : Iir) is
3733   begin
3734      pragma Assert (Target /= Null_Iir);
3735      pragma Assert (Has_Range_Constraint (Get_Kind (Target)),
3736                     "no field Range_Constraint");
3737      Set_Field1 (Target, Constraint);
3738   end Set_Range_Constraint;
3739
3740   function Get_Direction (Decl : Iir) return Direction_Type is
3741   begin
3742      pragma Assert (Decl /= Null_Iir);
3743      pragma Assert (Has_Direction (Get_Kind (Decl)),
3744                     "no field Direction");
3745      return Boolean_To_Direction_Type (Get_Flag1 (Decl));
3746   end Get_Direction;
3747
3748   procedure Set_Direction (Decl : Iir; Dir : Direction_Type) is
3749   begin
3750      pragma Assert (Decl /= Null_Iir);
3751      pragma Assert (Has_Direction (Get_Kind (Decl)),
3752                     "no field Direction");
3753      Set_Flag1 (Decl, Direction_Type_To_Boolean (Dir));
3754   end Set_Direction;
3755
3756   function Get_Left_Limit (Decl : Iir_Range_Expression) return Iir is
3757   begin
3758      pragma Assert (Decl /= Null_Iir);
3759      pragma Assert (Has_Left_Limit (Get_Kind (Decl)),
3760                     "no field Left_Limit");
3761      return Get_Field4 (Decl);
3762   end Get_Left_Limit;
3763
3764   procedure Set_Left_Limit (Decl : Iir_Range_Expression; Limit : Iir) is
3765   begin
3766      pragma Assert (Decl /= Null_Iir);
3767      pragma Assert (Has_Left_Limit (Get_Kind (Decl)),
3768                     "no field Left_Limit");
3769      Set_Field4 (Decl, Limit);
3770   end Set_Left_Limit;
3771
3772   function Get_Right_Limit (Decl : Iir_Range_Expression) return Iir is
3773   begin
3774      pragma Assert (Decl /= Null_Iir);
3775      pragma Assert (Has_Right_Limit (Get_Kind (Decl)),
3776                     "no field Right_Limit");
3777      return Get_Field5 (Decl);
3778   end Get_Right_Limit;
3779
3780   procedure Set_Right_Limit (Decl : Iir_Range_Expression; Limit : Iir) is
3781   begin
3782      pragma Assert (Decl /= Null_Iir);
3783      pragma Assert (Has_Right_Limit (Get_Kind (Decl)),
3784                     "no field Right_Limit");
3785      Set_Field5 (Decl, Limit);
3786   end Set_Right_Limit;
3787
3788   function Get_Left_Limit_Expr (Decl : Iir_Range_Expression) return Iir is
3789   begin
3790      pragma Assert (Decl /= Null_Iir);
3791      pragma Assert (Has_Left_Limit_Expr (Get_Kind (Decl)),
3792                     "no field Left_Limit_Expr");
3793      return Get_Field2 (Decl);
3794   end Get_Left_Limit_Expr;
3795
3796   procedure Set_Left_Limit_Expr (Decl : Iir_Range_Expression; Limit : Iir) is
3797   begin
3798      pragma Assert (Decl /= Null_Iir);
3799      pragma Assert (Has_Left_Limit_Expr (Get_Kind (Decl)),
3800                     "no field Left_Limit_Expr");
3801      Set_Field2 (Decl, Limit);
3802   end Set_Left_Limit_Expr;
3803
3804   function Get_Right_Limit_Expr (Decl : Iir_Range_Expression) return Iir is
3805   begin
3806      pragma Assert (Decl /= Null_Iir);
3807      pragma Assert (Has_Right_Limit_Expr (Get_Kind (Decl)),
3808                     "no field Right_Limit_Expr");
3809      return Get_Field3 (Decl);
3810   end Get_Right_Limit_Expr;
3811
3812   procedure Set_Right_Limit_Expr (Decl : Iir_Range_Expression; Limit : Iir)
3813   is
3814   begin
3815      pragma Assert (Decl /= Null_Iir);
3816      pragma Assert (Has_Right_Limit_Expr (Get_Kind (Decl)),
3817                     "no field Right_Limit_Expr");
3818      Set_Field3 (Decl, Limit);
3819   end Set_Right_Limit_Expr;
3820
3821   function Get_Parent_Type (Decl : Iir) return Iir is
3822   begin
3823      pragma Assert (Decl /= Null_Iir);
3824      pragma Assert (Has_Parent_Type (Get_Kind (Decl)),
3825                     "no field Parent_Type");
3826      return Get_Field4 (Decl);
3827   end Get_Parent_Type;
3828
3829   procedure Set_Parent_Type (Decl : Iir; Base_Type : Iir) is
3830   begin
3831      pragma Assert (Decl /= Null_Iir);
3832      pragma Assert (Has_Parent_Type (Get_Kind (Decl)),
3833                     "no field Parent_Type");
3834      Set_Field4 (Decl, Base_Type);
3835   end Set_Parent_Type;
3836
3837   function Get_Simple_Nature (Def : Iir) return Iir is
3838   begin
3839      pragma Assert (Def /= Null_Iir);
3840      pragma Assert (Has_Simple_Nature (Get_Kind (Def)),
3841                     "no field Simple_Nature");
3842      return Get_Field7 (Def);
3843   end Get_Simple_Nature;
3844
3845   procedure Set_Simple_Nature (Def : Iir; Nature : Iir) is
3846   begin
3847      pragma Assert (Def /= Null_Iir);
3848      pragma Assert (Has_Simple_Nature (Get_Kind (Def)),
3849                     "no field Simple_Nature");
3850      Set_Field7 (Def, Nature);
3851   end Set_Simple_Nature;
3852
3853   function Get_Base_Nature (Decl : Iir) return Iir is
3854   begin
3855      pragma Assert (Decl /= Null_Iir);
3856      pragma Assert (Has_Base_Nature (Get_Kind (Decl)),
3857                     "no field Base_Nature");
3858      return Get_Field4 (Decl);
3859   end Get_Base_Nature;
3860
3861   procedure Set_Base_Nature (Decl : Iir; Base_Nature : Iir) is
3862   begin
3863      pragma Assert (Decl /= Null_Iir);
3864      pragma Assert (Has_Base_Nature (Get_Kind (Decl)),
3865                     "no field Base_Nature");
3866      Set_Field4 (Decl, Base_Nature);
3867   end Set_Base_Nature;
3868
3869   function Get_Resolution_Indication (Decl : Iir) return Iir is
3870   begin
3871      pragma Assert (Decl /= Null_Iir);
3872      pragma Assert (Has_Resolution_Indication (Get_Kind (Decl)),
3873                     "no field Resolution_Indication");
3874      return Get_Field5 (Decl);
3875   end Get_Resolution_Indication;
3876
3877   procedure Set_Resolution_Indication (Decl : Iir; Ind : Iir) is
3878   begin
3879      pragma Assert (Decl /= Null_Iir);
3880      pragma Assert (Has_Resolution_Indication (Get_Kind (Decl)),
3881                     "no field Resolution_Indication");
3882      Set_Field5 (Decl, Ind);
3883   end Set_Resolution_Indication;
3884
3885   function Get_Record_Element_Resolution_Chain (Res : Iir) return Iir is
3886   begin
3887      pragma Assert (Res /= Null_Iir);
3888      pragma Assert (Has_Record_Element_Resolution_Chain (Get_Kind (Res)),
3889                     "no field Record_Element_Resolution_Chain");
3890      return Get_Field1 (Res);
3891   end Get_Record_Element_Resolution_Chain;
3892
3893   procedure Set_Record_Element_Resolution_Chain (Res : Iir; Chain : Iir) is
3894   begin
3895      pragma Assert (Res /= Null_Iir);
3896      pragma Assert (Has_Record_Element_Resolution_Chain (Get_Kind (Res)),
3897                     "no field Record_Element_Resolution_Chain");
3898      Set_Field1 (Res, Chain);
3899   end Set_Record_Element_Resolution_Chain;
3900
3901   function Get_Tolerance (Def : Iir) return Iir is
3902   begin
3903      pragma Assert (Def /= Null_Iir);
3904      pragma Assert (Has_Tolerance (Get_Kind (Def)),
3905                     "no field Tolerance");
3906      return Get_Field7 (Def);
3907   end Get_Tolerance;
3908
3909   procedure Set_Tolerance (Def : Iir; Tol : Iir) is
3910   begin
3911      pragma Assert (Def /= Null_Iir);
3912      pragma Assert (Has_Tolerance (Get_Kind (Def)),
3913                     "no field Tolerance");
3914      Set_Field7 (Def, Tol);
3915   end Set_Tolerance;
3916
3917   function Get_Plus_Terminal_Name (Def : Iir) return Iir is
3918   begin
3919      pragma Assert (Def /= Null_Iir);
3920      pragma Assert (Has_Plus_Terminal_Name (Get_Kind (Def)),
3921                     "no field Plus_Terminal_Name");
3922      return Get_Field8 (Def);
3923   end Get_Plus_Terminal_Name;
3924
3925   procedure Set_Plus_Terminal_Name (Def : Iir; Name : Iir) is
3926   begin
3927      pragma Assert (Def /= Null_Iir);
3928      pragma Assert (Has_Plus_Terminal_Name (Get_Kind (Def)),
3929                     "no field Plus_Terminal_Name");
3930      Set_Field8 (Def, Name);
3931   end Set_Plus_Terminal_Name;
3932
3933   function Get_Minus_Terminal_Name (Def : Iir) return Iir is
3934   begin
3935      pragma Assert (Def /= Null_Iir);
3936      pragma Assert (Has_Minus_Terminal_Name (Get_Kind (Def)),
3937                     "no field Minus_Terminal_Name");
3938      return Get_Field9 (Def);
3939   end Get_Minus_Terminal_Name;
3940
3941   procedure Set_Minus_Terminal_Name (Def : Iir; Name : Iir) is
3942   begin
3943      pragma Assert (Def /= Null_Iir);
3944      pragma Assert (Has_Minus_Terminal_Name (Get_Kind (Def)),
3945                     "no field Minus_Terminal_Name");
3946      Set_Field9 (Def, Name);
3947   end Set_Minus_Terminal_Name;
3948
3949   function Get_Plus_Terminal (Def : Iir) return Iir is
3950   begin
3951      pragma Assert (Def /= Null_Iir);
3952      pragma Assert (Has_Plus_Terminal (Get_Kind (Def)),
3953                     "no field Plus_Terminal");
3954      return Get_Field10 (Def);
3955   end Get_Plus_Terminal;
3956
3957   procedure Set_Plus_Terminal (Def : Iir; Terminal : Iir) is
3958   begin
3959      pragma Assert (Def /= Null_Iir);
3960      pragma Assert (Has_Plus_Terminal (Get_Kind (Def)),
3961                     "no field Plus_Terminal");
3962      Set_Field10 (Def, Terminal);
3963   end Set_Plus_Terminal;
3964
3965   function Get_Minus_Terminal (Def : Iir) return Iir is
3966   begin
3967      pragma Assert (Def /= Null_Iir);
3968      pragma Assert (Has_Minus_Terminal (Get_Kind (Def)),
3969                     "no field Minus_Terminal");
3970      return Get_Field11 (Def);
3971   end Get_Minus_Terminal;
3972
3973   procedure Set_Minus_Terminal (Def : Iir; Terminal : Iir) is
3974   begin
3975      pragma Assert (Def /= Null_Iir);
3976      pragma Assert (Has_Minus_Terminal (Get_Kind (Def)),
3977                     "no field Minus_Terminal");
3978      Set_Field11 (Def, Terminal);
3979   end Set_Minus_Terminal;
3980
3981   function Get_Magnitude_Expression (Decl : Iir) return Iir is
3982   begin
3983      pragma Assert (Decl /= Null_Iir);
3984      pragma Assert (Has_Magnitude_Expression (Get_Kind (Decl)),
3985                     "no field Magnitude_Expression");
3986      return Get_Field6 (Decl);
3987   end Get_Magnitude_Expression;
3988
3989   procedure Set_Magnitude_Expression (Decl : Iir; Expr : Iir) is
3990   begin
3991      pragma Assert (Decl /= Null_Iir);
3992      pragma Assert (Has_Magnitude_Expression (Get_Kind (Decl)),
3993                     "no field Magnitude_Expression");
3994      Set_Field6 (Decl, Expr);
3995   end Set_Magnitude_Expression;
3996
3997   function Get_Phase_Expression (Decl : Iir) return Iir is
3998   begin
3999      pragma Assert (Decl /= Null_Iir);
4000      pragma Assert (Has_Phase_Expression (Get_Kind (Decl)),
4001                     "no field Phase_Expression");
4002      return Get_Field7 (Decl);
4003   end Get_Phase_Expression;
4004
4005   procedure Set_Phase_Expression (Decl : Iir; Expr : Iir) is
4006   begin
4007      pragma Assert (Decl /= Null_Iir);
4008      pragma Assert (Has_Phase_Expression (Get_Kind (Decl)),
4009                     "no field Phase_Expression");
4010      Set_Field7 (Decl, Expr);
4011   end Set_Phase_Expression;
4012
4013   function Get_Power_Expression (Decl : Iir) return Iir is
4014   begin
4015      pragma Assert (Decl /= Null_Iir);
4016      pragma Assert (Has_Power_Expression (Get_Kind (Decl)),
4017                     "no field Power_Expression");
4018      return Get_Field4 (Decl);
4019   end Get_Power_Expression;
4020
4021   procedure Set_Power_Expression (Decl : Iir; Expr : Iir) is
4022   begin
4023      pragma Assert (Decl /= Null_Iir);
4024      pragma Assert (Has_Power_Expression (Get_Kind (Decl)),
4025                     "no field Power_Expression");
4026      Set_Field4 (Decl, Expr);
4027   end Set_Power_Expression;
4028
4029   function Get_Simultaneous_Left (Def : Iir) return Iir is
4030   begin
4031      pragma Assert (Def /= Null_Iir);
4032      pragma Assert (Has_Simultaneous_Left (Get_Kind (Def)),
4033                     "no field Simultaneous_Left");
4034      return Get_Field5 (Def);
4035   end Get_Simultaneous_Left;
4036
4037   procedure Set_Simultaneous_Left (Def : Iir; Expr : Iir) is
4038   begin
4039      pragma Assert (Def /= Null_Iir);
4040      pragma Assert (Has_Simultaneous_Left (Get_Kind (Def)),
4041                     "no field Simultaneous_Left");
4042      Set_Field5 (Def, Expr);
4043   end Set_Simultaneous_Left;
4044
4045   function Get_Simultaneous_Right (Def : Iir) return Iir is
4046   begin
4047      pragma Assert (Def /= Null_Iir);
4048      pragma Assert (Has_Simultaneous_Right (Get_Kind (Def)),
4049                     "no field Simultaneous_Right");
4050      return Get_Field6 (Def);
4051   end Get_Simultaneous_Right;
4052
4053   procedure Set_Simultaneous_Right (Def : Iir; Expr : Iir) is
4054   begin
4055      pragma Assert (Def /= Null_Iir);
4056      pragma Assert (Has_Simultaneous_Right (Get_Kind (Def)),
4057                     "no field Simultaneous_Right");
4058      Set_Field6 (Def, Expr);
4059   end Set_Simultaneous_Right;
4060
4061   function Get_Text_File_Flag (Atype : Iir) return Boolean is
4062   begin
4063      pragma Assert (Atype /= Null_Iir);
4064      pragma Assert (Has_Text_File_Flag (Get_Kind (Atype)),
4065                     "no field Text_File_Flag");
4066      return Get_Flag4 (Atype);
4067   end Get_Text_File_Flag;
4068
4069   procedure Set_Text_File_Flag (Atype : Iir; Flag : Boolean) is
4070   begin
4071      pragma Assert (Atype /= Null_Iir);
4072      pragma Assert (Has_Text_File_Flag (Get_Kind (Atype)),
4073                     "no field Text_File_Flag");
4074      Set_Flag4 (Atype, Flag);
4075   end Set_Text_File_Flag;
4076
4077   function Get_Only_Characters_Flag (Atype : Iir) return Boolean is
4078   begin
4079      pragma Assert (Atype /= Null_Iir);
4080      pragma Assert (Has_Only_Characters_Flag (Get_Kind (Atype)),
4081                     "no field Only_Characters_Flag");
4082      return Get_Flag4 (Atype);
4083   end Get_Only_Characters_Flag;
4084
4085   procedure Set_Only_Characters_Flag (Atype : Iir; Flag : Boolean) is
4086   begin
4087      pragma Assert (Atype /= Null_Iir);
4088      pragma Assert (Has_Only_Characters_Flag (Get_Kind (Atype)),
4089                     "no field Only_Characters_Flag");
4090      Set_Flag4 (Atype, Flag);
4091   end Set_Only_Characters_Flag;
4092
4093   function Get_Is_Character_Type (Atype : Iir) return Boolean is
4094   begin
4095      pragma Assert (Atype /= Null_Iir);
4096      pragma Assert (Has_Is_Character_Type (Get_Kind (Atype)),
4097                     "no field Is_Character_Type");
4098      return Get_Flag5 (Atype);
4099   end Get_Is_Character_Type;
4100
4101   procedure Set_Is_Character_Type (Atype : Iir; Flag : Boolean) is
4102   begin
4103      pragma Assert (Atype /= Null_Iir);
4104      pragma Assert (Has_Is_Character_Type (Get_Kind (Atype)),
4105                     "no field Is_Character_Type");
4106      Set_Flag5 (Atype, Flag);
4107   end Set_Is_Character_Type;
4108
4109   function Get_Nature_Staticness (Anat : Iir) return Iir_Staticness is
4110   begin
4111      pragma Assert (Anat /= Null_Iir);
4112      pragma Assert (Has_Nature_Staticness (Get_Kind (Anat)),
4113                     "no field Nature_Staticness");
4114      return Iir_Staticness'Val (Get_State1 (Anat));
4115   end Get_Nature_Staticness;
4116
4117   procedure Set_Nature_Staticness (Anat : Iir; Static : Iir_Staticness) is
4118   begin
4119      pragma Assert (Anat /= Null_Iir);
4120      pragma Assert (Has_Nature_Staticness (Get_Kind (Anat)),
4121                     "no field Nature_Staticness");
4122      Set_State1 (Anat, Iir_Staticness'Pos (Static));
4123   end Set_Nature_Staticness;
4124
4125   function Get_Type_Staticness (Atype : Iir) return Iir_Staticness is
4126   begin
4127      pragma Assert (Atype /= Null_Iir);
4128      pragma Assert (Has_Type_Staticness (Get_Kind (Atype)),
4129                     "no field Type_Staticness");
4130      return Iir_Staticness'Val (Get_State1 (Atype));
4131   end Get_Type_Staticness;
4132
4133   procedure Set_Type_Staticness (Atype : Iir; Static : Iir_Staticness) is
4134   begin
4135      pragma Assert (Atype /= Null_Iir);
4136      pragma Assert (Has_Type_Staticness (Get_Kind (Atype)),
4137                     "no field Type_Staticness");
4138      Set_State1 (Atype, Iir_Staticness'Pos (Static));
4139   end Set_Type_Staticness;
4140
4141   function Get_Constraint_State (Atype : Iir) return Iir_Constraint is
4142   begin
4143      pragma Assert (Atype /= Null_Iir);
4144      pragma Assert (Has_Constraint_State (Get_Kind (Atype)),
4145                     "no field Constraint_State");
4146      return Iir_Constraint'Val (Get_State2 (Atype));
4147   end Get_Constraint_State;
4148
4149   procedure Set_Constraint_State (Atype : Iir; State : Iir_Constraint) is
4150   begin
4151      pragma Assert (Atype /= Null_Iir);
4152      pragma Assert (Has_Constraint_State (Get_Kind (Atype)),
4153                     "no field Constraint_State");
4154      Set_State2 (Atype, Iir_Constraint'Pos (State));
4155   end Set_Constraint_State;
4156
4157   function Get_Index_Subtype_List (Decl : Iir) return Iir_Flist is
4158   begin
4159      pragma Assert (Decl /= Null_Iir);
4160      pragma Assert (Has_Index_Subtype_List (Get_Kind (Decl)),
4161                     "no field Index_Subtype_List");
4162      return Iir_To_Iir_Flist (Get_Field9 (Decl));
4163   end Get_Index_Subtype_List;
4164
4165   procedure Set_Index_Subtype_List (Decl : Iir; List : Iir_Flist) is
4166   begin
4167      pragma Assert (Decl /= Null_Iir);
4168      pragma Assert (Has_Index_Subtype_List (Get_Kind (Decl)),
4169                     "no field Index_Subtype_List");
4170      Set_Field9 (Decl, Iir_Flist_To_Iir (List));
4171   end Set_Index_Subtype_List;
4172
4173   function Get_Index_Subtype_Definition_List (Def : Iir) return Iir_Flist is
4174   begin
4175      pragma Assert (Def /= Null_Iir);
4176      pragma Assert (Has_Index_Subtype_Definition_List (Get_Kind (Def)),
4177                     "no field Index_Subtype_Definition_List");
4178      return Iir_To_Iir_Flist (Get_Field6 (Def));
4179   end Get_Index_Subtype_Definition_List;
4180
4181   procedure Set_Index_Subtype_Definition_List (Def : Iir; Idx : Iir_Flist) is
4182   begin
4183      pragma Assert (Def /= Null_Iir);
4184      pragma Assert (Has_Index_Subtype_Definition_List (Get_Kind (Def)),
4185                     "no field Index_Subtype_Definition_List");
4186      Set_Field6 (Def, Iir_Flist_To_Iir (Idx));
4187   end Set_Index_Subtype_Definition_List;
4188
4189   function Get_Element_Subtype_Indication (Decl : Iir) return Iir is
4190   begin
4191      pragma Assert (Decl /= Null_Iir);
4192      pragma Assert (Has_Element_Subtype_Indication (Get_Kind (Decl)),
4193                     "no field Element_Subtype_Indication");
4194      return Get_Field2 (Decl);
4195   end Get_Element_Subtype_Indication;
4196
4197   procedure Set_Element_Subtype_Indication (Decl : Iir; Sub_Type : Iir) is
4198   begin
4199      pragma Assert (Decl /= Null_Iir);
4200      pragma Assert (Has_Element_Subtype_Indication (Get_Kind (Decl)),
4201                     "no field Element_Subtype_Indication");
4202      Set_Field2 (Decl, Sub_Type);
4203   end Set_Element_Subtype_Indication;
4204
4205   function Get_Element_Subtype (Decl : Iir) return Iir is
4206   begin
4207      pragma Assert (Decl /= Null_Iir);
4208      pragma Assert (Has_Element_Subtype (Get_Kind (Decl)),
4209                     "no field Element_Subtype");
4210      return Get_Field1 (Decl);
4211   end Get_Element_Subtype;
4212
4213   procedure Set_Element_Subtype (Decl : Iir; Sub_Type : Iir) is
4214   begin
4215      pragma Assert (Decl /= Null_Iir);
4216      pragma Assert (Has_Element_Subtype (Get_Kind (Decl)),
4217                     "no field Element_Subtype");
4218      Set_Field1 (Decl, Sub_Type);
4219   end Set_Element_Subtype;
4220
4221   function Get_Element_Subnature_Indication (Decl : Iir) return Iir is
4222   begin
4223      pragma Assert (Decl /= Null_Iir);
4224      pragma Assert (Has_Element_Subnature_Indication (Get_Kind (Decl)),
4225                     "no field Element_Subnature_Indication");
4226      return Get_Field2 (Decl);
4227   end Get_Element_Subnature_Indication;
4228
4229   procedure Set_Element_Subnature_Indication (Decl : Iir; Sub_Nature : Iir)
4230   is
4231   begin
4232      pragma Assert (Decl /= Null_Iir);
4233      pragma Assert (Has_Element_Subnature_Indication (Get_Kind (Decl)),
4234                     "no field Element_Subnature_Indication");
4235      Set_Field2 (Decl, Sub_Nature);
4236   end Set_Element_Subnature_Indication;
4237
4238   function Get_Element_Subnature (Decl : Iir) return Iir is
4239   begin
4240      pragma Assert (Decl /= Null_Iir);
4241      pragma Assert (Has_Element_Subnature (Get_Kind (Decl)),
4242                     "no field Element_Subnature");
4243      return Get_Field1 (Decl);
4244   end Get_Element_Subnature;
4245
4246   procedure Set_Element_Subnature (Decl : Iir; Sub_Nature : Iir) is
4247   begin
4248      pragma Assert (Decl /= Null_Iir);
4249      pragma Assert (Has_Element_Subnature (Get_Kind (Decl)),
4250                     "no field Element_Subnature");
4251      Set_Field1 (Decl, Sub_Nature);
4252   end Set_Element_Subnature;
4253
4254   function Get_Index_Constraint_List (Def : Iir) return Iir_Flist is
4255   begin
4256      pragma Assert (Def /= Null_Iir);
4257      pragma Assert (Has_Index_Constraint_List (Get_Kind (Def)),
4258                     "no field Index_Constraint_List");
4259      return Iir_To_Iir_Flist (Get_Field6 (Def));
4260   end Get_Index_Constraint_List;
4261
4262   procedure Set_Index_Constraint_List (Def : Iir; List : Iir_Flist) is
4263   begin
4264      pragma Assert (Def /= Null_Iir);
4265      pragma Assert (Has_Index_Constraint_List (Get_Kind (Def)),
4266                     "no field Index_Constraint_List");
4267      Set_Field6 (Def, Iir_Flist_To_Iir (List));
4268   end Set_Index_Constraint_List;
4269
4270   function Get_Array_Element_Constraint (Def : Iir) return Iir is
4271   begin
4272      pragma Assert (Def /= Null_Iir);
4273      pragma Assert (Has_Array_Element_Constraint (Get_Kind (Def)),
4274                     "no field Array_Element_Constraint");
4275      return Get_Field8 (Def);
4276   end Get_Array_Element_Constraint;
4277
4278   procedure Set_Array_Element_Constraint (Def : Iir; El : Iir) is
4279   begin
4280      pragma Assert (Def /= Null_Iir);
4281      pragma Assert (Has_Array_Element_Constraint (Get_Kind (Def)),
4282                     "no field Array_Element_Constraint");
4283      Set_Field8 (Def, El);
4284   end Set_Array_Element_Constraint;
4285
4286   function Get_Has_Array_Constraint_Flag (Def : Iir) return Boolean is
4287   begin
4288      pragma Assert (Def /= Null_Iir);
4289      pragma Assert (Has_Has_Array_Constraint_Flag (Get_Kind (Def)),
4290                     "no field Has_Array_Constraint_Flag");
4291      return Get_Flag5 (Def);
4292   end Get_Has_Array_Constraint_Flag;
4293
4294   procedure Set_Has_Array_Constraint_Flag (Def : Iir; Flag : Boolean) is
4295   begin
4296      pragma Assert (Def /= Null_Iir);
4297      pragma Assert (Has_Has_Array_Constraint_Flag (Get_Kind (Def)),
4298                     "no field Has_Array_Constraint_Flag");
4299      Set_Flag5 (Def, Flag);
4300   end Set_Has_Array_Constraint_Flag;
4301
4302   function Get_Has_Element_Constraint_Flag (Def : Iir) return Boolean is
4303   begin
4304      pragma Assert (Def /= Null_Iir);
4305      pragma Assert (Has_Has_Element_Constraint_Flag (Get_Kind (Def)),
4306                     "no field Has_Element_Constraint_Flag");
4307      return Get_Flag6 (Def);
4308   end Get_Has_Element_Constraint_Flag;
4309
4310   procedure Set_Has_Element_Constraint_Flag (Def : Iir; Flag : Boolean) is
4311   begin
4312      pragma Assert (Def /= Null_Iir);
4313      pragma Assert (Has_Has_Element_Constraint_Flag (Get_Kind (Def)),
4314                     "no field Has_Element_Constraint_Flag");
4315      Set_Flag6 (Def, Flag);
4316   end Set_Has_Element_Constraint_Flag;
4317
4318   function Get_Elements_Declaration_List (Decl : Iir) return Iir_Flist is
4319   begin
4320      pragma Assert (Decl /= Null_Iir);
4321      pragma Assert (Has_Elements_Declaration_List (Get_Kind (Decl)),
4322                     "no field Elements_Declaration_List");
4323      return Iir_To_Iir_Flist (Get_Field1 (Decl));
4324   end Get_Elements_Declaration_List;
4325
4326   procedure Set_Elements_Declaration_List (Decl : Iir; List : Iir_Flist) is
4327   begin
4328      pragma Assert (Decl /= Null_Iir);
4329      pragma Assert (Has_Elements_Declaration_List (Get_Kind (Decl)),
4330                     "no field Elements_Declaration_List");
4331      Set_Field1 (Decl, Iir_Flist_To_Iir (List));
4332   end Set_Elements_Declaration_List;
4333
4334   function Get_Owned_Elements_Chain (Atype : Iir) return Iir is
4335   begin
4336      pragma Assert (Atype /= Null_Iir);
4337      pragma Assert (Has_Owned_Elements_Chain (Get_Kind (Atype)),
4338                     "no field Owned_Elements_Chain");
4339      return Get_Field6 (Atype);
4340   end Get_Owned_Elements_Chain;
4341
4342   procedure Set_Owned_Elements_Chain (Atype : Iir; Chain : Iir) is
4343   begin
4344      pragma Assert (Atype /= Null_Iir);
4345      pragma Assert (Has_Owned_Elements_Chain (Get_Kind (Atype)),
4346                     "no field Owned_Elements_Chain");
4347      Set_Field6 (Atype, Chain);
4348   end Set_Owned_Elements_Chain;
4349
4350   function Get_Designated_Type (Target : Iir) return Iir is
4351   begin
4352      pragma Assert (Target /= Null_Iir);
4353      pragma Assert (Has_Designated_Type (Get_Kind (Target)),
4354                     "no field Designated_Type");
4355      return Get_Field1 (Target);
4356   end Get_Designated_Type;
4357
4358   procedure Set_Designated_Type (Target : Iir; Dtype : Iir) is
4359   begin
4360      pragma Assert (Target /= Null_Iir);
4361      pragma Assert (Has_Designated_Type (Get_Kind (Target)),
4362                     "no field Designated_Type");
4363      Set_Field1 (Target, Dtype);
4364   end Set_Designated_Type;
4365
4366   function Get_Designated_Subtype_Indication (Target : Iir) return Iir is
4367   begin
4368      pragma Assert (Target /= Null_Iir);
4369      pragma Assert (Has_Designated_Subtype_Indication (Get_Kind (Target)),
4370                     "no field Designated_Subtype_Indication");
4371      return Get_Field5 (Target);
4372   end Get_Designated_Subtype_Indication;
4373
4374   procedure Set_Designated_Subtype_Indication (Target : Iir; Dtype : Iir) is
4375   begin
4376      pragma Assert (Target /= Null_Iir);
4377      pragma Assert (Has_Designated_Subtype_Indication (Get_Kind (Target)),
4378                     "no field Designated_Subtype_Indication");
4379      Set_Field5 (Target, Dtype);
4380   end Set_Designated_Subtype_Indication;
4381
4382   function Get_Index_List (Decl : Iir) return Iir_Flist is
4383   begin
4384      pragma Assert (Decl /= Null_Iir);
4385      pragma Assert (Has_Index_List (Get_Kind (Decl)),
4386                     "no field Index_List");
4387      return Iir_To_Iir_Flist (Get_Field2 (Decl));
4388   end Get_Index_List;
4389
4390   procedure Set_Index_List (Decl : Iir; List : Iir_Flist) is
4391   begin
4392      pragma Assert (Decl /= Null_Iir);
4393      pragma Assert (Has_Index_List (Get_Kind (Decl)),
4394                     "no field Index_List");
4395      Set_Field2 (Decl, Iir_Flist_To_Iir (List));
4396   end Set_Index_List;
4397
4398   function Get_Reference (Def : Iir) return Iir is
4399   begin
4400      pragma Assert (Def /= Null_Iir);
4401      pragma Assert (Has_Reference (Get_Kind (Def)),
4402                     "no field Reference");
4403      return Get_Field2 (Def);
4404   end Get_Reference;
4405
4406   procedure Set_Reference (Def : Iir; Ref : Iir) is
4407   begin
4408      pragma Assert (Def /= Null_Iir);
4409      pragma Assert (Has_Reference (Get_Kind (Def)),
4410                     "no field Reference");
4411      Set_Field2 (Def, Ref);
4412   end Set_Reference;
4413
4414   function Get_Nature_Declarator (Def : Iir) return Iir is
4415   begin
4416      pragma Assert (Def /= Null_Iir);
4417      pragma Assert (Has_Nature_Declarator (Get_Kind (Def)),
4418                     "no field Nature_Declarator");
4419      return Get_Field3 (Def);
4420   end Get_Nature_Declarator;
4421
4422   procedure Set_Nature_Declarator (Def : Iir; Decl : Iir) is
4423   begin
4424      pragma Assert (Def /= Null_Iir);
4425      pragma Assert (Has_Nature_Declarator (Get_Kind (Def)),
4426                     "no field Nature_Declarator");
4427      Set_Field3 (Def, Decl);
4428   end Set_Nature_Declarator;
4429
4430   function Get_Across_Type_Mark (Def : Iir) return Iir is
4431   begin
4432      pragma Assert (Def /= Null_Iir);
4433      pragma Assert (Has_Across_Type_Mark (Get_Kind (Def)),
4434                     "no field Across_Type_Mark");
4435      return Get_Field9 (Def);
4436   end Get_Across_Type_Mark;
4437
4438   procedure Set_Across_Type_Mark (Def : Iir; Name : Iir) is
4439   begin
4440      pragma Assert (Def /= Null_Iir);
4441      pragma Assert (Has_Across_Type_Mark (Get_Kind (Def)),
4442                     "no field Across_Type_Mark");
4443      Set_Field9 (Def, Name);
4444   end Set_Across_Type_Mark;
4445
4446   function Get_Through_Type_Mark (Def : Iir) return Iir is
4447   begin
4448      pragma Assert (Def /= Null_Iir);
4449      pragma Assert (Has_Through_Type_Mark (Get_Kind (Def)),
4450                     "no field Through_Type_Mark");
4451      return Get_Field10 (Def);
4452   end Get_Through_Type_Mark;
4453
4454   procedure Set_Through_Type_Mark (Def : Iir; Atype : Iir) is
4455   begin
4456      pragma Assert (Def /= Null_Iir);
4457      pragma Assert (Has_Through_Type_Mark (Get_Kind (Def)),
4458                     "no field Through_Type_Mark");
4459      Set_Field10 (Def, Atype);
4460   end Set_Through_Type_Mark;
4461
4462   function Get_Across_Type_Definition (Def : Iir) return Iir is
4463   begin
4464      pragma Assert (Def /= Null_Iir);
4465      pragma Assert (Has_Across_Type_Definition (Get_Kind (Def)),
4466                     "no field Across_Type_Definition");
4467      return Get_Field10 (Def);
4468   end Get_Across_Type_Definition;
4469
4470   procedure Set_Across_Type_Definition (Def : Iir; Atype : Iir) is
4471   begin
4472      pragma Assert (Def /= Null_Iir);
4473      pragma Assert (Has_Across_Type_Definition (Get_Kind (Def)),
4474                     "no field Across_Type_Definition");
4475      Set_Field10 (Def, Atype);
4476   end Set_Across_Type_Definition;
4477
4478   function Get_Through_Type_Definition (Def : Iir) return Iir is
4479   begin
4480      pragma Assert (Def /= Null_Iir);
4481      pragma Assert (Has_Through_Type_Definition (Get_Kind (Def)),
4482                     "no field Through_Type_Definition");
4483      return Get_Field5 (Def);
4484   end Get_Through_Type_Definition;
4485
4486   procedure Set_Through_Type_Definition (Def : Iir; Atype : Iir) is
4487   begin
4488      pragma Assert (Def /= Null_Iir);
4489      pragma Assert (Has_Through_Type_Definition (Get_Kind (Def)),
4490                     "no field Through_Type_Definition");
4491      Set_Field5 (Def, Atype);
4492   end Set_Through_Type_Definition;
4493
4494   function Get_Across_Type (Def : Iir) return Iir is
4495   begin
4496      pragma Assert (Def /= Null_Iir);
4497      pragma Assert (Has_Across_Type (Get_Kind (Def)),
4498                     "no field Across_Type");
4499      return Get_Field11 (Def);
4500   end Get_Across_Type;
4501
4502   procedure Set_Across_Type (Def : Iir; Atype : Iir) is
4503   begin
4504      pragma Assert (Def /= Null_Iir);
4505      pragma Assert (Has_Across_Type (Get_Kind (Def)),
4506                     "no field Across_Type");
4507      Set_Field11 (Def, Atype);
4508   end Set_Across_Type;
4509
4510   function Get_Through_Type (Def : Iir) return Iir is
4511   begin
4512      pragma Assert (Def /= Null_Iir);
4513      pragma Assert (Has_Through_Type (Get_Kind (Def)),
4514                     "no field Through_Type");
4515      return Get_Field12 (Def);
4516   end Get_Through_Type;
4517
4518   procedure Set_Through_Type (Def : Iir; Atype : Iir) is
4519   begin
4520      pragma Assert (Def /= Null_Iir);
4521      pragma Assert (Has_Through_Type (Get_Kind (Def)),
4522                     "no field Through_Type");
4523      Set_Field12 (Def, Atype);
4524   end Set_Through_Type;
4525
4526   function Get_Target (Target : Iir) return Iir is
4527   begin
4528      pragma Assert (Target /= Null_Iir);
4529      pragma Assert (Has_Target (Get_Kind (Target)),
4530                     "no field Target");
4531      return Get_Field1 (Target);
4532   end Get_Target;
4533
4534   procedure Set_Target (Target : Iir; Atarget : Iir) is
4535   begin
4536      pragma Assert (Target /= Null_Iir);
4537      pragma Assert (Has_Target (Get_Kind (Target)),
4538                     "no field Target");
4539      Set_Field1 (Target, Atarget);
4540   end Set_Target;
4541
4542   function Get_Waveform_Chain (Target : Iir) return Iir is
4543   begin
4544      pragma Assert (Target /= Null_Iir);
4545      pragma Assert (Has_Waveform_Chain (Get_Kind (Target)),
4546                     "no field Waveform_Chain");
4547      return Get_Field5 (Target);
4548   end Get_Waveform_Chain;
4549
4550   procedure Set_Waveform_Chain (Target : Iir; Chain : Iir) is
4551   begin
4552      pragma Assert (Target /= Null_Iir);
4553      pragma Assert (Has_Waveform_Chain (Get_Kind (Target)),
4554                     "no field Waveform_Chain");
4555      Set_Field5 (Target, Chain);
4556   end Set_Waveform_Chain;
4557
4558   function Get_Guard (Target : Iir) return Iir is
4559   begin
4560      pragma Assert (Target /= Null_Iir);
4561      pragma Assert (Has_Guard (Get_Kind (Target)),
4562                     "no field Guard");
4563      return Get_Field8 (Target);
4564   end Get_Guard;
4565
4566   procedure Set_Guard (Target : Iir; Guard : Iir) is
4567   begin
4568      pragma Assert (Target /= Null_Iir);
4569      pragma Assert (Has_Guard (Get_Kind (Target)),
4570                     "no field Guard");
4571      Set_Field8 (Target, Guard);
4572   end Set_Guard;
4573
4574   function Get_Delay_Mechanism (Target : Iir) return Iir_Delay_Mechanism is
4575   begin
4576      pragma Assert (Target /= Null_Iir);
4577      pragma Assert (Has_Delay_Mechanism (Get_Kind (Target)),
4578                     "no field Delay_Mechanism");
4579      return Boolean_To_Iir_Delay_Mechanism (Get_Flag1 (Target));
4580   end Get_Delay_Mechanism;
4581
4582   procedure Set_Delay_Mechanism (Target : Iir; Kind : Iir_Delay_Mechanism) is
4583   begin
4584      pragma Assert (Target /= Null_Iir);
4585      pragma Assert (Has_Delay_Mechanism (Get_Kind (Target)),
4586                     "no field Delay_Mechanism");
4587      Set_Flag1 (Target, Iir_Delay_Mechanism_To_Boolean (Kind));
4588   end Set_Delay_Mechanism;
4589
4590   function Get_Reject_Time_Expression (Target : Iir) return Iir is
4591   begin
4592      pragma Assert (Target /= Null_Iir);
4593      pragma Assert (Has_Reject_Time_Expression (Get_Kind (Target)),
4594                     "no field Reject_Time_Expression");
4595      return Get_Field4 (Target);
4596   end Get_Reject_Time_Expression;
4597
4598   procedure Set_Reject_Time_Expression (Target : Iir; Expr : Iir) is
4599   begin
4600      pragma Assert (Target /= Null_Iir);
4601      pragma Assert (Has_Reject_Time_Expression (Get_Kind (Target)),
4602                     "no field Reject_Time_Expression");
4603      Set_Field4 (Target, Expr);
4604   end Set_Reject_Time_Expression;
4605
4606   function Get_Force_Mode (Stmt : Iir) return Iir_Force_Mode is
4607   begin
4608      pragma Assert (Stmt /= Null_Iir);
4609      pragma Assert (Has_Force_Mode (Get_Kind (Stmt)),
4610                     "no field Force_Mode");
4611      return Boolean_To_Iir_Force_Mode (Get_Flag1 (Stmt));
4612   end Get_Force_Mode;
4613
4614   procedure Set_Force_Mode (Stmt : Iir; Mode : Iir_Force_Mode) is
4615   begin
4616      pragma Assert (Stmt /= Null_Iir);
4617      pragma Assert (Has_Force_Mode (Get_Kind (Stmt)),
4618                     "no field Force_Mode");
4619      Set_Flag1 (Stmt, Iir_Force_Mode_To_Boolean (Mode));
4620   end Set_Force_Mode;
4621
4622   function Get_Has_Force_Mode (Stmt : Iir) return Boolean is
4623   begin
4624      pragma Assert (Stmt /= Null_Iir);
4625      pragma Assert (Has_Has_Force_Mode (Get_Kind (Stmt)),
4626                     "no field Has_Force_Mode");
4627      return Get_Flag2 (Stmt);
4628   end Get_Has_Force_Mode;
4629
4630   procedure Set_Has_Force_Mode (Stmt : Iir; Flag : Boolean) is
4631   begin
4632      pragma Assert (Stmt /= Null_Iir);
4633      pragma Assert (Has_Has_Force_Mode (Get_Kind (Stmt)),
4634                     "no field Has_Force_Mode");
4635      Set_Flag2 (Stmt, Flag);
4636   end Set_Has_Force_Mode;
4637
4638   function Get_Sensitivity_List (Wait : Iir) return Iir_List is
4639   begin
4640      pragma Assert (Wait /= Null_Iir);
4641      pragma Assert (Has_Sensitivity_List (Get_Kind (Wait)),
4642                     "no field Sensitivity_List");
4643      return Iir_To_Iir_List (Get_Field6 (Wait));
4644   end Get_Sensitivity_List;
4645
4646   procedure Set_Sensitivity_List (Wait : Iir; List : Iir_List) is
4647   begin
4648      pragma Assert (Wait /= Null_Iir);
4649      pragma Assert (Has_Sensitivity_List (Get_Kind (Wait)),
4650                     "no field Sensitivity_List");
4651      Set_Field6 (Wait, Iir_List_To_Iir (List));
4652   end Set_Sensitivity_List;
4653
4654   function Get_Process_Origin (Proc : Iir) return Iir is
4655   begin
4656      pragma Assert (Proc /= Null_Iir);
4657      pragma Assert (Has_Process_Origin (Get_Kind (Proc)),
4658                     "no field Process_Origin");
4659      return Get_Field8 (Proc);
4660   end Get_Process_Origin;
4661
4662   procedure Set_Process_Origin (Proc : Iir; Orig : Iir) is
4663   begin
4664      pragma Assert (Proc /= Null_Iir);
4665      pragma Assert (Has_Process_Origin (Get_Kind (Proc)),
4666                     "no field Process_Origin");
4667      Set_Field8 (Proc, Orig);
4668   end Set_Process_Origin;
4669
4670   function Get_Package_Origin (Pkg : Iir) return Iir is
4671   begin
4672      pragma Assert (Pkg /= Null_Iir);
4673      pragma Assert (Has_Package_Origin (Get_Kind (Pkg)),
4674                     "no field Package_Origin");
4675      return Get_Field7 (Pkg);
4676   end Get_Package_Origin;
4677
4678   procedure Set_Package_Origin (Pkg : Iir; Orig : Iir) is
4679   begin
4680      pragma Assert (Pkg /= Null_Iir);
4681      pragma Assert (Has_Package_Origin (Get_Kind (Pkg)),
4682                     "no field Package_Origin");
4683      Set_Field7 (Pkg, Orig);
4684   end Set_Package_Origin;
4685
4686   function Get_Condition_Clause (Wait : Iir_Wait_Statement) return Iir is
4687   begin
4688      pragma Assert (Wait /= Null_Iir);
4689      pragma Assert (Has_Condition_Clause (Get_Kind (Wait)),
4690                     "no field Condition_Clause");
4691      return Get_Field5 (Wait);
4692   end Get_Condition_Clause;
4693
4694   procedure Set_Condition_Clause (Wait : Iir_Wait_Statement; Cond : Iir) is
4695   begin
4696      pragma Assert (Wait /= Null_Iir);
4697      pragma Assert (Has_Condition_Clause (Get_Kind (Wait)),
4698                     "no field Condition_Clause");
4699      Set_Field5 (Wait, Cond);
4700   end Set_Condition_Clause;
4701
4702   function Get_Break_Element (Stmt : Iir) return Iir is
4703   begin
4704      pragma Assert (Stmt /= Null_Iir);
4705      pragma Assert (Has_Break_Element (Get_Kind (Stmt)),
4706                     "no field Break_Element");
4707      return Get_Field4 (Stmt);
4708   end Get_Break_Element;
4709
4710   procedure Set_Break_Element (Stmt : Iir; El : Iir) is
4711   begin
4712      pragma Assert (Stmt /= Null_Iir);
4713      pragma Assert (Has_Break_Element (Get_Kind (Stmt)),
4714                     "no field Break_Element");
4715      Set_Field4 (Stmt, El);
4716   end Set_Break_Element;
4717
4718   function Get_Selector_Quantity (Stmt : Iir) return Iir is
4719   begin
4720      pragma Assert (Stmt /= Null_Iir);
4721      pragma Assert (Has_Selector_Quantity (Get_Kind (Stmt)),
4722                     "no field Selector_Quantity");
4723      return Get_Field3 (Stmt);
4724   end Get_Selector_Quantity;
4725
4726   procedure Set_Selector_Quantity (Stmt : Iir; Sel : Iir) is
4727   begin
4728      pragma Assert (Stmt /= Null_Iir);
4729      pragma Assert (Has_Selector_Quantity (Get_Kind (Stmt)),
4730                     "no field Selector_Quantity");
4731      Set_Field3 (Stmt, Sel);
4732   end Set_Selector_Quantity;
4733
4734   function Get_Break_Quantity (Stmt : Iir) return Iir is
4735   begin
4736      pragma Assert (Stmt /= Null_Iir);
4737      pragma Assert (Has_Break_Quantity (Get_Kind (Stmt)),
4738                     "no field Break_Quantity");
4739      return Get_Field4 (Stmt);
4740   end Get_Break_Quantity;
4741
4742   procedure Set_Break_Quantity (Stmt : Iir; Sel : Iir) is
4743   begin
4744      pragma Assert (Stmt /= Null_Iir);
4745      pragma Assert (Has_Break_Quantity (Get_Kind (Stmt)),
4746                     "no field Break_Quantity");
4747      Set_Field4 (Stmt, Sel);
4748   end Set_Break_Quantity;
4749
4750   function Get_Timeout_Clause (Wait : Iir_Wait_Statement) return Iir is
4751   begin
4752      pragma Assert (Wait /= Null_Iir);
4753      pragma Assert (Has_Timeout_Clause (Get_Kind (Wait)),
4754                     "no field Timeout_Clause");
4755      return Get_Field1 (Wait);
4756   end Get_Timeout_Clause;
4757
4758   procedure Set_Timeout_Clause (Wait : Iir_Wait_Statement; Timeout : Iir) is
4759   begin
4760      pragma Assert (Wait /= Null_Iir);
4761      pragma Assert (Has_Timeout_Clause (Get_Kind (Wait)),
4762                     "no field Timeout_Clause");
4763      Set_Field1 (Wait, Timeout);
4764   end Set_Timeout_Clause;
4765
4766   function Get_Postponed_Flag (Target : Iir) return Boolean is
4767   begin
4768      pragma Assert (Target /= Null_Iir);
4769      pragma Assert (Has_Postponed_Flag (Get_Kind (Target)),
4770                     "no field Postponed_Flag");
4771      return Get_Flag3 (Target);
4772   end Get_Postponed_Flag;
4773
4774   procedure Set_Postponed_Flag (Target : Iir; Value : Boolean) is
4775   begin
4776      pragma Assert (Target /= Null_Iir);
4777      pragma Assert (Has_Postponed_Flag (Get_Kind (Target)),
4778                     "no field Postponed_Flag");
4779      Set_Flag3 (Target, Value);
4780   end Set_Postponed_Flag;
4781
4782   function Get_Callees_List (Proc : Iir) return Iir_List is
4783   begin
4784      pragma Assert (Proc /= Null_Iir);
4785      pragma Assert (Has_Callees_List (Get_Kind (Proc)),
4786                     "no field Callees_List");
4787      return Iir_To_Iir_List (Get_Field7 (Proc));
4788   end Get_Callees_List;
4789
4790   procedure Set_Callees_List (Proc : Iir; List : Iir_List) is
4791   begin
4792      pragma Assert (Proc /= Null_Iir);
4793      pragma Assert (Has_Callees_List (Get_Kind (Proc)),
4794                     "no field Callees_List");
4795      Set_Field7 (Proc, Iir_List_To_Iir (List));
4796   end Set_Callees_List;
4797
4798   function Get_Passive_Flag (Proc : Iir) return Boolean is
4799   begin
4800      pragma Assert (Proc /= Null_Iir);
4801      pragma Assert (Has_Passive_Flag (Get_Kind (Proc)),
4802                     "no field Passive_Flag");
4803      return Get_Flag2 (Proc);
4804   end Get_Passive_Flag;
4805
4806   procedure Set_Passive_Flag (Proc : Iir; Flag : Boolean) is
4807   begin
4808      pragma Assert (Proc /= Null_Iir);
4809      pragma Assert (Has_Passive_Flag (Get_Kind (Proc)),
4810                     "no field Passive_Flag");
4811      Set_Flag2 (Proc, Flag);
4812   end Set_Passive_Flag;
4813
4814   function Get_Resolution_Function_Flag (Func : Iir) return Boolean is
4815   begin
4816      pragma Assert (Func /= Null_Iir);
4817      pragma Assert (Has_Resolution_Function_Flag (Get_Kind (Func)),
4818                     "no field Resolution_Function_Flag");
4819      return Get_Flag13 (Func);
4820   end Get_Resolution_Function_Flag;
4821
4822   procedure Set_Resolution_Function_Flag (Func : Iir; Flag : Boolean) is
4823   begin
4824      pragma Assert (Func /= Null_Iir);
4825      pragma Assert (Has_Resolution_Function_Flag (Get_Kind (Func)),
4826                     "no field Resolution_Function_Flag");
4827      Set_Flag13 (Func, Flag);
4828   end Set_Resolution_Function_Flag;
4829
4830   function Get_Wait_State (Proc : Iir) return Tri_State_Type is
4831   begin
4832      pragma Assert (Proc /= Null_Iir);
4833      pragma Assert (Has_Wait_State (Get_Kind (Proc)),
4834                     "no field Wait_State");
4835      return Tri_State_Type'Val (Get_State1 (Proc));
4836   end Get_Wait_State;
4837
4838   procedure Set_Wait_State (Proc : Iir; State : Tri_State_Type) is
4839   begin
4840      pragma Assert (Proc /= Null_Iir);
4841      pragma Assert (Has_Wait_State (Get_Kind (Proc)),
4842                     "no field Wait_State");
4843      Set_State1 (Proc, Tri_State_Type'Pos (State));
4844   end Set_Wait_State;
4845
4846   function Get_All_Sensitized_State (Proc : Iir) return Iir_All_Sensitized is
4847   begin
4848      pragma Assert (Proc /= Null_Iir);
4849      pragma Assert (Has_All_Sensitized_State (Get_Kind (Proc)),
4850                     "no field All_Sensitized_State");
4851      return Iir_All_Sensitized'Val (Get_State3 (Proc));
4852   end Get_All_Sensitized_State;
4853
4854   procedure Set_All_Sensitized_State (Proc : Iir; State : Iir_All_Sensitized)
4855   is
4856   begin
4857      pragma Assert (Proc /= Null_Iir);
4858      pragma Assert (Has_All_Sensitized_State (Get_Kind (Proc)),
4859                     "no field All_Sensitized_State");
4860      Set_State3 (Proc, Iir_All_Sensitized'Pos (State));
4861   end Set_All_Sensitized_State;
4862
4863   function Get_Seen_Flag (Proc : Iir) return Boolean is
4864   begin
4865      pragma Assert (Proc /= Null_Iir);
4866      pragma Assert (Has_Seen_Flag (Get_Kind (Proc)),
4867                     "no field Seen_Flag");
4868      return Get_Flag1 (Proc);
4869   end Get_Seen_Flag;
4870
4871   procedure Set_Seen_Flag (Proc : Iir; Flag : Boolean) is
4872   begin
4873      pragma Assert (Proc /= Null_Iir);
4874      pragma Assert (Has_Seen_Flag (Get_Kind (Proc)),
4875                     "no field Seen_Flag");
4876      Set_Flag1 (Proc, Flag);
4877   end Set_Seen_Flag;
4878
4879   function Get_Pure_Flag (Func : Iir) return Boolean is
4880   begin
4881      pragma Assert (Func /= Null_Iir);
4882      pragma Assert (Has_Pure_Flag (Get_Kind (Func)),
4883                     "no field Pure_Flag");
4884      return Get_Flag2 (Func);
4885   end Get_Pure_Flag;
4886
4887   procedure Set_Pure_Flag (Func : Iir; Flag : Boolean) is
4888   begin
4889      pragma Assert (Func /= Null_Iir);
4890      pragma Assert (Has_Pure_Flag (Get_Kind (Func)),
4891                     "no field Pure_Flag");
4892      Set_Flag2 (Func, Flag);
4893   end Set_Pure_Flag;
4894
4895   function Get_Foreign_Flag (Decl : Iir) return Boolean is
4896   begin
4897      pragma Assert (Decl /= Null_Iir);
4898      pragma Assert (Has_Foreign_Flag (Get_Kind (Decl)),
4899                     "no field Foreign_Flag");
4900      return Get_Flag3 (Decl);
4901   end Get_Foreign_Flag;
4902
4903   procedure Set_Foreign_Flag (Decl : Iir; Flag : Boolean) is
4904   begin
4905      pragma Assert (Decl /= Null_Iir);
4906      pragma Assert (Has_Foreign_Flag (Get_Kind (Decl)),
4907                     "no field Foreign_Flag");
4908      Set_Flag3 (Decl, Flag);
4909   end Set_Foreign_Flag;
4910
4911   function Get_Resolved_Flag (Atype : Iir) return Boolean is
4912   begin
4913      pragma Assert (Atype /= Null_Iir);
4914      pragma Assert (Has_Resolved_Flag (Get_Kind (Atype)),
4915                     "no field Resolved_Flag");
4916      return Get_Flag1 (Atype);
4917   end Get_Resolved_Flag;
4918
4919   procedure Set_Resolved_Flag (Atype : Iir; Flag : Boolean) is
4920   begin
4921      pragma Assert (Atype /= Null_Iir);
4922      pragma Assert (Has_Resolved_Flag (Get_Kind (Atype)),
4923                     "no field Resolved_Flag");
4924      Set_Flag1 (Atype, Flag);
4925   end Set_Resolved_Flag;
4926
4927   function Get_Signal_Type_Flag (Atype : Iir) return Boolean is
4928   begin
4929      pragma Assert (Atype /= Null_Iir);
4930      pragma Assert (Has_Signal_Type_Flag (Get_Kind (Atype)),
4931                     "no field Signal_Type_Flag");
4932      return Get_Flag2 (Atype);
4933   end Get_Signal_Type_Flag;
4934
4935   procedure Set_Signal_Type_Flag (Atype : Iir; Flag : Boolean) is
4936   begin
4937      pragma Assert (Atype /= Null_Iir);
4938      pragma Assert (Has_Signal_Type_Flag (Get_Kind (Atype)),
4939                     "no field Signal_Type_Flag");
4940      Set_Flag2 (Atype, Flag);
4941   end Set_Signal_Type_Flag;
4942
4943   function Get_Has_Signal_Flag (Atype : Iir) return Boolean is
4944   begin
4945      pragma Assert (Atype /= Null_Iir);
4946      pragma Assert (Has_Has_Signal_Flag (Get_Kind (Atype)),
4947                     "no field Has_Signal_Flag");
4948      return Get_Flag3 (Atype);
4949   end Get_Has_Signal_Flag;
4950
4951   procedure Set_Has_Signal_Flag (Atype : Iir; Flag : Boolean) is
4952   begin
4953      pragma Assert (Atype /= Null_Iir);
4954      pragma Assert (Has_Has_Signal_Flag (Get_Kind (Atype)),
4955                     "no field Has_Signal_Flag");
4956      Set_Flag3 (Atype, Flag);
4957   end Set_Has_Signal_Flag;
4958
4959   function Get_Purity_State (Proc : Iir) return Iir_Pure_State is
4960   begin
4961      pragma Assert (Proc /= Null_Iir);
4962      pragma Assert (Has_Purity_State (Get_Kind (Proc)),
4963                     "no field Purity_State");
4964      return Iir_Pure_State'Val (Get_State2 (Proc));
4965   end Get_Purity_State;
4966
4967   procedure Set_Purity_State (Proc : Iir; State : Iir_Pure_State) is
4968   begin
4969      pragma Assert (Proc /= Null_Iir);
4970      pragma Assert (Has_Purity_State (Get_Kind (Proc)),
4971                     "no field Purity_State");
4972      Set_State2 (Proc, Iir_Pure_State'Pos (State));
4973   end Set_Purity_State;
4974
4975   function Get_Elab_Flag (Design : Iir) return Boolean is
4976   begin
4977      pragma Assert (Design /= Null_Iir);
4978      pragma Assert (Has_Elab_Flag (Get_Kind (Design)),
4979                     "no field Elab_Flag");
4980      return Get_Flag3 (Design);
4981   end Get_Elab_Flag;
4982
4983   procedure Set_Elab_Flag (Design : Iir; Flag : Boolean) is
4984   begin
4985      pragma Assert (Design /= Null_Iir);
4986      pragma Assert (Has_Elab_Flag (Get_Kind (Design)),
4987                     "no field Elab_Flag");
4988      Set_Flag3 (Design, Flag);
4989   end Set_Elab_Flag;
4990
4991   function Get_Vendor_Library_Flag (Lib : Iir) return Boolean is
4992   begin
4993      pragma Assert (Lib /= Null_Iir);
4994      pragma Assert (Has_Vendor_Library_Flag (Get_Kind (Lib)),
4995                     "no field Vendor_Library_Flag");
4996      return Get_Flag1 (Lib);
4997   end Get_Vendor_Library_Flag;
4998
4999   procedure Set_Vendor_Library_Flag (Lib : Iir; Flag : Boolean) is
5000   begin
5001      pragma Assert (Lib /= Null_Iir);
5002      pragma Assert (Has_Vendor_Library_Flag (Get_Kind (Lib)),
5003                     "no field Vendor_Library_Flag");
5004      Set_Flag1 (Lib, Flag);
5005   end Set_Vendor_Library_Flag;
5006
5007   function Get_Configuration_Mark_Flag (Design : Iir) return Boolean is
5008   begin
5009      pragma Assert (Design /= Null_Iir);
5010      pragma Assert (Has_Configuration_Mark_Flag (Get_Kind (Design)),
5011                     "no field Configuration_Mark_Flag");
5012      return Get_Flag4 (Design);
5013   end Get_Configuration_Mark_Flag;
5014
5015   procedure Set_Configuration_Mark_Flag (Design : Iir; Flag : Boolean) is
5016   begin
5017      pragma Assert (Design /= Null_Iir);
5018      pragma Assert (Has_Configuration_Mark_Flag (Get_Kind (Design)),
5019                     "no field Configuration_Mark_Flag");
5020      Set_Flag4 (Design, Flag);
5021   end Set_Configuration_Mark_Flag;
5022
5023   function Get_Configuration_Done_Flag (Design : Iir) return Boolean is
5024   begin
5025      pragma Assert (Design /= Null_Iir);
5026      pragma Assert (Has_Configuration_Done_Flag (Get_Kind (Design)),
5027                     "no field Configuration_Done_Flag");
5028      return Get_Flag5 (Design);
5029   end Get_Configuration_Done_Flag;
5030
5031   procedure Set_Configuration_Done_Flag (Design : Iir; Flag : Boolean) is
5032   begin
5033      pragma Assert (Design /= Null_Iir);
5034      pragma Assert (Has_Configuration_Done_Flag (Get_Kind (Design)),
5035                     "no field Configuration_Done_Flag");
5036      Set_Flag5 (Design, Flag);
5037   end Set_Configuration_Done_Flag;
5038
5039   function Get_Index_Constraint_Flag (Atype : Iir) return Boolean is
5040   begin
5041      pragma Assert (Atype /= Null_Iir);
5042      pragma Assert (Has_Index_Constraint_Flag (Get_Kind (Atype)),
5043                     "no field Index_Constraint_Flag");
5044      return Get_Flag4 (Atype);
5045   end Get_Index_Constraint_Flag;
5046
5047   procedure Set_Index_Constraint_Flag (Atype : Iir; Flag : Boolean) is
5048   begin
5049      pragma Assert (Atype /= Null_Iir);
5050      pragma Assert (Has_Index_Constraint_Flag (Get_Kind (Atype)),
5051                     "no field Index_Constraint_Flag");
5052      Set_Flag4 (Atype, Flag);
5053   end Set_Index_Constraint_Flag;
5054
5055   function Get_Hide_Implicit_Flag (Subprg : Iir) return Boolean is
5056   begin
5057      pragma Assert (Subprg /= Null_Iir);
5058      pragma Assert (Has_Hide_Implicit_Flag (Get_Kind (Subprg)),
5059                     "no field Hide_Implicit_Flag");
5060      return Get_Flag12 (Subprg);
5061   end Get_Hide_Implicit_Flag;
5062
5063   procedure Set_Hide_Implicit_Flag (Subprg : Iir; Flag : Boolean) is
5064   begin
5065      pragma Assert (Subprg /= Null_Iir);
5066      pragma Assert (Has_Hide_Implicit_Flag (Get_Kind (Subprg)),
5067                     "no field Hide_Implicit_Flag");
5068      Set_Flag12 (Subprg, Flag);
5069   end Set_Hide_Implicit_Flag;
5070
5071   function Get_Assertion_Condition (Target : Iir) return Iir is
5072   begin
5073      pragma Assert (Target /= Null_Iir);
5074      pragma Assert (Has_Assertion_Condition (Get_Kind (Target)),
5075                     "no field Assertion_Condition");
5076      return Get_Field1 (Target);
5077   end Get_Assertion_Condition;
5078
5079   procedure Set_Assertion_Condition (Target : Iir; Cond : Iir) is
5080   begin
5081      pragma Assert (Target /= Null_Iir);
5082      pragma Assert (Has_Assertion_Condition (Get_Kind (Target)),
5083                     "no field Assertion_Condition");
5084      Set_Field1 (Target, Cond);
5085   end Set_Assertion_Condition;
5086
5087   function Get_Report_Expression (Target : Iir) return Iir is
5088   begin
5089      pragma Assert (Target /= Null_Iir);
5090      pragma Assert (Has_Report_Expression (Get_Kind (Target)),
5091                     "no field Report_Expression");
5092      return Get_Field5 (Target);
5093   end Get_Report_Expression;
5094
5095   procedure Set_Report_Expression (Target : Iir; Expr : Iir) is
5096   begin
5097      pragma Assert (Target /= Null_Iir);
5098      pragma Assert (Has_Report_Expression (Get_Kind (Target)),
5099                     "no field Report_Expression");
5100      Set_Field5 (Target, Expr);
5101   end Set_Report_Expression;
5102
5103   function Get_Severity_Expression (Target : Iir) return Iir is
5104   begin
5105      pragma Assert (Target /= Null_Iir);
5106      pragma Assert (Has_Severity_Expression (Get_Kind (Target)),
5107                     "no field Severity_Expression");
5108      return Get_Field4 (Target);
5109   end Get_Severity_Expression;
5110
5111   procedure Set_Severity_Expression (Target : Iir; Expr : Iir) is
5112   begin
5113      pragma Assert (Target /= Null_Iir);
5114      pragma Assert (Has_Severity_Expression (Get_Kind (Target)),
5115                     "no field Severity_Expression");
5116      Set_Field4 (Target, Expr);
5117   end Set_Severity_Expression;
5118
5119   function Get_Instantiated_Unit (Target : Iir) return Iir is
5120   begin
5121      pragma Assert (Target /= Null_Iir);
5122      pragma Assert (Has_Instantiated_Unit (Get_Kind (Target)),
5123                     "no field Instantiated_Unit");
5124      return Get_Field1 (Target);
5125   end Get_Instantiated_Unit;
5126
5127   procedure Set_Instantiated_Unit (Target : Iir; Unit : Iir) is
5128   begin
5129      pragma Assert (Target /= Null_Iir);
5130      pragma Assert (Has_Instantiated_Unit (Get_Kind (Target)),
5131                     "no field Instantiated_Unit");
5132      Set_Field1 (Target, Unit);
5133   end Set_Instantiated_Unit;
5134
5135   function Get_Generic_Map_Aspect_Chain (Target : Iir) return Iir is
5136   begin
5137      pragma Assert (Target /= Null_Iir);
5138      pragma Assert (Has_Generic_Map_Aspect_Chain (Get_Kind (Target)),
5139                     "no field Generic_Map_Aspect_Chain");
5140      return Get_Field8 (Target);
5141   end Get_Generic_Map_Aspect_Chain;
5142
5143   procedure Set_Generic_Map_Aspect_Chain (Target : Iir; Generics : Iir) is
5144   begin
5145      pragma Assert (Target /= Null_Iir);
5146      pragma Assert (Has_Generic_Map_Aspect_Chain (Get_Kind (Target)),
5147                     "no field Generic_Map_Aspect_Chain");
5148      Set_Field8 (Target, Generics);
5149   end Set_Generic_Map_Aspect_Chain;
5150
5151   function Get_Port_Map_Aspect_Chain (Target : Iir) return Iir is
5152   begin
5153      pragma Assert (Target /= Null_Iir);
5154      pragma Assert (Has_Port_Map_Aspect_Chain (Get_Kind (Target)),
5155                     "no field Port_Map_Aspect_Chain");
5156      return Get_Field9 (Target);
5157   end Get_Port_Map_Aspect_Chain;
5158
5159   procedure Set_Port_Map_Aspect_Chain (Target : Iir; Port : Iir) is
5160   begin
5161      pragma Assert (Target /= Null_Iir);
5162      pragma Assert (Has_Port_Map_Aspect_Chain (Get_Kind (Target)),
5163                     "no field Port_Map_Aspect_Chain");
5164      Set_Field9 (Target, Port);
5165   end Set_Port_Map_Aspect_Chain;
5166
5167   function Get_Configuration_Name (Target : Iir) return Iir is
5168   begin
5169      pragma Assert (Target /= Null_Iir);
5170      pragma Assert (Has_Configuration_Name (Get_Kind (Target)),
5171                     "no field Configuration_Name");
5172      return Get_Field1 (Target);
5173   end Get_Configuration_Name;
5174
5175   procedure Set_Configuration_Name (Target : Iir; Conf : Iir) is
5176   begin
5177      pragma Assert (Target /= Null_Iir);
5178      pragma Assert (Has_Configuration_Name (Get_Kind (Target)),
5179                     "no field Configuration_Name");
5180      Set_Field1 (Target, Conf);
5181   end Set_Configuration_Name;
5182
5183   function Get_Component_Configuration (Target : Iir) return Iir is
5184   begin
5185      pragma Assert (Target /= Null_Iir);
5186      pragma Assert (Has_Component_Configuration (Get_Kind (Target)),
5187                     "no field Component_Configuration");
5188      return Get_Field6 (Target);
5189   end Get_Component_Configuration;
5190
5191   procedure Set_Component_Configuration (Target : Iir; Conf : Iir) is
5192   begin
5193      pragma Assert (Target /= Null_Iir);
5194      pragma Assert (Has_Component_Configuration (Get_Kind (Target)),
5195                     "no field Component_Configuration");
5196      Set_Field6 (Target, Conf);
5197   end Set_Component_Configuration;
5198
5199   function Get_Configuration_Specification (Target : Iir) return Iir is
5200   begin
5201      pragma Assert (Target /= Null_Iir);
5202      pragma Assert (Has_Configuration_Specification (Get_Kind (Target)),
5203                     "no field Configuration_Specification");
5204      return Get_Field7 (Target);
5205   end Get_Configuration_Specification;
5206
5207   procedure Set_Configuration_Specification (Target : Iir; Conf : Iir) is
5208   begin
5209      pragma Assert (Target /= Null_Iir);
5210      pragma Assert (Has_Configuration_Specification (Get_Kind (Target)),
5211                     "no field Configuration_Specification");
5212      Set_Field7 (Target, Conf);
5213   end Set_Configuration_Specification;
5214
5215   function Get_Default_Binding_Indication (Target : Iir) return Iir is
5216   begin
5217      pragma Assert (Target /= Null_Iir);
5218      pragma Assert (Has_Default_Binding_Indication (Get_Kind (Target)),
5219                     "no field Default_Binding_Indication");
5220      return Get_Field5 (Target);
5221   end Get_Default_Binding_Indication;
5222
5223   procedure Set_Default_Binding_Indication (Target : Iir; Conf : Iir) is
5224   begin
5225      pragma Assert (Target /= Null_Iir);
5226      pragma Assert (Has_Default_Binding_Indication (Get_Kind (Target)),
5227                     "no field Default_Binding_Indication");
5228      Set_Field5 (Target, Conf);
5229   end Set_Default_Binding_Indication;
5230
5231   function Get_Default_Configuration_Declaration (Target : Iir) return Iir is
5232   begin
5233      pragma Assert (Target /= Null_Iir);
5234      pragma Assert (Has_Default_Configuration_Declaration (Get_Kind (Target)),
5235                     "no field Default_Configuration_Declaration");
5236      return Get_Field6 (Target);
5237   end Get_Default_Configuration_Declaration;
5238
5239   procedure Set_Default_Configuration_Declaration (Target : Iir; Conf : Iir)
5240   is
5241   begin
5242      pragma Assert (Target /= Null_Iir);
5243      pragma Assert (Has_Default_Configuration_Declaration (Get_Kind (Target)),
5244                     "no field Default_Configuration_Declaration");
5245      Set_Field6 (Target, Conf);
5246   end Set_Default_Configuration_Declaration;
5247
5248   function Get_Expression (Target : Iir) return Iir is
5249   begin
5250      pragma Assert (Target /= Null_Iir);
5251      pragma Assert (Has_Expression (Get_Kind (Target)),
5252                     "no field Expression");
5253      return Get_Field5 (Target);
5254   end Get_Expression;
5255
5256   procedure Set_Expression (Target : Iir; Expr : Iir) is
5257   begin
5258      pragma Assert (Target /= Null_Iir);
5259      pragma Assert (Has_Expression (Get_Kind (Target)),
5260                     "no field Expression");
5261      Set_Field5 (Target, Expr);
5262   end Set_Expression;
5263
5264   function Get_Conditional_Expression_Chain (Target : Iir) return Iir is
5265   begin
5266      pragma Assert (Target /= Null_Iir);
5267      pragma Assert (Has_Conditional_Expression_Chain (Get_Kind (Target)),
5268                     "no field Conditional_Expression_Chain");
5269      return Get_Field5 (Target);
5270   end Get_Conditional_Expression_Chain;
5271
5272   procedure Set_Conditional_Expression_Chain (Target : Iir; Chain : Iir) is
5273   begin
5274      pragma Assert (Target /= Null_Iir);
5275      pragma Assert (Has_Conditional_Expression_Chain (Get_Kind (Target)),
5276                     "no field Conditional_Expression_Chain");
5277      Set_Field5 (Target, Chain);
5278   end Set_Conditional_Expression_Chain;
5279
5280   function Get_Allocator_Designated_Type (Target : Iir) return Iir is
5281   begin
5282      pragma Assert (Target /= Null_Iir);
5283      pragma Assert (Has_Allocator_Designated_Type (Get_Kind (Target)),
5284                     "no field Allocator_Designated_Type");
5285      return Get_Field2 (Target);
5286   end Get_Allocator_Designated_Type;
5287
5288   procedure Set_Allocator_Designated_Type (Target : Iir; A_Type : Iir) is
5289   begin
5290      pragma Assert (Target /= Null_Iir);
5291      pragma Assert (Has_Allocator_Designated_Type (Get_Kind (Target)),
5292                     "no field Allocator_Designated_Type");
5293      Set_Field2 (Target, A_Type);
5294   end Set_Allocator_Designated_Type;
5295
5296   function Get_Selected_Waveform_Chain (Target : Iir) return Iir is
5297   begin
5298      pragma Assert (Target /= Null_Iir);
5299      pragma Assert (Has_Selected_Waveform_Chain (Get_Kind (Target)),
5300                     "no field Selected_Waveform_Chain");
5301      return Get_Field7 (Target);
5302   end Get_Selected_Waveform_Chain;
5303
5304   procedure Set_Selected_Waveform_Chain (Target : Iir; Chain : Iir) is
5305   begin
5306      pragma Assert (Target /= Null_Iir);
5307      pragma Assert (Has_Selected_Waveform_Chain (Get_Kind (Target)),
5308                     "no field Selected_Waveform_Chain");
5309      Set_Field7 (Target, Chain);
5310   end Set_Selected_Waveform_Chain;
5311
5312   function Get_Conditional_Waveform_Chain (Target : Iir) return Iir is
5313   begin
5314      pragma Assert (Target /= Null_Iir);
5315      pragma Assert (Has_Conditional_Waveform_Chain (Get_Kind (Target)),
5316                     "no field Conditional_Waveform_Chain");
5317      return Get_Field5 (Target);
5318   end Get_Conditional_Waveform_Chain;
5319
5320   procedure Set_Conditional_Waveform_Chain (Target : Iir; Chain : Iir) is
5321   begin
5322      pragma Assert (Target /= Null_Iir);
5323      pragma Assert (Has_Conditional_Waveform_Chain (Get_Kind (Target)),
5324                     "no field Conditional_Waveform_Chain");
5325      Set_Field5 (Target, Chain);
5326   end Set_Conditional_Waveform_Chain;
5327
5328   function Get_Guard_Expression (Target : Iir) return Iir is
5329   begin
5330      pragma Assert (Target /= Null_Iir);
5331      pragma Assert (Has_Guard_Expression (Get_Kind (Target)),
5332                     "no field Guard_Expression");
5333      return Get_Field2 (Target);
5334   end Get_Guard_Expression;
5335
5336   procedure Set_Guard_Expression (Target : Iir; Expr : Iir) is
5337   begin
5338      pragma Assert (Target /= Null_Iir);
5339      pragma Assert (Has_Guard_Expression (Get_Kind (Target)),
5340                     "no field Guard_Expression");
5341      Set_Field2 (Target, Expr);
5342   end Set_Guard_Expression;
5343
5344   function Get_Guard_Decl (Target : Iir_Block_Statement) return Iir is
5345   begin
5346      pragma Assert (Target /= Null_Iir);
5347      pragma Assert (Has_Guard_Decl (Get_Kind (Target)),
5348                     "no field Guard_Decl");
5349      return Get_Field8 (Target);
5350   end Get_Guard_Decl;
5351
5352   procedure Set_Guard_Decl (Target : Iir_Block_Statement; Decl : Iir) is
5353   begin
5354      pragma Assert (Target /= Null_Iir);
5355      pragma Assert (Has_Guard_Decl (Get_Kind (Target)),
5356                     "no field Guard_Decl");
5357      Set_Field8 (Target, Decl);
5358   end Set_Guard_Decl;
5359
5360   function Get_Guard_Sensitivity_List (Guard : Iir) return Iir_List is
5361   begin
5362      pragma Assert (Guard /= Null_Iir);
5363      pragma Assert (Has_Guard_Sensitivity_List (Get_Kind (Guard)),
5364                     "no field Guard_Sensitivity_List");
5365      return Iir_To_Iir_List (Get_Field4 (Guard));
5366   end Get_Guard_Sensitivity_List;
5367
5368   procedure Set_Guard_Sensitivity_List (Guard : Iir; List : Iir_List) is
5369   begin
5370      pragma Assert (Guard /= Null_Iir);
5371      pragma Assert (Has_Guard_Sensitivity_List (Get_Kind (Guard)),
5372                     "no field Guard_Sensitivity_List");
5373      Set_Field4 (Guard, Iir_List_To_Iir (List));
5374   end Set_Guard_Sensitivity_List;
5375
5376   function Get_Signal_Attribute_Chain (Decl : Iir) return Iir is
5377   begin
5378      pragma Assert (Decl /= Null_Iir);
5379      pragma Assert (Has_Signal_Attribute_Chain (Get_Kind (Decl)),
5380                     "no field Signal_Attribute_Chain");
5381      return Get_Field3 (Decl);
5382   end Get_Signal_Attribute_Chain;
5383
5384   procedure Set_Signal_Attribute_Chain (Decl : Iir; Chain : Iir) is
5385   begin
5386      pragma Assert (Decl /= Null_Iir);
5387      pragma Assert (Has_Signal_Attribute_Chain (Get_Kind (Decl)),
5388                     "no field Signal_Attribute_Chain");
5389      Set_Field3 (Decl, Chain);
5390   end Set_Signal_Attribute_Chain;
5391
5392   function Get_Block_Block_Configuration (Block : Iir) return Iir is
5393   begin
5394      pragma Assert (Block /= Null_Iir);
5395      pragma Assert (Has_Block_Block_Configuration (Get_Kind (Block)),
5396                     "no field Block_Block_Configuration");
5397      return Get_Field6 (Block);
5398   end Get_Block_Block_Configuration;
5399
5400   procedure Set_Block_Block_Configuration (Block : Iir; Conf : Iir) is
5401   begin
5402      pragma Assert (Block /= Null_Iir);
5403      pragma Assert (Has_Block_Block_Configuration (Get_Kind (Block)),
5404                     "no field Block_Block_Configuration");
5405      Set_Field6 (Block, Conf);
5406   end Set_Block_Block_Configuration;
5407
5408   function Get_Package_Header (Pkg : Iir) return Iir is
5409   begin
5410      pragma Assert (Pkg /= Null_Iir);
5411      pragma Assert (Has_Package_Header (Get_Kind (Pkg)),
5412                     "no field Package_Header");
5413      return Get_Field6 (Pkg);
5414   end Get_Package_Header;
5415
5416   procedure Set_Package_Header (Pkg : Iir; Header : Iir) is
5417   begin
5418      pragma Assert (Pkg /= Null_Iir);
5419      pragma Assert (Has_Package_Header (Get_Kind (Pkg)),
5420                     "no field Package_Header");
5421      Set_Field6 (Pkg, Header);
5422   end Set_Package_Header;
5423
5424   function Get_Block_Header (Target : Iir) return Iir is
5425   begin
5426      pragma Assert (Target /= Null_Iir);
5427      pragma Assert (Has_Block_Header (Get_Kind (Target)),
5428                     "no field Block_Header");
5429      return Get_Field7 (Target);
5430   end Get_Block_Header;
5431
5432   procedure Set_Block_Header (Target : Iir; Header : Iir) is
5433   begin
5434      pragma Assert (Target /= Null_Iir);
5435      pragma Assert (Has_Block_Header (Get_Kind (Target)),
5436                     "no field Block_Header");
5437      Set_Field7 (Target, Header);
5438   end Set_Block_Header;
5439
5440   function Get_Uninstantiated_Package_Name (Inst : Iir) return Iir is
5441   begin
5442      pragma Assert (Inst /= Null_Iir);
5443      pragma Assert (Has_Uninstantiated_Package_Name (Get_Kind (Inst)),
5444                     "no field Uninstantiated_Package_Name");
5445      return Get_Field7 (Inst);
5446   end Get_Uninstantiated_Package_Name;
5447
5448   procedure Set_Uninstantiated_Package_Name (Inst : Iir; Name : Iir) is
5449   begin
5450      pragma Assert (Inst /= Null_Iir);
5451      pragma Assert (Has_Uninstantiated_Package_Name (Get_Kind (Inst)),
5452                     "no field Uninstantiated_Package_Name");
5453      Set_Field7 (Inst, Name);
5454   end Set_Uninstantiated_Package_Name;
5455
5456   function Get_Uninstantiated_Package_Decl (Inst : Iir) return Iir is
5457   begin
5458      pragma Assert (Inst /= Null_Iir);
5459      pragma Assert (Has_Uninstantiated_Package_Decl (Get_Kind (Inst)),
5460                     "no field Uninstantiated_Package_Decl");
5461      return Get_Field9 (Inst);
5462   end Get_Uninstantiated_Package_Decl;
5463
5464   procedure Set_Uninstantiated_Package_Decl (Inst : Iir; Pkg : Iir) is
5465   begin
5466      pragma Assert (Inst /= Null_Iir);
5467      pragma Assert (Has_Uninstantiated_Package_Decl (Get_Kind (Inst)),
5468                     "no field Uninstantiated_Package_Decl");
5469      Set_Field9 (Inst, Pkg);
5470   end Set_Uninstantiated_Package_Decl;
5471
5472   function Get_Instance_Source_File (Inst : Iir) return Source_File_Entry is
5473   begin
5474      pragma Assert (Inst /= Null_Iir);
5475      pragma Assert (Has_Instance_Source_File (Get_Kind (Inst)),
5476                     "no field Instance_Source_File");
5477      return Iir_To_Source_File_Entry (Get_Field10 (Inst));
5478   end Get_Instance_Source_File;
5479
5480   procedure Set_Instance_Source_File (Inst : Iir; File : Source_File_Entry)
5481   is
5482   begin
5483      pragma Assert (Inst /= Null_Iir);
5484      pragma Assert (Has_Instance_Source_File (Get_Kind (Inst)),
5485                     "no field Instance_Source_File");
5486      Set_Field10 (Inst, Source_File_Entry_To_Iir (File));
5487   end Set_Instance_Source_File;
5488
5489   function Get_Generate_Block_Configuration (Target : Iir) return Iir is
5490   begin
5491      pragma Assert (Target /= Null_Iir);
5492      pragma Assert (Has_Generate_Block_Configuration (Get_Kind (Target)),
5493                     "no field Generate_Block_Configuration");
5494      return Get_Field2 (Target);
5495   end Get_Generate_Block_Configuration;
5496
5497   procedure Set_Generate_Block_Configuration (Target : Iir; Conf : Iir) is
5498   begin
5499      pragma Assert (Target /= Null_Iir);
5500      pragma Assert (Has_Generate_Block_Configuration (Get_Kind (Target)),
5501                     "no field Generate_Block_Configuration");
5502      Set_Field2 (Target, Conf);
5503   end Set_Generate_Block_Configuration;
5504
5505   function Get_Generate_Statement_Body (Target : Iir) return Iir is
5506   begin
5507      pragma Assert (Target /= Null_Iir);
5508      pragma Assert (Has_Generate_Statement_Body (Get_Kind (Target)),
5509                     "no field Generate_Statement_Body");
5510      return Get_Field4 (Target);
5511   end Get_Generate_Statement_Body;
5512
5513   procedure Set_Generate_Statement_Body (Target : Iir; Bod : Iir) is
5514   begin
5515      pragma Assert (Target /= Null_Iir);
5516      pragma Assert (Has_Generate_Statement_Body (Get_Kind (Target)),
5517                     "no field Generate_Statement_Body");
5518      Set_Field4 (Target, Bod);
5519   end Set_Generate_Statement_Body;
5520
5521   function Get_Alternative_Label (Target : Iir) return Name_Id is
5522   begin
5523      pragma Assert (Target /= Null_Iir);
5524      pragma Assert (Has_Alternative_Label (Get_Kind (Target)),
5525                     "no field Alternative_Label");
5526      return Iir_To_Name_Id (Get_Field3 (Target));
5527   end Get_Alternative_Label;
5528
5529   procedure Set_Alternative_Label (Target : Iir; Label : Name_Id) is
5530   begin
5531      pragma Assert (Target /= Null_Iir);
5532      pragma Assert (Has_Alternative_Label (Get_Kind (Target)),
5533                     "no field Alternative_Label");
5534      Set_Field3 (Target, Name_Id_To_Iir (Label));
5535   end Set_Alternative_Label;
5536
5537   function Get_Generate_Else_Clause (Target : Iir) return Iir is
5538   begin
5539      pragma Assert (Target /= Null_Iir);
5540      pragma Assert (Has_Generate_Else_Clause (Get_Kind (Target)),
5541                     "no field Generate_Else_Clause");
5542      return Get_Field5 (Target);
5543   end Get_Generate_Else_Clause;
5544
5545   procedure Set_Generate_Else_Clause (Target : Iir; Clause : Iir) is
5546   begin
5547      pragma Assert (Target /= Null_Iir);
5548      pragma Assert (Has_Generate_Else_Clause (Get_Kind (Target)),
5549                     "no field Generate_Else_Clause");
5550      Set_Field5 (Target, Clause);
5551   end Set_Generate_Else_Clause;
5552
5553   function Get_Condition (Target : Iir) return Iir is
5554   begin
5555      pragma Assert (Target /= Null_Iir);
5556      pragma Assert (Has_Condition (Get_Kind (Target)),
5557                     "no field Condition");
5558      return Get_Field1 (Target);
5559   end Get_Condition;
5560
5561   procedure Set_Condition (Target : Iir; Condition : Iir) is
5562   begin
5563      pragma Assert (Target /= Null_Iir);
5564      pragma Assert (Has_Condition (Get_Kind (Target)),
5565                     "no field Condition");
5566      Set_Field1 (Target, Condition);
5567   end Set_Condition;
5568
5569   function Get_Else_Clause (Target : Iir) return Iir is
5570   begin
5571      pragma Assert (Target /= Null_Iir);
5572      pragma Assert (Has_Else_Clause (Get_Kind (Target)),
5573                     "no field Else_Clause");
5574      return Get_Field5 (Target);
5575   end Get_Else_Clause;
5576
5577   procedure Set_Else_Clause (Target : Iir; Clause : Iir) is
5578   begin
5579      pragma Assert (Target /= Null_Iir);
5580      pragma Assert (Has_Else_Clause (Get_Kind (Target)),
5581                     "no field Else_Clause");
5582      Set_Field5 (Target, Clause);
5583   end Set_Else_Clause;
5584
5585   function Get_Parameter_Specification (Target : Iir) return Iir is
5586   begin
5587      pragma Assert (Target /= Null_Iir);
5588      pragma Assert (Has_Parameter_Specification (Get_Kind (Target)),
5589                     "no field Parameter_Specification");
5590      return Get_Field1 (Target);
5591   end Get_Parameter_Specification;
5592
5593   procedure Set_Parameter_Specification (Target : Iir; Param : Iir) is
5594   begin
5595      pragma Assert (Target /= Null_Iir);
5596      pragma Assert (Has_Parameter_Specification (Get_Kind (Target)),
5597                     "no field Parameter_Specification");
5598      Set_Field1 (Target, Param);
5599   end Set_Parameter_Specification;
5600
5601   function Get_Parent (Target : Iir) return Iir is
5602   begin
5603      pragma Assert (Target /= Null_Iir);
5604      pragma Assert (Has_Parent (Get_Kind (Target)),
5605                     "no field Parent");
5606      return Get_Field0 (Target);
5607   end Get_Parent;
5608
5609   procedure Set_Parent (Target : Iir; Parent : Iir) is
5610   begin
5611      pragma Assert (Target /= Null_Iir);
5612      pragma Assert (Has_Parent (Get_Kind (Target)),
5613                     "no field Parent");
5614      Set_Field0 (Target, Parent);
5615   end Set_Parent;
5616
5617   function Get_Loop_Label (Target : Iir) return Iir is
5618   begin
5619      pragma Assert (Target /= Null_Iir);
5620      pragma Assert (Has_Loop_Label (Get_Kind (Target)),
5621                     "no field Loop_Label");
5622      return Get_Field5 (Target);
5623   end Get_Loop_Label;
5624
5625   procedure Set_Loop_Label (Target : Iir; Stmt : Iir) is
5626   begin
5627      pragma Assert (Target /= Null_Iir);
5628      pragma Assert (Has_Loop_Label (Get_Kind (Target)),
5629                     "no field Loop_Label");
5630      Set_Field5 (Target, Stmt);
5631   end Set_Loop_Label;
5632
5633   function Get_Exit_Flag (Stmt : Iir) return Boolean is
5634   begin
5635      pragma Assert (Stmt /= Null_Iir);
5636      pragma Assert (Has_Exit_Flag (Get_Kind (Stmt)),
5637                     "no field Exit_Flag");
5638      return Get_Flag1 (Stmt);
5639   end Get_Exit_Flag;
5640
5641   procedure Set_Exit_Flag (Stmt : Iir; Flag : Boolean) is
5642   begin
5643      pragma Assert (Stmt /= Null_Iir);
5644      pragma Assert (Has_Exit_Flag (Get_Kind (Stmt)),
5645                     "no field Exit_Flag");
5646      Set_Flag1 (Stmt, Flag);
5647   end Set_Exit_Flag;
5648
5649   function Get_Next_Flag (Stmt : Iir) return Boolean is
5650   begin
5651      pragma Assert (Stmt /= Null_Iir);
5652      pragma Assert (Has_Next_Flag (Get_Kind (Stmt)),
5653                     "no field Next_Flag");
5654      return Get_Flag2 (Stmt);
5655   end Get_Next_Flag;
5656
5657   procedure Set_Next_Flag (Stmt : Iir; Flag : Boolean) is
5658   begin
5659      pragma Assert (Stmt /= Null_Iir);
5660      pragma Assert (Has_Next_Flag (Get_Kind (Stmt)),
5661                     "no field Next_Flag");
5662      Set_Flag2 (Stmt, Flag);
5663   end Set_Next_Flag;
5664
5665   function Get_Component_Name (Target : Iir) return Iir is
5666   begin
5667      pragma Assert (Target /= Null_Iir);
5668      pragma Assert (Has_Component_Name (Get_Kind (Target)),
5669                     "no field Component_Name");
5670      return Get_Field5 (Target);
5671   end Get_Component_Name;
5672
5673   procedure Set_Component_Name (Target : Iir; Name : Iir) is
5674   begin
5675      pragma Assert (Target /= Null_Iir);
5676      pragma Assert (Has_Component_Name (Get_Kind (Target)),
5677                     "no field Component_Name");
5678      Set_Field5 (Target, Name);
5679   end Set_Component_Name;
5680
5681   function Get_Instantiation_List (Target : Iir) return Iir_Flist is
5682   begin
5683      pragma Assert (Target /= Null_Iir);
5684      pragma Assert (Has_Instantiation_List (Get_Kind (Target)),
5685                     "no field Instantiation_List");
5686      return Iir_To_Iir_Flist (Get_Field1 (Target));
5687   end Get_Instantiation_List;
5688
5689   procedure Set_Instantiation_List (Target : Iir; List : Iir_Flist) is
5690   begin
5691      pragma Assert (Target /= Null_Iir);
5692      pragma Assert (Has_Instantiation_List (Get_Kind (Target)),
5693                     "no field Instantiation_List");
5694      Set_Field1 (Target, Iir_Flist_To_Iir (List));
5695   end Set_Instantiation_List;
5696
5697   function Get_Entity_Aspect (Target : Iir_Binding_Indication) return Iir is
5698   begin
5699      pragma Assert (Target /= Null_Iir);
5700      pragma Assert (Has_Entity_Aspect (Get_Kind (Target)),
5701                     "no field Entity_Aspect");
5702      return Get_Field3 (Target);
5703   end Get_Entity_Aspect;
5704
5705   procedure Set_Entity_Aspect (Target : Iir_Binding_Indication; Entity : Iir)
5706   is
5707   begin
5708      pragma Assert (Target /= Null_Iir);
5709      pragma Assert (Has_Entity_Aspect (Get_Kind (Target)),
5710                     "no field Entity_Aspect");
5711      Set_Field3 (Target, Entity);
5712   end Set_Entity_Aspect;
5713
5714   function Get_Default_Entity_Aspect (Target : Iir) return Iir is
5715   begin
5716      pragma Assert (Target /= Null_Iir);
5717      pragma Assert (Has_Default_Entity_Aspect (Get_Kind (Target)),
5718                     "no field Default_Entity_Aspect");
5719      return Get_Field1 (Target);
5720   end Get_Default_Entity_Aspect;
5721
5722   procedure Set_Default_Entity_Aspect (Target : Iir; Aspect : Iir) is
5723   begin
5724      pragma Assert (Target /= Null_Iir);
5725      pragma Assert (Has_Default_Entity_Aspect (Get_Kind (Target)),
5726                     "no field Default_Entity_Aspect");
5727      Set_Field1 (Target, Aspect);
5728   end Set_Default_Entity_Aspect;
5729
5730   function Get_Binding_Indication (Target : Iir) return Iir is
5731   begin
5732      pragma Assert (Target /= Null_Iir);
5733      pragma Assert (Has_Binding_Indication (Get_Kind (Target)),
5734                     "no field Binding_Indication");
5735      return Get_Field3 (Target);
5736   end Get_Binding_Indication;
5737
5738   procedure Set_Binding_Indication (Target : Iir; Binding : Iir) is
5739   begin
5740      pragma Assert (Target /= Null_Iir);
5741      pragma Assert (Has_Binding_Indication (Get_Kind (Target)),
5742                     "no field Binding_Indication");
5743      Set_Field3 (Target, Binding);
5744   end Set_Binding_Indication;
5745
5746   function Get_Named_Entity (Name : Iir) return Iir is
5747   begin
5748      pragma Assert (Name /= Null_Iir);
5749      pragma Assert (Has_Named_Entity (Get_Kind (Name)),
5750                     "no field Named_Entity");
5751      return Get_Field4 (Name);
5752   end Get_Named_Entity;
5753
5754   procedure Set_Named_Entity (Name : Iir; Val : Iir) is
5755   begin
5756      pragma Assert (Name /= Null_Iir);
5757      pragma Assert (Has_Named_Entity (Get_Kind (Name)),
5758                     "no field Named_Entity");
5759      Set_Field4 (Name, Val);
5760   end Set_Named_Entity;
5761
5762   function Get_Alias_Declaration (Name : Iir) return Iir is
5763   begin
5764      pragma Assert (Name /= Null_Iir);
5765      pragma Assert (Has_Alias_Declaration (Get_Kind (Name)),
5766                     "no field Alias_Declaration");
5767      return Get_Field2 (Name);
5768   end Get_Alias_Declaration;
5769
5770   procedure Set_Alias_Declaration (Name : Iir; Val : Iir) is
5771   begin
5772      pragma Assert (Name /= Null_Iir);
5773      pragma Assert (Has_Alias_Declaration (Get_Kind (Name)),
5774                     "no field Alias_Declaration");
5775      Set_Field2 (Name, Val);
5776   end Set_Alias_Declaration;
5777
5778   function Get_Referenced_Name (N : Iir) return Iir is
5779   begin
5780      pragma Assert (N /= Null_Iir);
5781      pragma Assert (Has_Referenced_Name (Get_Kind (N)),
5782                     "no field Referenced_Name");
5783      return Get_Field2 (N);
5784   end Get_Referenced_Name;
5785
5786   procedure Set_Referenced_Name (N : Iir; Name : Iir) is
5787   begin
5788      pragma Assert (N /= Null_Iir);
5789      pragma Assert (Has_Referenced_Name (Get_Kind (N)),
5790                     "no field Referenced_Name");
5791      Set_Field2 (N, Name);
5792   end Set_Referenced_Name;
5793
5794   function Get_Expr_Staticness (Target : Iir) return Iir_Staticness is
5795   begin
5796      pragma Assert (Target /= Null_Iir);
5797      pragma Assert (Has_Expr_Staticness (Get_Kind (Target)),
5798                     "no field Expr_Staticness");
5799      return Iir_Staticness'Val (Get_State1 (Target));
5800   end Get_Expr_Staticness;
5801
5802   procedure Set_Expr_Staticness (Target : Iir; Static : Iir_Staticness) is
5803   begin
5804      pragma Assert (Target /= Null_Iir);
5805      pragma Assert (Has_Expr_Staticness (Get_Kind (Target)),
5806                     "no field Expr_Staticness");
5807      Set_State1 (Target, Iir_Staticness'Pos (Static));
5808   end Set_Expr_Staticness;
5809
5810   type Scalar_Size_Conv is record
5811      Flag6: Boolean;
5812      Flag7: Boolean;
5813   end record;
5814   pragma Pack (Scalar_Size_Conv);
5815   pragma Assert (Scalar_Size_Conv'Size = Scalar_Size'Size);
5816
5817   function Get_Scalar_Size (N : Iir) return Scalar_Size
5818   is
5819      function To_Scalar_Size is new Ada.Unchecked_Conversion
5820         (Scalar_Size_Conv, Scalar_Size);
5821      Conv : Scalar_Size_Conv;
5822   begin
5823      pragma Assert (N /= Null_Iir);
5824      pragma Assert (Has_Scalar_Size (Get_Kind (N)),
5825                     "no field Scalar_Size");
5826      Conv.Flag6 := Get_Flag6 (N);
5827      Conv.Flag7 := Get_Flag7 (N);
5828      return To_Scalar_Size (Conv);
5829   end Get_Scalar_Size;
5830
5831   procedure Set_Scalar_Size (N : Iir; Sz : Scalar_Size)
5832   is
5833      function To_Scalar_Size_Conv is new Ada.Unchecked_Conversion
5834         (Scalar_Size, Scalar_Size_Conv);
5835      Conv : Scalar_Size_Conv;
5836   begin
5837      pragma Assert (N /= Null_Iir);
5838      pragma Assert (Has_Scalar_Size (Get_Kind (N)),
5839                     "no field Scalar_Size");
5840      Conv := To_Scalar_Size_Conv (Sz);
5841      Set_Flag6 (N, Conv.Flag6);
5842      Set_Flag7 (N, Conv.Flag7);
5843   end Set_Scalar_Size;
5844
5845   function Get_Error_Origin (Target : Iir) return Iir is
5846   begin
5847      pragma Assert (Target /= Null_Iir);
5848      pragma Assert (Has_Error_Origin (Get_Kind (Target)),
5849                     "no field Error_Origin");
5850      return Get_Field2 (Target);
5851   end Get_Error_Origin;
5852
5853   procedure Set_Error_Origin (Target : Iir; Origin : Iir) is
5854   begin
5855      pragma Assert (Target /= Null_Iir);
5856      pragma Assert (Has_Error_Origin (Get_Kind (Target)),
5857                     "no field Error_Origin");
5858      Set_Field2 (Target, Origin);
5859   end Set_Error_Origin;
5860
5861   function Get_Operand (Target : Iir) return Iir is
5862   begin
5863      pragma Assert (Target /= Null_Iir);
5864      pragma Assert (Has_Operand (Get_Kind (Target)),
5865                     "no field Operand");
5866      return Get_Field2 (Target);
5867   end Get_Operand;
5868
5869   procedure Set_Operand (Target : Iir; An_Iir : Iir) is
5870   begin
5871      pragma Assert (Target /= Null_Iir);
5872      pragma Assert (Has_Operand (Get_Kind (Target)),
5873                     "no field Operand");
5874      Set_Field2 (Target, An_Iir);
5875   end Set_Operand;
5876
5877   function Get_Left (Target : Iir) return Iir is
5878   begin
5879      pragma Assert (Target /= Null_Iir);
5880      pragma Assert (Has_Left (Get_Kind (Target)),
5881                     "no field Left");
5882      return Get_Field2 (Target);
5883   end Get_Left;
5884
5885   procedure Set_Left (Target : Iir; An_Iir : Iir) is
5886   begin
5887      pragma Assert (Target /= Null_Iir);
5888      pragma Assert (Has_Left (Get_Kind (Target)),
5889                     "no field Left");
5890      Set_Field2 (Target, An_Iir);
5891   end Set_Left;
5892
5893   function Get_Right (Target : Iir) return Iir is
5894   begin
5895      pragma Assert (Target /= Null_Iir);
5896      pragma Assert (Has_Right (Get_Kind (Target)),
5897                     "no field Right");
5898      return Get_Field4 (Target);
5899   end Get_Right;
5900
5901   procedure Set_Right (Target : Iir; An_Iir : Iir) is
5902   begin
5903      pragma Assert (Target /= Null_Iir);
5904      pragma Assert (Has_Right (Get_Kind (Target)),
5905                     "no field Right");
5906      Set_Field4 (Target, An_Iir);
5907   end Set_Right;
5908
5909   function Get_Unit_Name (Target : Iir) return Iir is
5910   begin
5911      pragma Assert (Target /= Null_Iir);
5912      pragma Assert (Has_Unit_Name (Get_Kind (Target)),
5913                     "no field Unit_Name");
5914      return Get_Field3 (Target);
5915   end Get_Unit_Name;
5916
5917   procedure Set_Unit_Name (Target : Iir; Name : Iir) is
5918   begin
5919      pragma Assert (Target /= Null_Iir);
5920      pragma Assert (Has_Unit_Name (Get_Kind (Target)),
5921                     "no field Unit_Name");
5922      Set_Field3 (Target, Name);
5923   end Set_Unit_Name;
5924
5925   function Get_Name (Target : Iir) return Iir is
5926   begin
5927      pragma Assert (Target /= Null_Iir);
5928      pragma Assert (Has_Name (Get_Kind (Target)),
5929                     "no field Name");
5930      return Get_Field4 (Target);
5931   end Get_Name;
5932
5933   procedure Set_Name (Target : Iir; Name : Iir) is
5934   begin
5935      pragma Assert (Target /= Null_Iir);
5936      pragma Assert (Has_Name (Get_Kind (Target)),
5937                     "no field Name");
5938      Set_Field4 (Target, Name);
5939   end Set_Name;
5940
5941   function Get_Group_Template_Name (Target : Iir) return Iir is
5942   begin
5943      pragma Assert (Target /= Null_Iir);
5944      pragma Assert (Has_Group_Template_Name (Get_Kind (Target)),
5945                     "no field Group_Template_Name");
5946      return Get_Field5 (Target);
5947   end Get_Group_Template_Name;
5948
5949   procedure Set_Group_Template_Name (Target : Iir; Name : Iir) is
5950   begin
5951      pragma Assert (Target /= Null_Iir);
5952      pragma Assert (Has_Group_Template_Name (Get_Kind (Target)),
5953                     "no field Group_Template_Name");
5954      Set_Field5 (Target, Name);
5955   end Set_Group_Template_Name;
5956
5957   function Get_Name_Staticness (Target : Iir) return Iir_Staticness is
5958   begin
5959      pragma Assert (Target /= Null_Iir);
5960      pragma Assert (Has_Name_Staticness (Get_Kind (Target)),
5961                     "no field Name_Staticness");
5962      return Iir_Staticness'Val (Get_State2 (Target));
5963   end Get_Name_Staticness;
5964
5965   procedure Set_Name_Staticness (Target : Iir; Static : Iir_Staticness) is
5966   begin
5967      pragma Assert (Target /= Null_Iir);
5968      pragma Assert (Has_Name_Staticness (Get_Kind (Target)),
5969                     "no field Name_Staticness");
5970      Set_State2 (Target, Iir_Staticness'Pos (Static));
5971   end Set_Name_Staticness;
5972
5973   function Get_Prefix (Target : Iir) return Iir is
5974   begin
5975      pragma Assert (Target /= Null_Iir);
5976      pragma Assert (Has_Prefix (Get_Kind (Target)),
5977                     "no field Prefix");
5978      return Get_Field0 (Target);
5979   end Get_Prefix;
5980
5981   procedure Set_Prefix (Target : Iir; Prefix : Iir) is
5982   begin
5983      pragma Assert (Target /= Null_Iir);
5984      pragma Assert (Has_Prefix (Get_Kind (Target)),
5985                     "no field Prefix");
5986      Set_Field0 (Target, Prefix);
5987   end Set_Prefix;
5988
5989   function Get_Signature_Prefix (Sign : Iir) return Iir is
5990   begin
5991      pragma Assert (Sign /= Null_Iir);
5992      pragma Assert (Has_Signature_Prefix (Get_Kind (Sign)),
5993                     "no field Signature_Prefix");
5994      return Get_Field1 (Sign);
5995   end Get_Signature_Prefix;
5996
5997   procedure Set_Signature_Prefix (Sign : Iir; Prefix : Iir) is
5998   begin
5999      pragma Assert (Sign /= Null_Iir);
6000      pragma Assert (Has_Signature_Prefix (Get_Kind (Sign)),
6001                     "no field Signature_Prefix");
6002      Set_Field1 (Sign, Prefix);
6003   end Set_Signature_Prefix;
6004
6005   function Get_External_Pathname (Name : Iir) return Iir is
6006   begin
6007      pragma Assert (Name /= Null_Iir);
6008      pragma Assert (Has_External_Pathname (Get_Kind (Name)),
6009                     "no field External_Pathname");
6010      return Get_Field3 (Name);
6011   end Get_External_Pathname;
6012
6013   procedure Set_External_Pathname (Name : Iir; Path : Iir) is
6014   begin
6015      pragma Assert (Name /= Null_Iir);
6016      pragma Assert (Has_External_Pathname (Get_Kind (Name)),
6017                     "no field External_Pathname");
6018      Set_Field3 (Name, Path);
6019   end Set_External_Pathname;
6020
6021   function Get_Pathname_Suffix (Path : Iir) return Iir is
6022   begin
6023      pragma Assert (Path /= Null_Iir);
6024      pragma Assert (Has_Pathname_Suffix (Get_Kind (Path)),
6025                     "no field Pathname_Suffix");
6026      return Get_Field2 (Path);
6027   end Get_Pathname_Suffix;
6028
6029   procedure Set_Pathname_Suffix (Path : Iir; Suffix : Iir) is
6030   begin
6031      pragma Assert (Path /= Null_Iir);
6032      pragma Assert (Has_Pathname_Suffix (Get_Kind (Path)),
6033                     "no field Pathname_Suffix");
6034      Set_Field2 (Path, Suffix);
6035   end Set_Pathname_Suffix;
6036
6037   function Get_Pathname_Expression (Path : Iir) return Iir is
6038   begin
6039      pragma Assert (Path /= Null_Iir);
6040      pragma Assert (Has_Pathname_Expression (Get_Kind (Path)),
6041                     "no field Pathname_Expression");
6042      return Get_Field5 (Path);
6043   end Get_Pathname_Expression;
6044
6045   procedure Set_Pathname_Expression (Path : Iir; Expr : Iir) is
6046   begin
6047      pragma Assert (Path /= Null_Iir);
6048      pragma Assert (Has_Pathname_Expression (Get_Kind (Path)),
6049                     "no field Pathname_Expression");
6050      Set_Field5 (Path, Expr);
6051   end Set_Pathname_Expression;
6052
6053   function Get_In_Formal_Flag (Name : Iir) return Boolean is
6054   begin
6055      pragma Assert (Name /= Null_Iir);
6056      pragma Assert (Has_In_Formal_Flag (Get_Kind (Name)),
6057                     "no field In_Formal_Flag");
6058      return Get_Flag4 (Name);
6059   end Get_In_Formal_Flag;
6060
6061   procedure Set_In_Formal_Flag (Name : Iir; Flag : Boolean) is
6062   begin
6063      pragma Assert (Name /= Null_Iir);
6064      pragma Assert (Has_In_Formal_Flag (Get_Kind (Name)),
6065                     "no field In_Formal_Flag");
6066      Set_Flag4 (Name, Flag);
6067   end Set_In_Formal_Flag;
6068
6069   function Get_Slice_Subtype (Slice : Iir) return Iir is
6070   begin
6071      pragma Assert (Slice /= Null_Iir);
6072      pragma Assert (Has_Slice_Subtype (Get_Kind (Slice)),
6073                     "no field Slice_Subtype");
6074      return Get_Field3 (Slice);
6075   end Get_Slice_Subtype;
6076
6077   procedure Set_Slice_Subtype (Slice : Iir; Atype : Iir) is
6078   begin
6079      pragma Assert (Slice /= Null_Iir);
6080      pragma Assert (Has_Slice_Subtype (Get_Kind (Slice)),
6081                     "no field Slice_Subtype");
6082      Set_Field3 (Slice, Atype);
6083   end Set_Slice_Subtype;
6084
6085   function Get_Suffix (Target : Iir) return Iir is
6086   begin
6087      pragma Assert (Target /= Null_Iir);
6088      pragma Assert (Has_Suffix (Get_Kind (Target)),
6089                     "no field Suffix");
6090      return Get_Field2 (Target);
6091   end Get_Suffix;
6092
6093   procedure Set_Suffix (Target : Iir; Suffix : Iir) is
6094   begin
6095      pragma Assert (Target /= Null_Iir);
6096      pragma Assert (Has_Suffix (Get_Kind (Target)),
6097                     "no field Suffix");
6098      Set_Field2 (Target, Suffix);
6099   end Set_Suffix;
6100
6101   function Get_Index_Subtype (Attr : Iir) return Iir is
6102   begin
6103      pragma Assert (Attr /= Null_Iir);
6104      pragma Assert (Has_Index_Subtype (Get_Kind (Attr)),
6105                     "no field Index_Subtype");
6106      return Get_Field2 (Attr);
6107   end Get_Index_Subtype;
6108
6109   procedure Set_Index_Subtype (Attr : Iir; St : Iir) is
6110   begin
6111      pragma Assert (Attr /= Null_Iir);
6112      pragma Assert (Has_Index_Subtype (Get_Kind (Attr)),
6113                     "no field Index_Subtype");
6114      Set_Field2 (Attr, St);
6115   end Set_Index_Subtype;
6116
6117   function Get_Parameter (Target : Iir) return Iir is
6118   begin
6119      pragma Assert (Target /= Null_Iir);
6120      pragma Assert (Has_Parameter (Get_Kind (Target)),
6121                     "no field Parameter");
6122      return Get_Field4 (Target);
6123   end Get_Parameter;
6124
6125   procedure Set_Parameter (Target : Iir; Param : Iir) is
6126   begin
6127      pragma Assert (Target /= Null_Iir);
6128      pragma Assert (Has_Parameter (Get_Kind (Target)),
6129                     "no field Parameter");
6130      Set_Field4 (Target, Param);
6131   end Set_Parameter;
6132
6133   function Get_Parameter_2 (Target : Iir) return Iir is
6134   begin
6135      pragma Assert (Target /= Null_Iir);
6136      pragma Assert (Has_Parameter_2 (Get_Kind (Target)),
6137                     "no field Parameter_2");
6138      return Get_Field6 (Target);
6139   end Get_Parameter_2;
6140
6141   procedure Set_Parameter_2 (Target : Iir; Param : Iir) is
6142   begin
6143      pragma Assert (Target /= Null_Iir);
6144      pragma Assert (Has_Parameter_2 (Get_Kind (Target)),
6145                     "no field Parameter_2");
6146      Set_Field6 (Target, Param);
6147   end Set_Parameter_2;
6148
6149   function Get_Parameter_3 (Target : Iir) return Iir is
6150   begin
6151      pragma Assert (Target /= Null_Iir);
6152      pragma Assert (Has_Parameter_3 (Get_Kind (Target)),
6153                     "no field Parameter_3");
6154      return Get_Field7 (Target);
6155   end Get_Parameter_3;
6156
6157   procedure Set_Parameter_3 (Target : Iir; Param : Iir) is
6158   begin
6159      pragma Assert (Target /= Null_Iir);
6160      pragma Assert (Has_Parameter_3 (Get_Kind (Target)),
6161                     "no field Parameter_3");
6162      Set_Field7 (Target, Param);
6163   end Set_Parameter_3;
6164
6165   function Get_Parameter_4 (Target : Iir) return Iir is
6166   begin
6167      pragma Assert (Target /= Null_Iir);
6168      pragma Assert (Has_Parameter_4 (Get_Kind (Target)),
6169                     "no field Parameter_4");
6170      return Get_Field8 (Target);
6171   end Get_Parameter_4;
6172
6173   procedure Set_Parameter_4 (Target : Iir; Param : Iir) is
6174   begin
6175      pragma Assert (Target /= Null_Iir);
6176      pragma Assert (Has_Parameter_4 (Get_Kind (Target)),
6177                     "no field Parameter_4");
6178      Set_Field8 (Target, Param);
6179   end Set_Parameter_4;
6180
6181   function Get_Attr_Chain (Attr : Iir) return Iir is
6182   begin
6183      pragma Assert (Attr /= Null_Iir);
6184      pragma Assert (Has_Attr_Chain (Get_Kind (Attr)),
6185                     "no field Attr_Chain");
6186      return Get_Field2 (Attr);
6187   end Get_Attr_Chain;
6188
6189   procedure Set_Attr_Chain (Attr : Iir; Chain : Iir) is
6190   begin
6191      pragma Assert (Attr /= Null_Iir);
6192      pragma Assert (Has_Attr_Chain (Get_Kind (Attr)),
6193                     "no field Attr_Chain");
6194      Set_Field2 (Attr, Chain);
6195   end Set_Attr_Chain;
6196
6197   function Get_Signal_Attribute_Declaration (Attr : Iir) return Iir is
6198   begin
6199      pragma Assert (Attr /= Null_Iir);
6200      pragma Assert (Has_Signal_Attribute_Declaration (Get_Kind (Attr)),
6201                     "no field Signal_Attribute_Declaration");
6202      return Get_Field3 (Attr);
6203   end Get_Signal_Attribute_Declaration;
6204
6205   procedure Set_Signal_Attribute_Declaration (Attr : Iir; Decl : Iir) is
6206   begin
6207      pragma Assert (Attr /= Null_Iir);
6208      pragma Assert (Has_Signal_Attribute_Declaration (Get_Kind (Attr)),
6209                     "no field Signal_Attribute_Declaration");
6210      Set_Field3 (Attr, Decl);
6211   end Set_Signal_Attribute_Declaration;
6212
6213   function Get_Actual_Type (Target : Iir) return Iir is
6214   begin
6215      pragma Assert (Target /= Null_Iir);
6216      pragma Assert (Has_Actual_Type (Get_Kind (Target)),
6217                     "no field Actual_Type");
6218      return Get_Field5 (Target);
6219   end Get_Actual_Type;
6220
6221   procedure Set_Actual_Type (Target : Iir; Atype : Iir) is
6222   begin
6223      pragma Assert (Target /= Null_Iir);
6224      pragma Assert (Has_Actual_Type (Get_Kind (Target)),
6225                     "no field Actual_Type");
6226      Set_Field5 (Target, Atype);
6227   end Set_Actual_Type;
6228
6229   function Get_Actual_Type_Definition (Target : Iir) return Iir is
6230   begin
6231      pragma Assert (Target /= Null_Iir);
6232      pragma Assert (Has_Actual_Type_Definition (Get_Kind (Target)),
6233                     "no field Actual_Type_Definition");
6234      return Get_Field3 (Target);
6235   end Get_Actual_Type_Definition;
6236
6237   procedure Set_Actual_Type_Definition (Target : Iir; Atype : Iir) is
6238   begin
6239      pragma Assert (Target /= Null_Iir);
6240      pragma Assert (Has_Actual_Type_Definition (Get_Kind (Target)),
6241                     "no field Actual_Type_Definition");
6242      Set_Field3 (Target, Atype);
6243   end Set_Actual_Type_Definition;
6244
6245   function Get_Association_Chain (Target : Iir) return Iir is
6246   begin
6247      pragma Assert (Target /= Null_Iir);
6248      pragma Assert (Has_Association_Chain (Get_Kind (Target)),
6249                     "no field Association_Chain");
6250      return Get_Field2 (Target);
6251   end Get_Association_Chain;
6252
6253   procedure Set_Association_Chain (Target : Iir; Chain : Iir) is
6254   begin
6255      pragma Assert (Target /= Null_Iir);
6256      pragma Assert (Has_Association_Chain (Get_Kind (Target)),
6257                     "no field Association_Chain");
6258      Set_Field2 (Target, Chain);
6259   end Set_Association_Chain;
6260
6261   function Get_Individual_Association_Chain (Target : Iir) return Iir is
6262   begin
6263      pragma Assert (Target /= Null_Iir);
6264      pragma Assert (Has_Individual_Association_Chain (Get_Kind (Target)),
6265                     "no field Individual_Association_Chain");
6266      return Get_Field4 (Target);
6267   end Get_Individual_Association_Chain;
6268
6269   procedure Set_Individual_Association_Chain (Target : Iir; Chain : Iir) is
6270   begin
6271      pragma Assert (Target /= Null_Iir);
6272      pragma Assert (Has_Individual_Association_Chain (Get_Kind (Target)),
6273                     "no field Individual_Association_Chain");
6274      Set_Field4 (Target, Chain);
6275   end Set_Individual_Association_Chain;
6276
6277   function Get_Subprogram_Association_Chain (Target : Iir) return Iir is
6278   begin
6279      pragma Assert (Target /= Null_Iir);
6280      pragma Assert (Has_Subprogram_Association_Chain (Get_Kind (Target)),
6281                     "no field Subprogram_Association_Chain");
6282      return Get_Field4 (Target);
6283   end Get_Subprogram_Association_Chain;
6284
6285   procedure Set_Subprogram_Association_Chain (Target : Iir; Chain : Iir) is
6286   begin
6287      pragma Assert (Target /= Null_Iir);
6288      pragma Assert (Has_Subprogram_Association_Chain (Get_Kind (Target)),
6289                     "no field Subprogram_Association_Chain");
6290      Set_Field4 (Target, Chain);
6291   end Set_Subprogram_Association_Chain;
6292
6293   function Get_Aggregate_Info (Target : Iir) return Iir is
6294   begin
6295      pragma Assert (Target /= Null_Iir);
6296      pragma Assert (Has_Aggregate_Info (Get_Kind (Target)),
6297                     "no field Aggregate_Info");
6298      return Get_Field5 (Target);
6299   end Get_Aggregate_Info;
6300
6301   procedure Set_Aggregate_Info (Target : Iir; Info : Iir) is
6302   begin
6303      pragma Assert (Target /= Null_Iir);
6304      pragma Assert (Has_Aggregate_Info (Get_Kind (Target)),
6305                     "no field Aggregate_Info");
6306      Set_Field5 (Target, Info);
6307   end Set_Aggregate_Info;
6308
6309   function Get_Sub_Aggregate_Info (Target : Iir) return Iir is
6310   begin
6311      pragma Assert (Target /= Null_Iir);
6312      pragma Assert (Has_Sub_Aggregate_Info (Get_Kind (Target)),
6313                     "no field Sub_Aggregate_Info");
6314      return Get_Field1 (Target);
6315   end Get_Sub_Aggregate_Info;
6316
6317   procedure Set_Sub_Aggregate_Info (Target : Iir; Info : Iir) is
6318   begin
6319      pragma Assert (Target /= Null_Iir);
6320      pragma Assert (Has_Sub_Aggregate_Info (Get_Kind (Target)),
6321                     "no field Sub_Aggregate_Info");
6322      Set_Field1 (Target, Info);
6323   end Set_Sub_Aggregate_Info;
6324
6325   function Get_Aggr_Dynamic_Flag (Target : Iir) return Boolean is
6326   begin
6327      pragma Assert (Target /= Null_Iir);
6328      pragma Assert (Has_Aggr_Dynamic_Flag (Get_Kind (Target)),
6329                     "no field Aggr_Dynamic_Flag");
6330      return Get_Flag3 (Target);
6331   end Get_Aggr_Dynamic_Flag;
6332
6333   procedure Set_Aggr_Dynamic_Flag (Target : Iir; Val : Boolean) is
6334   begin
6335      pragma Assert (Target /= Null_Iir);
6336      pragma Assert (Has_Aggr_Dynamic_Flag (Get_Kind (Target)),
6337                     "no field Aggr_Dynamic_Flag");
6338      Set_Flag3 (Target, Val);
6339   end Set_Aggr_Dynamic_Flag;
6340
6341   function Get_Aggr_Min_Length (Info : Iir_Aggregate_Info) return Iir_Int32
6342   is
6343   begin
6344      pragma Assert (Info /= Null_Iir);
6345      pragma Assert (Has_Aggr_Min_Length (Get_Kind (Info)),
6346                     "no field Aggr_Min_Length");
6347      return Iir_To_Iir_Int32 (Get_Field4 (Info));
6348   end Get_Aggr_Min_Length;
6349
6350   procedure Set_Aggr_Min_Length (Info : Iir_Aggregate_Info; Nbr : Iir_Int32)
6351   is
6352   begin
6353      pragma Assert (Info /= Null_Iir);
6354      pragma Assert (Has_Aggr_Min_Length (Get_Kind (Info)),
6355                     "no field Aggr_Min_Length");
6356      Set_Field4 (Info, Iir_Int32_To_Iir (Nbr));
6357   end Set_Aggr_Min_Length;
6358
6359   function Get_Aggr_Low_Limit (Target : Iir_Aggregate_Info) return Iir is
6360   begin
6361      pragma Assert (Target /= Null_Iir);
6362      pragma Assert (Has_Aggr_Low_Limit (Get_Kind (Target)),
6363                     "no field Aggr_Low_Limit");
6364      return Get_Field2 (Target);
6365   end Get_Aggr_Low_Limit;
6366
6367   procedure Set_Aggr_Low_Limit (Target : Iir_Aggregate_Info; Limit : Iir) is
6368   begin
6369      pragma Assert (Target /= Null_Iir);
6370      pragma Assert (Has_Aggr_Low_Limit (Get_Kind (Target)),
6371                     "no field Aggr_Low_Limit");
6372      Set_Field2 (Target, Limit);
6373   end Set_Aggr_Low_Limit;
6374
6375   function Get_Aggr_High_Limit (Target : Iir_Aggregate_Info) return Iir is
6376   begin
6377      pragma Assert (Target /= Null_Iir);
6378      pragma Assert (Has_Aggr_High_Limit (Get_Kind (Target)),
6379                     "no field Aggr_High_Limit");
6380      return Get_Field3 (Target);
6381   end Get_Aggr_High_Limit;
6382
6383   procedure Set_Aggr_High_Limit (Target : Iir_Aggregate_Info; Limit : Iir) is
6384   begin
6385      pragma Assert (Target /= Null_Iir);
6386      pragma Assert (Has_Aggr_High_Limit (Get_Kind (Target)),
6387                     "no field Aggr_High_Limit");
6388      Set_Field3 (Target, Limit);
6389   end Set_Aggr_High_Limit;
6390
6391   function Get_Aggr_Others_Flag (Target : Iir_Aggregate_Info) return Boolean
6392   is
6393   begin
6394      pragma Assert (Target /= Null_Iir);
6395      pragma Assert (Has_Aggr_Others_Flag (Get_Kind (Target)),
6396                     "no field Aggr_Others_Flag");
6397      return Get_Flag2 (Target);
6398   end Get_Aggr_Others_Flag;
6399
6400   procedure Set_Aggr_Others_Flag (Target : Iir_Aggregate_Info; Val : Boolean)
6401   is
6402   begin
6403      pragma Assert (Target /= Null_Iir);
6404      pragma Assert (Has_Aggr_Others_Flag (Get_Kind (Target)),
6405                     "no field Aggr_Others_Flag");
6406      Set_Flag2 (Target, Val);
6407   end Set_Aggr_Others_Flag;
6408
6409   function Get_Aggr_Named_Flag (Target : Iir_Aggregate_Info) return Boolean
6410   is
6411   begin
6412      pragma Assert (Target /= Null_Iir);
6413      pragma Assert (Has_Aggr_Named_Flag (Get_Kind (Target)),
6414                     "no field Aggr_Named_Flag");
6415      return Get_Flag4 (Target);
6416   end Get_Aggr_Named_Flag;
6417
6418   procedure Set_Aggr_Named_Flag (Target : Iir_Aggregate_Info; Val : Boolean)
6419   is
6420   begin
6421      pragma Assert (Target /= Null_Iir);
6422      pragma Assert (Has_Aggr_Named_Flag (Get_Kind (Target)),
6423                     "no field Aggr_Named_Flag");
6424      Set_Flag4 (Target, Val);
6425   end Set_Aggr_Named_Flag;
6426
6427   function Get_Aggregate_Expand_Flag (Aggr : Iir) return Boolean is
6428   begin
6429      pragma Assert (Aggr /= Null_Iir);
6430      pragma Assert (Has_Aggregate_Expand_Flag (Get_Kind (Aggr)),
6431                     "no field Aggregate_Expand_Flag");
6432      return Get_Flag1 (Aggr);
6433   end Get_Aggregate_Expand_Flag;
6434
6435   procedure Set_Aggregate_Expand_Flag (Aggr : Iir; Flag : Boolean) is
6436   begin
6437      pragma Assert (Aggr /= Null_Iir);
6438      pragma Assert (Has_Aggregate_Expand_Flag (Get_Kind (Aggr)),
6439                     "no field Aggregate_Expand_Flag");
6440      Set_Flag1 (Aggr, Flag);
6441   end Set_Aggregate_Expand_Flag;
6442
6443   function Get_Association_Choices_Chain (Target : Iir) return Iir is
6444   begin
6445      pragma Assert (Target /= Null_Iir);
6446      pragma Assert (Has_Association_Choices_Chain (Get_Kind (Target)),
6447                     "no field Association_Choices_Chain");
6448      return Get_Field4 (Target);
6449   end Get_Association_Choices_Chain;
6450
6451   procedure Set_Association_Choices_Chain (Target : Iir; Chain : Iir) is
6452   begin
6453      pragma Assert (Target /= Null_Iir);
6454      pragma Assert (Has_Association_Choices_Chain (Get_Kind (Target)),
6455                     "no field Association_Choices_Chain");
6456      Set_Field4 (Target, Chain);
6457   end Set_Association_Choices_Chain;
6458
6459   function Get_Case_Statement_Alternative_Chain (Target : Iir) return Iir is
6460   begin
6461      pragma Assert (Target /= Null_Iir);
6462      pragma Assert (Has_Case_Statement_Alternative_Chain (Get_Kind (Target)),
6463                     "no field Case_Statement_Alternative_Chain");
6464      return Get_Field1 (Target);
6465   end Get_Case_Statement_Alternative_Chain;
6466
6467   procedure Set_Case_Statement_Alternative_Chain (Target : Iir; Chain : Iir)
6468   is
6469   begin
6470      pragma Assert (Target /= Null_Iir);
6471      pragma Assert (Has_Case_Statement_Alternative_Chain (Get_Kind (Target)),
6472                     "no field Case_Statement_Alternative_Chain");
6473      Set_Field1 (Target, Chain);
6474   end Set_Case_Statement_Alternative_Chain;
6475
6476   function Get_Choice_Staticness (Target : Iir) return Iir_Staticness is
6477   begin
6478      pragma Assert (Target /= Null_Iir);
6479      pragma Assert (Has_Choice_Staticness (Get_Kind (Target)),
6480                     "no field Choice_Staticness");
6481      return Iir_Staticness'Val (Get_State1 (Target));
6482   end Get_Choice_Staticness;
6483
6484   procedure Set_Choice_Staticness (Target : Iir; Staticness : Iir_Staticness)
6485   is
6486   begin
6487      pragma Assert (Target /= Null_Iir);
6488      pragma Assert (Has_Choice_Staticness (Get_Kind (Target)),
6489                     "no field Choice_Staticness");
6490      Set_State1 (Target, Iir_Staticness'Pos (Staticness));
6491   end Set_Choice_Staticness;
6492
6493   function Get_Procedure_Call (Stmt : Iir) return Iir is
6494   begin
6495      pragma Assert (Stmt /= Null_Iir);
6496      pragma Assert (Has_Procedure_Call (Get_Kind (Stmt)),
6497                     "no field Procedure_Call");
6498      return Get_Field1 (Stmt);
6499   end Get_Procedure_Call;
6500
6501   procedure Set_Procedure_Call (Stmt : Iir; Call : Iir) is
6502   begin
6503      pragma Assert (Stmt /= Null_Iir);
6504      pragma Assert (Has_Procedure_Call (Get_Kind (Stmt)),
6505                     "no field Procedure_Call");
6506      Set_Field1 (Stmt, Call);
6507   end Set_Procedure_Call;
6508
6509   function Get_Implementation (Target : Iir) return Iir is
6510   begin
6511      pragma Assert (Target /= Null_Iir);
6512      pragma Assert (Has_Implementation (Get_Kind (Target)),
6513                     "no field Implementation");
6514      return Get_Field3 (Target);
6515   end Get_Implementation;
6516
6517   procedure Set_Implementation (Target : Iir; Decl : Iir) is
6518   begin
6519      pragma Assert (Target /= Null_Iir);
6520      pragma Assert (Has_Implementation (Get_Kind (Target)),
6521                     "no field Implementation");
6522      Set_Field3 (Target, Decl);
6523   end Set_Implementation;
6524
6525   function Get_Parameter_Association_Chain (Target : Iir) return Iir is
6526   begin
6527      pragma Assert (Target /= Null_Iir);
6528      pragma Assert (Has_Parameter_Association_Chain (Get_Kind (Target)),
6529                     "no field Parameter_Association_Chain");
6530      return Get_Field2 (Target);
6531   end Get_Parameter_Association_Chain;
6532
6533   procedure Set_Parameter_Association_Chain (Target : Iir; Chain : Iir) is
6534   begin
6535      pragma Assert (Target /= Null_Iir);
6536      pragma Assert (Has_Parameter_Association_Chain (Get_Kind (Target)),
6537                     "no field Parameter_Association_Chain");
6538      Set_Field2 (Target, Chain);
6539   end Set_Parameter_Association_Chain;
6540
6541   function Get_Method_Object (Target : Iir) return Iir is
6542   begin
6543      pragma Assert (Target /= Null_Iir);
6544      pragma Assert (Has_Method_Object (Get_Kind (Target)),
6545                     "no field Method_Object");
6546      return Get_Field4 (Target);
6547   end Get_Method_Object;
6548
6549   procedure Set_Method_Object (Target : Iir; Object : Iir) is
6550   begin
6551      pragma Assert (Target /= Null_Iir);
6552      pragma Assert (Has_Method_Object (Get_Kind (Target)),
6553                     "no field Method_Object");
6554      Set_Field4 (Target, Object);
6555   end Set_Method_Object;
6556
6557   function Get_Subtype_Type_Mark (Target : Iir) return Iir is
6558   begin
6559      pragma Assert (Target /= Null_Iir);
6560      pragma Assert (Has_Subtype_Type_Mark (Get_Kind (Target)),
6561                     "no field Subtype_Type_Mark");
6562      return Get_Field2 (Target);
6563   end Get_Subtype_Type_Mark;
6564
6565   procedure Set_Subtype_Type_Mark (Target : Iir; Mark : Iir) is
6566   begin
6567      pragma Assert (Target /= Null_Iir);
6568      pragma Assert (Has_Subtype_Type_Mark (Get_Kind (Target)),
6569                     "no field Subtype_Type_Mark");
6570      Set_Field2 (Target, Mark);
6571   end Set_Subtype_Type_Mark;
6572
6573   function Get_Subnature_Nature_Mark (Target : Iir) return Iir is
6574   begin
6575      pragma Assert (Target /= Null_Iir);
6576      pragma Assert (Has_Subnature_Nature_Mark (Get_Kind (Target)),
6577                     "no field Subnature_Nature_Mark");
6578      return Get_Field2 (Target);
6579   end Get_Subnature_Nature_Mark;
6580
6581   procedure Set_Subnature_Nature_Mark (Target : Iir; Mark : Iir) is
6582   begin
6583      pragma Assert (Target /= Null_Iir);
6584      pragma Assert (Has_Subnature_Nature_Mark (Get_Kind (Target)),
6585                     "no field Subnature_Nature_Mark");
6586      Set_Field2 (Target, Mark);
6587   end Set_Subnature_Nature_Mark;
6588
6589   function Get_Type_Conversion_Subtype (Target : Iir) return Iir is
6590   begin
6591      pragma Assert (Target /= Null_Iir);
6592      pragma Assert (Has_Type_Conversion_Subtype (Get_Kind (Target)),
6593                     "no field Type_Conversion_Subtype");
6594      return Get_Field3 (Target);
6595   end Get_Type_Conversion_Subtype;
6596
6597   procedure Set_Type_Conversion_Subtype (Target : Iir; Atype : Iir) is
6598   begin
6599      pragma Assert (Target /= Null_Iir);
6600      pragma Assert (Has_Type_Conversion_Subtype (Get_Kind (Target)),
6601                     "no field Type_Conversion_Subtype");
6602      Set_Field3 (Target, Atype);
6603   end Set_Type_Conversion_Subtype;
6604
6605   function Get_Type_Mark (Target : Iir) return Iir is
6606   begin
6607      pragma Assert (Target /= Null_Iir);
6608      pragma Assert (Has_Type_Mark (Get_Kind (Target)),
6609                     "no field Type_Mark");
6610      return Get_Field4 (Target);
6611   end Get_Type_Mark;
6612
6613   procedure Set_Type_Mark (Target : Iir; Mark : Iir) is
6614   begin
6615      pragma Assert (Target /= Null_Iir);
6616      pragma Assert (Has_Type_Mark (Get_Kind (Target)),
6617                     "no field Type_Mark");
6618      Set_Field4 (Target, Mark);
6619   end Set_Type_Mark;
6620
6621   function Get_File_Type_Mark (Target : Iir) return Iir is
6622   begin
6623      pragma Assert (Target /= Null_Iir);
6624      pragma Assert (Has_File_Type_Mark (Get_Kind (Target)),
6625                     "no field File_Type_Mark");
6626      return Get_Field2 (Target);
6627   end Get_File_Type_Mark;
6628
6629   procedure Set_File_Type_Mark (Target : Iir; Mark : Iir) is
6630   begin
6631      pragma Assert (Target /= Null_Iir);
6632      pragma Assert (Has_File_Type_Mark (Get_Kind (Target)),
6633                     "no field File_Type_Mark");
6634      Set_Field2 (Target, Mark);
6635   end Set_File_Type_Mark;
6636
6637   function Get_Return_Type_Mark (Target : Iir) return Iir is
6638   begin
6639      pragma Assert (Target /= Null_Iir);
6640      pragma Assert (Has_Return_Type_Mark (Get_Kind (Target)),
6641                     "no field Return_Type_Mark");
6642      return Get_Field8 (Target);
6643   end Get_Return_Type_Mark;
6644
6645   procedure Set_Return_Type_Mark (Target : Iir; Mark : Iir) is
6646   begin
6647      pragma Assert (Target /= Null_Iir);
6648      pragma Assert (Has_Return_Type_Mark (Get_Kind (Target)),
6649                     "no field Return_Type_Mark");
6650      Set_Field8 (Target, Mark);
6651   end Set_Return_Type_Mark;
6652
6653   function Get_Has_Disconnect_Flag (Target : Iir) return Boolean is
6654   begin
6655      pragma Assert (Target /= Null_Iir);
6656      pragma Assert (Has_Has_Disconnect_Flag (Get_Kind (Target)),
6657                     "no field Has_Disconnect_Flag");
6658      return Get_Flag1 (Target);
6659   end Get_Has_Disconnect_Flag;
6660
6661   procedure Set_Has_Disconnect_Flag (Target : Iir; Val : Boolean) is
6662   begin
6663      pragma Assert (Target /= Null_Iir);
6664      pragma Assert (Has_Has_Disconnect_Flag (Get_Kind (Target)),
6665                     "no field Has_Disconnect_Flag");
6666      Set_Flag1 (Target, Val);
6667   end Set_Has_Disconnect_Flag;
6668
6669   function Get_Has_Active_Flag (Target : Iir) return Boolean is
6670   begin
6671      pragma Assert (Target /= Null_Iir);
6672      pragma Assert (Has_Has_Active_Flag (Get_Kind (Target)),
6673                     "no field Has_Active_Flag");
6674      return Get_Flag2 (Target);
6675   end Get_Has_Active_Flag;
6676
6677   procedure Set_Has_Active_Flag (Target : Iir; Val : Boolean) is
6678   begin
6679      pragma Assert (Target /= Null_Iir);
6680      pragma Assert (Has_Has_Active_Flag (Get_Kind (Target)),
6681                     "no field Has_Active_Flag");
6682      Set_Flag2 (Target, Val);
6683   end Set_Has_Active_Flag;
6684
6685   function Get_Is_Within_Flag (Target : Iir) return Boolean is
6686   begin
6687      pragma Assert (Target /= Null_Iir);
6688      pragma Assert (Has_Is_Within_Flag (Get_Kind (Target)),
6689                     "no field Is_Within_Flag");
6690      return Get_Flag5 (Target);
6691   end Get_Is_Within_Flag;
6692
6693   procedure Set_Is_Within_Flag (Target : Iir; Val : Boolean) is
6694   begin
6695      pragma Assert (Target /= Null_Iir);
6696      pragma Assert (Has_Is_Within_Flag (Get_Kind (Target)),
6697                     "no field Is_Within_Flag");
6698      Set_Flag5 (Target, Val);
6699   end Set_Is_Within_Flag;
6700
6701   function Get_Type_Marks_List (Target : Iir) return Iir_Flist is
6702   begin
6703      pragma Assert (Target /= Null_Iir);
6704      pragma Assert (Has_Type_Marks_List (Get_Kind (Target)),
6705                     "no field Type_Marks_List");
6706      return Iir_To_Iir_Flist (Get_Field2 (Target));
6707   end Get_Type_Marks_List;
6708
6709   procedure Set_Type_Marks_List (Target : Iir; List : Iir_Flist) is
6710   begin
6711      pragma Assert (Target /= Null_Iir);
6712      pragma Assert (Has_Type_Marks_List (Get_Kind (Target)),
6713                     "no field Type_Marks_List");
6714      Set_Field2 (Target, Iir_Flist_To_Iir (List));
6715   end Set_Type_Marks_List;
6716
6717   function Get_Implicit_Alias_Flag (Decl : Iir) return Boolean is
6718   begin
6719      pragma Assert (Decl /= Null_Iir);
6720      pragma Assert (Has_Implicit_Alias_Flag (Get_Kind (Decl)),
6721                     "no field Implicit_Alias_Flag");
6722      return Get_Flag1 (Decl);
6723   end Get_Implicit_Alias_Flag;
6724
6725   procedure Set_Implicit_Alias_Flag (Decl : Iir; Flag : Boolean) is
6726   begin
6727      pragma Assert (Decl /= Null_Iir);
6728      pragma Assert (Has_Implicit_Alias_Flag (Get_Kind (Decl)),
6729                     "no field Implicit_Alias_Flag");
6730      Set_Flag1 (Decl, Flag);
6731   end Set_Implicit_Alias_Flag;
6732
6733   function Get_Alias_Signature (Alias : Iir) return Iir is
6734   begin
6735      pragma Assert (Alias /= Null_Iir);
6736      pragma Assert (Has_Alias_Signature (Get_Kind (Alias)),
6737                     "no field Alias_Signature");
6738      return Get_Field5 (Alias);
6739   end Get_Alias_Signature;
6740
6741   procedure Set_Alias_Signature (Alias : Iir; Signature : Iir) is
6742   begin
6743      pragma Assert (Alias /= Null_Iir);
6744      pragma Assert (Has_Alias_Signature (Get_Kind (Alias)),
6745                     "no field Alias_Signature");
6746      Set_Field5 (Alias, Signature);
6747   end Set_Alias_Signature;
6748
6749   function Get_Attribute_Signature (Attr : Iir) return Iir is
6750   begin
6751      pragma Assert (Attr /= Null_Iir);
6752      pragma Assert (Has_Attribute_Signature (Get_Kind (Attr)),
6753                     "no field Attribute_Signature");
6754      return Get_Field2 (Attr);
6755   end Get_Attribute_Signature;
6756
6757   procedure Set_Attribute_Signature (Attr : Iir; Signature : Iir) is
6758   begin
6759      pragma Assert (Attr /= Null_Iir);
6760      pragma Assert (Has_Attribute_Signature (Get_Kind (Attr)),
6761                     "no field Attribute_Signature");
6762      Set_Field2 (Attr, Signature);
6763   end Set_Attribute_Signature;
6764
6765   function Get_Overload_List (Target : Iir) return Iir_List is
6766   begin
6767      pragma Assert (Target /= Null_Iir);
6768      pragma Assert (Has_Overload_List (Get_Kind (Target)),
6769                     "no field Overload_List");
6770      return Iir_To_Iir_List (Get_Field1 (Target));
6771   end Get_Overload_List;
6772
6773   procedure Set_Overload_List (Target : Iir; List : Iir_List) is
6774   begin
6775      pragma Assert (Target /= Null_Iir);
6776      pragma Assert (Has_Overload_List (Get_Kind (Target)),
6777                     "no field Overload_List");
6778      Set_Field1 (Target, Iir_List_To_Iir (List));
6779   end Set_Overload_List;
6780
6781   function Get_Simple_Name_Identifier (Target : Iir) return Name_Id is
6782   begin
6783      pragma Assert (Target /= Null_Iir);
6784      pragma Assert (Has_Simple_Name_Identifier (Get_Kind (Target)),
6785                     "no field Simple_Name_Identifier");
6786      return Iir_To_Name_Id (Get_Field3 (Target));
6787   end Get_Simple_Name_Identifier;
6788
6789   procedure Set_Simple_Name_Identifier (Target : Iir; Ident : Name_Id) is
6790   begin
6791      pragma Assert (Target /= Null_Iir);
6792      pragma Assert (Has_Simple_Name_Identifier (Get_Kind (Target)),
6793                     "no field Simple_Name_Identifier");
6794      Set_Field3 (Target, Name_Id_To_Iir (Ident));
6795   end Set_Simple_Name_Identifier;
6796
6797   function Get_Simple_Name_Subtype (Target : Iir) return Iir is
6798   begin
6799      pragma Assert (Target /= Null_Iir);
6800      pragma Assert (Has_Simple_Name_Subtype (Get_Kind (Target)),
6801                     "no field Simple_Name_Subtype");
6802      return Get_Field4 (Target);
6803   end Get_Simple_Name_Subtype;
6804
6805   procedure Set_Simple_Name_Subtype (Target : Iir; Atype : Iir) is
6806   begin
6807      pragma Assert (Target /= Null_Iir);
6808      pragma Assert (Has_Simple_Name_Subtype (Get_Kind (Target)),
6809                     "no field Simple_Name_Subtype");
6810      Set_Field4 (Target, Atype);
6811   end Set_Simple_Name_Subtype;
6812
6813   function Get_Protected_Type_Body (Target : Iir) return Iir is
6814   begin
6815      pragma Assert (Target /= Null_Iir);
6816      pragma Assert (Has_Protected_Type_Body (Get_Kind (Target)),
6817                     "no field Protected_Type_Body");
6818      return Get_Field2 (Target);
6819   end Get_Protected_Type_Body;
6820
6821   procedure Set_Protected_Type_Body (Target : Iir; Bod : Iir) is
6822   begin
6823      pragma Assert (Target /= Null_Iir);
6824      pragma Assert (Has_Protected_Type_Body (Get_Kind (Target)),
6825                     "no field Protected_Type_Body");
6826      Set_Field2 (Target, Bod);
6827   end Set_Protected_Type_Body;
6828
6829   function Get_Protected_Type_Declaration (Target : Iir) return Iir is
6830   begin
6831      pragma Assert (Target /= Null_Iir);
6832      pragma Assert (Has_Protected_Type_Declaration (Get_Kind (Target)),
6833                     "no field Protected_Type_Declaration");
6834      return Get_Field4 (Target);
6835   end Get_Protected_Type_Declaration;
6836
6837   procedure Set_Protected_Type_Declaration (Target : Iir; Decl : Iir) is
6838   begin
6839      pragma Assert (Target /= Null_Iir);
6840      pragma Assert (Has_Protected_Type_Declaration (Get_Kind (Target)),
6841                     "no field Protected_Type_Declaration");
6842      Set_Field4 (Target, Decl);
6843   end Set_Protected_Type_Declaration;
6844
6845   function Get_Use_Flag (Decl : Iir) return Boolean is
6846   begin
6847      pragma Assert (Decl /= Null_Iir);
6848      pragma Assert (Has_Use_Flag (Get_Kind (Decl)),
6849                     "no field Use_Flag");
6850      return Get_Flag6 (Decl);
6851   end Get_Use_Flag;
6852
6853   procedure Set_Use_Flag (Decl : Iir; Val : Boolean) is
6854   begin
6855      pragma Assert (Decl /= Null_Iir);
6856      pragma Assert (Has_Use_Flag (Get_Kind (Decl)),
6857                     "no field Use_Flag");
6858      Set_Flag6 (Decl, Val);
6859   end Set_Use_Flag;
6860
6861   function Get_End_Has_Reserved_Id (Decl : Iir) return Boolean is
6862   begin
6863      pragma Assert (Decl /= Null_Iir);
6864      pragma Assert (Has_End_Has_Reserved_Id (Get_Kind (Decl)),
6865                     "no field End_Has_Reserved_Id");
6866      return Get_Flag8 (Decl);
6867   end Get_End_Has_Reserved_Id;
6868
6869   procedure Set_End_Has_Reserved_Id (Decl : Iir; Flag : Boolean) is
6870   begin
6871      pragma Assert (Decl /= Null_Iir);
6872      pragma Assert (Has_End_Has_Reserved_Id (Get_Kind (Decl)),
6873                     "no field End_Has_Reserved_Id");
6874      Set_Flag8 (Decl, Flag);
6875   end Set_End_Has_Reserved_Id;
6876
6877   function Get_End_Has_Identifier (Decl : Iir) return Boolean is
6878   begin
6879      pragma Assert (Decl /= Null_Iir);
6880      pragma Assert (Has_End_Has_Identifier (Get_Kind (Decl)),
6881                     "no field End_Has_Identifier");
6882      return Get_Flag9 (Decl);
6883   end Get_End_Has_Identifier;
6884
6885   procedure Set_End_Has_Identifier (Decl : Iir; Flag : Boolean) is
6886   begin
6887      pragma Assert (Decl /= Null_Iir);
6888      pragma Assert (Has_End_Has_Identifier (Get_Kind (Decl)),
6889                     "no field End_Has_Identifier");
6890      Set_Flag9 (Decl, Flag);
6891   end Set_End_Has_Identifier;
6892
6893   function Get_End_Has_Postponed (Decl : Iir) return Boolean is
6894   begin
6895      pragma Assert (Decl /= Null_Iir);
6896      pragma Assert (Has_End_Has_Postponed (Get_Kind (Decl)),
6897                     "no field End_Has_Postponed");
6898      return Get_Flag10 (Decl);
6899   end Get_End_Has_Postponed;
6900
6901   procedure Set_End_Has_Postponed (Decl : Iir; Flag : Boolean) is
6902   begin
6903      pragma Assert (Decl /= Null_Iir);
6904      pragma Assert (Has_End_Has_Postponed (Get_Kind (Decl)),
6905                     "no field End_Has_Postponed");
6906      Set_Flag10 (Decl, Flag);
6907   end Set_End_Has_Postponed;
6908
6909   function Get_Has_Label (Decl : Iir) return Boolean is
6910   begin
6911      pragma Assert (Decl /= Null_Iir);
6912      pragma Assert (Has_Has_Label (Get_Kind (Decl)),
6913                     "no field Has_Label");
6914      return Get_Flag6 (Decl);
6915   end Get_Has_Label;
6916
6917   procedure Set_Has_Label (Decl : Iir; Flag : Boolean) is
6918   begin
6919      pragma Assert (Decl /= Null_Iir);
6920      pragma Assert (Has_Has_Label (Get_Kind (Decl)),
6921                     "no field Has_Label");
6922      Set_Flag6 (Decl, Flag);
6923   end Set_Has_Label;
6924
6925   function Get_Has_Begin (Decl : Iir) return Boolean is
6926   begin
6927      pragma Assert (Decl /= Null_Iir);
6928      pragma Assert (Has_Has_Begin (Get_Kind (Decl)),
6929                     "no field Has_Begin");
6930      return Get_Flag10 (Decl);
6931   end Get_Has_Begin;
6932
6933   procedure Set_Has_Begin (Decl : Iir; Flag : Boolean) is
6934   begin
6935      pragma Assert (Decl /= Null_Iir);
6936      pragma Assert (Has_Has_Begin (Get_Kind (Decl)),
6937                     "no field Has_Begin");
6938      Set_Flag10 (Decl, Flag);
6939   end Set_Has_Begin;
6940
6941   function Get_Has_End (Decl : Iir) return Boolean is
6942   begin
6943      pragma Assert (Decl /= Null_Iir);
6944      pragma Assert (Has_Has_End (Get_Kind (Decl)),
6945                     "no field Has_End");
6946      return Get_Flag11 (Decl);
6947   end Get_Has_End;
6948
6949   procedure Set_Has_End (Decl : Iir; Flag : Boolean) is
6950   begin
6951      pragma Assert (Decl /= Null_Iir);
6952      pragma Assert (Has_Has_End (Get_Kind (Decl)),
6953                     "no field Has_End");
6954      Set_Flag11 (Decl, Flag);
6955   end Set_Has_End;
6956
6957   function Get_Has_Is (Decl : Iir) return Boolean is
6958   begin
6959      pragma Assert (Decl /= Null_Iir);
6960      pragma Assert (Has_Has_Is (Get_Kind (Decl)),
6961                     "no field Has_Is");
6962      return Get_Flag7 (Decl);
6963   end Get_Has_Is;
6964
6965   procedure Set_Has_Is (Decl : Iir; Flag : Boolean) is
6966   begin
6967      pragma Assert (Decl /= Null_Iir);
6968      pragma Assert (Has_Has_Is (Get_Kind (Decl)),
6969                     "no field Has_Is");
6970      Set_Flag7 (Decl, Flag);
6971   end Set_Has_Is;
6972
6973   function Get_Has_Pure (Decl : Iir) return Boolean is
6974   begin
6975      pragma Assert (Decl /= Null_Iir);
6976      pragma Assert (Has_Has_Pure (Get_Kind (Decl)),
6977                     "no field Has_Pure");
6978      return Get_Flag8 (Decl);
6979   end Get_Has_Pure;
6980
6981   procedure Set_Has_Pure (Decl : Iir; Flag : Boolean) is
6982   begin
6983      pragma Assert (Decl /= Null_Iir);
6984      pragma Assert (Has_Has_Pure (Get_Kind (Decl)),
6985                     "no field Has_Pure");
6986      Set_Flag8 (Decl, Flag);
6987   end Set_Has_Pure;
6988
6989   function Get_Has_Body (Decl : Iir) return Boolean is
6990   begin
6991      pragma Assert (Decl /= Null_Iir);
6992      pragma Assert (Has_Has_Body (Get_Kind (Decl)),
6993                     "no field Has_Body");
6994      return Get_Flag9 (Decl);
6995   end Get_Has_Body;
6996
6997   procedure Set_Has_Body (Decl : Iir; Flag : Boolean) is
6998   begin
6999      pragma Assert (Decl /= Null_Iir);
7000      pragma Assert (Has_Has_Body (Get_Kind (Decl)),
7001                     "no field Has_Body");
7002      Set_Flag9 (Decl, Flag);
7003   end Set_Has_Body;
7004
7005   function Get_Has_Parameter (Decl : Iir) return Boolean is
7006   begin
7007      pragma Assert (Decl /= Null_Iir);
7008      pragma Assert (Has_Has_Parameter (Get_Kind (Decl)),
7009                     "no field Has_Parameter");
7010      return Get_Flag10 (Decl);
7011   end Get_Has_Parameter;
7012
7013   procedure Set_Has_Parameter (Decl : Iir; Flag : Boolean) is
7014   begin
7015      pragma Assert (Decl /= Null_Iir);
7016      pragma Assert (Has_Has_Parameter (Get_Kind (Decl)),
7017                     "no field Has_Parameter");
7018      Set_Flag10 (Decl, Flag);
7019   end Set_Has_Parameter;
7020
7021   function Get_Has_Component (Decl : Iir) return Boolean is
7022   begin
7023      pragma Assert (Decl /= Null_Iir);
7024      pragma Assert (Has_Has_Component (Get_Kind (Decl)),
7025                     "no field Has_Component");
7026      return Get_Flag5 (Decl);
7027   end Get_Has_Component;
7028
7029   procedure Set_Has_Component (Decl : Iir; Flag : Boolean) is
7030   begin
7031      pragma Assert (Decl /= Null_Iir);
7032      pragma Assert (Has_Has_Component (Get_Kind (Decl)),
7033                     "no field Has_Component");
7034      Set_Flag5 (Decl, Flag);
7035   end Set_Has_Component;
7036
7037   function Get_Has_Identifier_List (Decl : Iir) return Boolean is
7038   begin
7039      pragma Assert (Decl /= Null_Iir);
7040      pragma Assert (Has_Has_Identifier_List (Get_Kind (Decl)),
7041                     "no field Has_Identifier_List");
7042      return Get_Flag3 (Decl);
7043   end Get_Has_Identifier_List;
7044
7045   procedure Set_Has_Identifier_List (Decl : Iir; Flag : Boolean) is
7046   begin
7047      pragma Assert (Decl /= Null_Iir);
7048      pragma Assert (Has_Has_Identifier_List (Get_Kind (Decl)),
7049                     "no field Has_Identifier_List");
7050      Set_Flag3 (Decl, Flag);
7051   end Set_Has_Identifier_List;
7052
7053   function Get_Has_Mode (Decl : Iir) return Boolean is
7054   begin
7055      pragma Assert (Decl /= Null_Iir);
7056      pragma Assert (Has_Has_Mode (Get_Kind (Decl)),
7057                     "no field Has_Mode");
7058      return Get_Flag10 (Decl);
7059   end Get_Has_Mode;
7060
7061   procedure Set_Has_Mode (Decl : Iir; Flag : Boolean) is
7062   begin
7063      pragma Assert (Decl /= Null_Iir);
7064      pragma Assert (Has_Has_Mode (Get_Kind (Decl)),
7065                     "no field Has_Mode");
7066      Set_Flag10 (Decl, Flag);
7067   end Set_Has_Mode;
7068
7069   function Get_Has_Class (Decl : Iir) return Boolean is
7070   begin
7071      pragma Assert (Decl /= Null_Iir);
7072      pragma Assert (Has_Has_Class (Get_Kind (Decl)),
7073                     "no field Has_Class");
7074      return Get_Flag11 (Decl);
7075   end Get_Has_Class;
7076
7077   procedure Set_Has_Class (Decl : Iir; Flag : Boolean) is
7078   begin
7079      pragma Assert (Decl /= Null_Iir);
7080      pragma Assert (Has_Has_Class (Get_Kind (Decl)),
7081                     "no field Has_Class");
7082      Set_Flag11 (Decl, Flag);
7083   end Set_Has_Class;
7084
7085   function Get_Has_Delay_Mechanism (Stmt : Iir) return Boolean is
7086   begin
7087      pragma Assert (Stmt /= Null_Iir);
7088      pragma Assert (Has_Has_Delay_Mechanism (Get_Kind (Stmt)),
7089                     "no field Has_Delay_Mechanism");
7090      return Get_Flag2 (Stmt);
7091   end Get_Has_Delay_Mechanism;
7092
7093   procedure Set_Has_Delay_Mechanism (Stmt : Iir; Flag : Boolean) is
7094   begin
7095      pragma Assert (Stmt /= Null_Iir);
7096      pragma Assert (Has_Has_Delay_Mechanism (Get_Kind (Stmt)),
7097                     "no field Has_Delay_Mechanism");
7098      Set_Flag2 (Stmt, Flag);
7099   end Set_Has_Delay_Mechanism;
7100
7101   function Get_Suspend_Flag (Stmt : Iir) return Boolean is
7102   begin
7103      pragma Assert (Stmt /= Null_Iir);
7104      pragma Assert (Has_Suspend_Flag (Get_Kind (Stmt)),
7105                     "no field Suspend_Flag");
7106      return Get_Flag11 (Stmt);
7107   end Get_Suspend_Flag;
7108
7109   procedure Set_Suspend_Flag (Stmt : Iir; Flag : Boolean) is
7110   begin
7111      pragma Assert (Stmt /= Null_Iir);
7112      pragma Assert (Has_Suspend_Flag (Get_Kind (Stmt)),
7113                     "no field Suspend_Flag");
7114      Set_Flag11 (Stmt, Flag);
7115   end Set_Suspend_Flag;
7116
7117   function Get_Is_Ref (N : Iir) return Boolean is
7118   begin
7119      pragma Assert (N /= Null_Iir);
7120      pragma Assert (Has_Is_Ref (Get_Kind (N)),
7121                     "no field Is_Ref");
7122      return Get_Flag12 (N);
7123   end Get_Is_Ref;
7124
7125   procedure Set_Is_Ref (N : Iir; Ref : Boolean) is
7126   begin
7127      pragma Assert (N /= Null_Iir);
7128      pragma Assert (Has_Is_Ref (Get_Kind (N)),
7129                     "no field Is_Ref");
7130      Set_Flag12 (N, Ref);
7131   end Set_Is_Ref;
7132
7133   function Get_Is_Forward_Ref (N : Iir) return Boolean is
7134   begin
7135      pragma Assert (N /= Null_Iir);
7136      pragma Assert (Has_Is_Forward_Ref (Get_Kind (N)),
7137                     "no field Is_Forward_Ref");
7138      return Get_Flag1 (N);
7139   end Get_Is_Forward_Ref;
7140
7141   procedure Set_Is_Forward_Ref (N : Iir; Ref : Boolean) is
7142   begin
7143      pragma Assert (N /= Null_Iir);
7144      pragma Assert (Has_Is_Forward_Ref (Get_Kind (N)),
7145                     "no field Is_Forward_Ref");
7146      Set_Flag1 (N, Ref);
7147   end Set_Is_Forward_Ref;
7148
7149   function Get_Psl_Property (Decl : Iir) return PSL_Node is
7150   begin
7151      pragma Assert (Decl /= Null_Iir);
7152      pragma Assert (Has_Psl_Property (Get_Kind (Decl)),
7153                     "no field Psl_Property");
7154      return Iir_To_PSL_Node (Get_Field1 (Decl));
7155   end Get_Psl_Property;
7156
7157   procedure Set_Psl_Property (Decl : Iir; Prop : PSL_Node) is
7158   begin
7159      pragma Assert (Decl /= Null_Iir);
7160      pragma Assert (Has_Psl_Property (Get_Kind (Decl)),
7161                     "no field Psl_Property");
7162      Set_Field1 (Decl, PSL_Node_To_Iir (Prop));
7163   end Set_Psl_Property;
7164
7165   function Get_Psl_Sequence (Decl : Iir) return PSL_Node is
7166   begin
7167      pragma Assert (Decl /= Null_Iir);
7168      pragma Assert (Has_Psl_Sequence (Get_Kind (Decl)),
7169                     "no field Psl_Sequence");
7170      return Iir_To_PSL_Node (Get_Field1 (Decl));
7171   end Get_Psl_Sequence;
7172
7173   procedure Set_Psl_Sequence (Decl : Iir; Prop : PSL_Node) is
7174   begin
7175      pragma Assert (Decl /= Null_Iir);
7176      pragma Assert (Has_Psl_Sequence (Get_Kind (Decl)),
7177                     "no field Psl_Sequence");
7178      Set_Field1 (Decl, PSL_Node_To_Iir (Prop));
7179   end Set_Psl_Sequence;
7180
7181   function Get_Psl_Declaration (Decl : Iir) return PSL_Node is
7182   begin
7183      pragma Assert (Decl /= Null_Iir);
7184      pragma Assert (Has_Psl_Declaration (Get_Kind (Decl)),
7185                     "no field Psl_Declaration");
7186      return Iir_To_PSL_Node (Get_Field6 (Decl));
7187   end Get_Psl_Declaration;
7188
7189   procedure Set_Psl_Declaration (Decl : Iir; Prop : PSL_Node) is
7190   begin
7191      pragma Assert (Decl /= Null_Iir);
7192      pragma Assert (Has_Psl_Declaration (Get_Kind (Decl)),
7193                     "no field Psl_Declaration");
7194      Set_Field6 (Decl, PSL_Node_To_Iir (Prop));
7195   end Set_Psl_Declaration;
7196
7197   function Get_Psl_Expression (Decl : Iir) return PSL_Node is
7198   begin
7199      pragma Assert (Decl /= Null_Iir);
7200      pragma Assert (Has_Psl_Expression (Get_Kind (Decl)),
7201                     "no field Psl_Expression");
7202      return Iir_To_PSL_Node (Get_Field3 (Decl));
7203   end Get_Psl_Expression;
7204
7205   procedure Set_Psl_Expression (Decl : Iir; Prop : PSL_Node) is
7206   begin
7207      pragma Assert (Decl /= Null_Iir);
7208      pragma Assert (Has_Psl_Expression (Get_Kind (Decl)),
7209                     "no field Psl_Expression");
7210      Set_Field3 (Decl, PSL_Node_To_Iir (Prop));
7211   end Set_Psl_Expression;
7212
7213   function Get_Psl_Boolean (N : Iir) return PSL_Node is
7214   begin
7215      pragma Assert (N /= Null_Iir);
7216      pragma Assert (Has_Psl_Boolean (Get_Kind (N)),
7217                     "no field Psl_Boolean");
7218      return Iir_To_PSL_Node (Get_Field1 (N));
7219   end Get_Psl_Boolean;
7220
7221   procedure Set_Psl_Boolean (N : Iir; Bool : PSL_Node) is
7222   begin
7223      pragma Assert (N /= Null_Iir);
7224      pragma Assert (Has_Psl_Boolean (Get_Kind (N)),
7225                     "no field Psl_Boolean");
7226      Set_Field1 (N, PSL_Node_To_Iir (Bool));
7227   end Set_Psl_Boolean;
7228
7229   function Get_PSL_Clock (N : Iir) return PSL_Node is
7230   begin
7231      pragma Assert (N /= Null_Iir);
7232      pragma Assert (Has_PSL_Clock (Get_Kind (N)),
7233                     "no field PSL_Clock");
7234      return Iir_To_PSL_Node (Get_Field7 (N));
7235   end Get_PSL_Clock;
7236
7237   procedure Set_PSL_Clock (N : Iir; Clock : PSL_Node) is
7238   begin
7239      pragma Assert (N /= Null_Iir);
7240      pragma Assert (Has_PSL_Clock (Get_Kind (N)),
7241                     "no field PSL_Clock");
7242      Set_Field7 (N, PSL_Node_To_Iir (Clock));
7243   end Set_PSL_Clock;
7244
7245   function Get_PSL_NFA (N : Iir) return PSL_NFA is
7246   begin
7247      pragma Assert (N /= Null_Iir);
7248      pragma Assert (Has_PSL_NFA (Get_Kind (N)),
7249                     "no field PSL_NFA");
7250      return Iir_To_PSL_NFA (Get_Field8 (N));
7251   end Get_PSL_NFA;
7252
7253   procedure Set_PSL_NFA (N : Iir; Fa : PSL_NFA) is
7254   begin
7255      pragma Assert (N /= Null_Iir);
7256      pragma Assert (Has_PSL_NFA (Get_Kind (N)),
7257                     "no field PSL_NFA");
7258      Set_Field8 (N, PSL_NFA_To_Iir (Fa));
7259   end Set_PSL_NFA;
7260
7261   function Get_PSL_Nbr_States (N : Iir) return Int32 is
7262   begin
7263      pragma Assert (N /= Null_Iir);
7264      pragma Assert (Has_PSL_Nbr_States (Get_Kind (N)),
7265                     "no field PSL_Nbr_States");
7266      return Iir_To_Int32 (Get_Field9 (N));
7267   end Get_PSL_Nbr_States;
7268
7269   procedure Set_PSL_Nbr_States (N : Iir; Nbr : Int32) is
7270   begin
7271      pragma Assert (N /= Null_Iir);
7272      pragma Assert (Has_PSL_Nbr_States (Get_Kind (N)),
7273                     "no field PSL_Nbr_States");
7274      Set_Field9 (N, Int32_To_Iir (Nbr));
7275   end Set_PSL_Nbr_States;
7276
7277   function Get_PSL_Clock_Sensitivity (N : Iir) return Iir_List is
7278   begin
7279      pragma Assert (N /= Null_Iir);
7280      pragma Assert (Has_PSL_Clock_Sensitivity (Get_Kind (N)),
7281                     "no field PSL_Clock_Sensitivity");
7282      return Iir_To_Iir_List (Get_Field10 (N));
7283   end Get_PSL_Clock_Sensitivity;
7284
7285   procedure Set_PSL_Clock_Sensitivity (N : Iir; List : Iir_List) is
7286   begin
7287      pragma Assert (N /= Null_Iir);
7288      pragma Assert (Has_PSL_Clock_Sensitivity (Get_Kind (N)),
7289                     "no field PSL_Clock_Sensitivity");
7290      Set_Field10 (N, Iir_List_To_Iir (List));
7291   end Set_PSL_Clock_Sensitivity;
7292
7293   function Get_PSL_EOS_Flag (N : Iir) return Boolean is
7294   begin
7295      pragma Assert (N /= Null_Iir);
7296      pragma Assert (Has_PSL_EOS_Flag (Get_Kind (N)),
7297                     "no field PSL_EOS_Flag");
7298      return Get_Flag1 (N);
7299   end Get_PSL_EOS_Flag;
7300
7301   procedure Set_PSL_EOS_Flag (N : Iir; Flag : Boolean) is
7302   begin
7303      pragma Assert (N /= Null_Iir);
7304      pragma Assert (Has_PSL_EOS_Flag (Get_Kind (N)),
7305                     "no field PSL_EOS_Flag");
7306      Set_Flag1 (N, Flag);
7307   end Set_PSL_EOS_Flag;
7308
7309   function Get_Count_Expression (N : Iir) return Iir is
7310   begin
7311      pragma Assert (N /= Null_Iir);
7312      pragma Assert (Has_Count_Expression (Get_Kind (N)),
7313                     "no field Count_Expression");
7314      return Get_Field2 (N);
7315   end Get_Count_Expression;
7316
7317   procedure Set_Count_Expression (N : Iir; Count : Iir) is
7318   begin
7319      pragma Assert (N /= Null_Iir);
7320      pragma Assert (Has_Count_Expression (Get_Kind (N)),
7321                     "no field Count_Expression");
7322      Set_Field2 (N, Count);
7323   end Set_Count_Expression;
7324
7325   function Get_Clock_Expression (N : Iir) return Iir is
7326   begin
7327      pragma Assert (N /= Null_Iir);
7328      pragma Assert (Has_Clock_Expression (Get_Kind (N)),
7329                     "no field Clock_Expression");
7330      return Get_Field4 (N);
7331   end Get_Clock_Expression;
7332
7333   procedure Set_Clock_Expression (N : Iir; Clk : Iir) is
7334   begin
7335      pragma Assert (N /= Null_Iir);
7336      pragma Assert (Has_Clock_Expression (Get_Kind (N)),
7337                     "no field Clock_Expression");
7338      Set_Field4 (N, Clk);
7339   end Set_Clock_Expression;
7340
7341   function Get_Default_Clock (N : Iir) return Iir is
7342   begin
7343      pragma Assert (N /= Null_Iir);
7344      pragma Assert (Has_Default_Clock (Get_Kind (N)),
7345                     "no field Default_Clock");
7346      return Get_Field3 (N);
7347   end Get_Default_Clock;
7348
7349   procedure Set_Default_Clock (N : Iir; Clk : Iir) is
7350   begin
7351      pragma Assert (N /= Null_Iir);
7352      pragma Assert (Has_Default_Clock (Get_Kind (N)),
7353                     "no field Default_Clock");
7354      Set_Field3 (N, Clk);
7355   end Set_Default_Clock;
7356
7357end Vhdl.Nodes;
7358