------------------------------------------------------------------------------
--                                                                          --
--                         GNAT COMPILER COMPONENTS                         --
--                                                                          --
--                                A L L O C                                 --
--                                                                          --
--                                 S p e c                                  --
--                                                                          --
--          Copyright (C) 1992-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- --
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
-- for  more details.  You should have  received  a copy of the GNU General --
-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
-- http://www.gnu.org/licenses for a complete copy of the license.          --
--                                                                          --
-- GNAT was originally developed  by the GNAT team at  New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
--                                                                          --
------------------------------------------------------------------------------

--  This package contains definitions for initial sizes and growth increments
--  for the various dynamic arrays used for the main compiler data structures.
--  The indicated initial size is allocated for the start of each file, and
--  the increment factor is a percentage used to increase the table size when
--  it needs expanding (e.g. a value of 100 = 100% increase = double)

--  Note: the initial values here are multiplied by Table_Factor as set by the
--  -gnatTnn switch. This variable is defined in Opt, as is the default value
--  for the table factor.

package Alloc is

   --  The comment shows the unit in which the tables are defined

   All_Interp_Initial               : constant := 1_000;      -- Sem_Type
   All_Interp_Increment             : constant := 100;

   Branches_Initial                 : constant := 1_000;      -- Sem_Warn
   Branches_Increment               : constant := 100;

   Conditionals_Initial             : constant := 1_000;      -- Sem_Warn
   Conditionals_Increment           : constant := 100;

   Conditional_Stack_Initial        : constant := 50;         -- Sem_Warn
   Conditional_Stack_Increment      : constant := 100;

   Elists_Initial                   : constant := 200;        -- Elists
   Elists_Increment                 : constant := 100;

   Elmts_Initial                    : constant := 1_200;      -- Elists
   Elmts_Increment                  : constant := 100;

   File_Name_Chars_Initial          : constant := 10_000;     -- Osint
   File_Name_Chars_Increment        : constant := 100;

   In_Out_Warnings_Initial          : constant := 100;        -- Sem_Warn
   In_Out_Warnings_Increment        : constant := 100;

   Ignored_Ghost_Nodes_Initial      : constant := 100;        -- Ghost
   Ignored_Ghost_Nodes_Increment    : constant := 100;

   Inlined_Initial                  : constant := 100;        -- Inline
   Inlined_Increment                : constant := 100;

   Inlined_Bodies_Initial           : constant := 50;         -- Inline
   Inlined_Bodies_Increment         : constant := 200;

   Interp_Map_Initial               : constant := 200;        -- Sem_Type
   Interp_Map_Increment             : constant := 100;

   Lines_Initial                    : constant := 500;        -- Sinput
   Lines_Increment                  : constant := 150;

   Linker_Option_Lines_Initial      : constant := 5;          -- Lib
   Linker_Option_Lines_Increment    : constant := 200;

   Lists_Initial                    : constant := 4_000;      -- Nlists
   Lists_Increment                  : constant := 200;

   Load_Stack_Initial               : constant := 10;         -- Lib
   Load_Stack_Increment             : constant := 100;

   Name_Chars_Initial               : constant := 50_000;     -- Namet
   Name_Chars_Increment             : constant := 100;

   Name_Qualify_Units_Initial       : constant := 200;        -- Exp_Dbug
   Name_Qualify_Units_Increment     : constant := 300;

   Names_Initial                    : constant := 6_000;      -- Namet
   Names_Increment                  : constant := 100;

   Node_Offsets_Initial             : constant := 500_000;    -- Atree, Nlists
   Node_Offsets_Increment           : constant := 100;

   Slots_Initial                    : constant := 2_000_000;  -- Atree
   Slots_Increment                  : constant := 100;

   Notes_Initial                    : constant := 100;        -- Lib
   Notes_Increment                  : constant := 200;

   Obsolescent_Warnings_Initial     : constant := 50;         -- Sem_Prag
   Obsolescent_Warnings_Increment   : constant := 200;

   Pending_Instantiations_Initial   : constant := 10;         -- Inline
   Pending_Instantiations_Increment : constant := 100;

   Rep_Table_Initial                : constant := 1000;       -- Repinfo
   Rep_Table_Increment              : constant := 200;

   Rep_JSON_Table_Initial           : constant := 10;          -- Repinfo
   Rep_JSON_Table_Increment         : constant := 200;

   Scope_Stack_Initial              : constant := 10;         -- Sem
   Scope_Stack_Increment            : constant := 200;

   SFN_Table_Initial                : constant := 10;         -- Fname
   SFN_Table_Increment              : constant := 200;

   Source_File_Initial              : constant := 10;         -- Sinput
   Source_File_Increment            : constant := 200;

   String_Chars_Initial             : constant := 2_500;      -- Stringt
   String_Chars_Increment           : constant := 150;

   Strings_Initial                  : constant := 5_00;       -- Stringt
   Strings_Increment                : constant := 150;

   Successors_Initial               : constant := 2_00;       -- Inline
   Successors_Increment             : constant := 100;

   Udigits_Initial                  : constant := 10_000;     -- Uintp
   Udigits_Increment                : constant := 100;

   Uints_Initial                    : constant := 5_000;      -- Uintp
   Uints_Increment                  : constant := 100;

   Units_Initial                    : constant := 30;         -- Lib
   Units_Increment                  : constant := 100;

   Ureals_Initial                   : constant := 200;        -- Urealp
   Ureals_Increment                 : constant := 100;

   Unreferenced_Entities_Initial    : constant := 1_000;      -- Sem_Warn
   Unreferenced_Entities_Increment  : constant := 100;

   Warnings_Off_Pragmas_Initial     : constant := 500;        -- Sem_Warn
   Warnings_Off_Pragmas_Increment   : constant := 100;

   With_List_Initial                : constant := 10;         -- Features
   With_List_Increment              : constant := 300;

   Xrefs_Initial                    : constant := 5_000;      -- Cross-refs
   Xrefs_Increment                  : constant := 300;

   Drefs_Initial                    : constant := 5;          -- Dereferences
   Drefs_Increment                  : constant := 1_000;

end Alloc;
