diff options
Diffstat (limited to 'gcc/ada/libgnat/a-cfinve.adb')
-rw-r--r-- | gcc/ada/libgnat/a-cfinve.adb | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/gcc/ada/libgnat/a-cfinve.adb b/gcc/ada/libgnat/a-cfinve.adb index e424df0..d0c7e82 100644 --- a/gcc/ada/libgnat/a-cfinve.adb +++ b/gcc/ada/libgnat/a-cfinve.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2010-2020, Free Software Foundation, Inc. -- +-- Copyright (C) 2010-2021, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -184,6 +184,28 @@ is Free (Container.Elements_Ptr); end Clear; + ------------------------ + -- Constant_Reference -- + ------------------------ + + function Constant_Reference + (Container : aliased Vector; + Index : Index_Type) return not null access constant Element_Type + is + begin + if Index > Container.Last then + raise Constraint_Error with "Index is out of range"; + end if; + + declare + II : constant Int'Base := Int (Index) - Int (No_Index); + I : constant Capacity_Range := Capacity_Range (II); + + begin + return Constant_Reference (Elemsc (Container) (I)); + end; + end Constant_Reference; + -------------- -- Contains -- -------------- @@ -1180,6 +1202,32 @@ is Insert (Container, Index_Type'First, New_Item, Count); end Prepend; + --------------- + -- Reference -- + --------------- + + function Reference + (Container : not null access Vector; + Index : Index_Type) return not null access Element_Type + is + begin + if Index > Container.Last then + raise Constraint_Error with "Index is out of range"; + end if; + + declare + II : constant Int'Base := Int (Index) - Int (No_Index); + I : constant Capacity_Range := Capacity_Range (II); + + begin + if Container.Elements_Ptr = null then + return Reference (Container.Elements (I)'Access); + else + return Reference (Container.Elements_Ptr (I)'Access); + end if; + end; + end Reference; + --------------------- -- Replace_Element -- --------------------- |