@@ -80,6 +80,7 @@ package body Table is
procedure Append (New_Val : Table_Component_Type) is
begin
+ pragma Assert (not Locked);
Set_Item (Table_Index_Type (Last_Val + 1), New_Val);
end Append;
@@ -120,6 +121,7 @@ package body Table is
procedure Increment_Last is
begin
+ pragma Assert (not Locked);
Last_Val := Last_Val + 1;
if Last_Val > Max then
@@ -384,6 +386,8 @@ package body Table is
procedure Set_Last (New_Val : Table_Index_Type) is
begin
+ pragma Assert (Int (New_Val) <= Last_Val or else not Locked);
+
if Int (New_Val) < Last_Val then
Last_Val := Int (New_Val);
@@ -130,14 +130,15 @@ package Table is
-- First .. Last.
Locked : Boolean := False;
- -- Table expansion is permitted only if this switch is set to False. A
- -- client may set Locked to True, in which case any attempt to expand
- -- the table will cause an assertion failure. Note that while a table
- -- is locked, its address in memory remains fixed and unchanging. This
- -- feature is used to control table expansion during Gigi processing.
- -- Gigi assumes that tables other than the Uint and Ureal tables do
- -- not move during processing, which means that they cannot be expanded.
- -- The Locked flag is used to enforce this restriction.
+ -- Increasing the value of Last is permitted only if this switch is set
+ -- to False. A client may set Locked to True, in which case any attempt
+ -- to increase the value of Last (which might expand the table) will
+ -- cause an assertion failure. Note that while a table is locked, its
+ -- address in memory remains fixed and unchanging. This feature is used
+ -- to control table expansion during Gigi processing. Gigi assumes that
+ -- tables other than the Uint and Ureal tables do not move during
+ -- processing, which means that they cannot be expanded. The Locked
+ -- flag is used to enforce this restriction.
procedure Init;
-- This procedure allocates a new table of size Initial (freeing any