-------------------------------------------------------------------------------
-- (C) Altran Praxis Limited
-------------------------------------------------------------------------------
--
-- The SPARK toolset is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the Free
-- Software Foundation; either version 3, or (at your option) any later
-- version. The SPARK toolset is distributed in the hope that it will be
-- useful, but WITHOUT 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 the SPARK toolset; see file
-- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
-- the license.
--
--=============================================================================

with ContextManager, STree, LexTokenLists;

use type STree.SyntaxNode;

--# inherit ContextManager,
--#         LexTokenLists,
--#         SP_Symbols,
--#         STree,
--#         SystemErrors;
package RequiredUnits is

   procedure Init
     (Top_Node    : in     STree.SyntaxNode;
      Inherit_Ptr :    out STree.SyntaxNode;
      Unit_Type   :    out ContextManager.UnitTypes;
      Unit_Name   :    out LexTokenLists.Lists);
   --# global in STree.Table;
   --# derives Inherit_Ptr,
   --#         Unit_Name,
   --#         Unit_Type   from STree.Table,
   --#                          Top_Node;

   procedure Next (Inherit_Ptr   : in out STree.SyntaxNode;
                   Required_Unit :    out LexTokenLists.Lists;
                   Found         :    out Boolean);
   --# global in STree.Table;
   --# derives Found         from Inherit_Ptr &
   --#         Inherit_Ptr,
   --#         Required_Unit from Inherit_Ptr,
   --#                            STree.Table;
end RequiredUnits;
