diff options
Diffstat (limited to 'src/vhdl/iir_chains.adb')
-rw-r--r-- | src/vhdl/iir_chains.adb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/vhdl/iir_chains.adb b/src/vhdl/iir_chains.adb index d6d944f4e..43d02d44f 100644 --- a/src/vhdl/iir_chains.adb +++ b/src/vhdl/iir_chains.adb @@ -28,6 +28,28 @@ package body Iir_Chains is return Res; end Get_Chain_Length; + procedure Append_Chain + (N : Iir; Field : Nodes_Meta.Fields_Enum; Chain : Iir) + is + use Nodes_Meta; + N_Chain : Iir; + Next_Chain : Iir; + begin + N_Chain := Get_Iir (N, Field); + if Is_Null (N_Chain) then + Set_Iir (N, Field, Chain); + else + loop + Next_Chain := Get_Chain (N_Chain); + if Is_Null (Next_Chain) then + Set_Chain (N_Chain, Chain); + exit; + end if; + N_Chain := Next_Chain; + end loop; + end if; + end Append_Chain; + procedure Sub_Chain_Init (First, Last : out Iir) is begin First := Null_Iir; |