Mercurial > hg > CbC > CbC_gcc
diff gcc/ada/butil.ads @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line diff
--- a/gcc/ada/butil.ads Thu Oct 25 07:37:49 2018 +0900 +++ b/gcc/ada/butil.ads Thu Feb 13 11:34:05 2020 +0900 @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2018, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2019, 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- -- @@ -23,12 +23,13 @@ -- -- ------------------------------------------------------------------------------ +-- This package contains utility routines for the binder + with Namet; use Namet; +with Types; use Types; package Butil is --- This package contains utility routines for the binder - function Is_Predefined_Unit return Boolean; -- Given a unit name stored in Name_Buffer with length in Name_Len, -- returns True if this is the name of a predefined unit or a child of @@ -51,4 +52,52 @@ -- Output unit name with (body) or (spec) after as required. On return -- Name_Len is set to the number of characters which were output. + --------------- + -- Iterators -- + --------------- + + -- The following type represents an iterator over all units that are + -- specified in the forced-elaboration-order file supplied by the binder + -- via switch -f. + + type Forced_Units_Iterator is private; + + function Has_Next (Iter : Forced_Units_Iterator) return Boolean; + pragma Inline (Has_Next); + -- Determine whether iterator Iter has more units to examine + + function Iterate_Forced_Units return Forced_Units_Iterator; + pragma Inline (Iterate_Forced_Units); + -- Obtain an iterator over all units in the forced-elaboration-order file + + procedure Next + (Iter : in out Forced_Units_Iterator; + Unit_Name : out Unit_Name_Type; + Unit_Line : out Logical_Line_Number); + pragma Inline (Next); + -- Return the current unit referenced by iterator Iter along with the + -- line number it appears on, and advance to the next available unit. + +private + First_Line_Number : constant Logical_Line_Number := No_Line_Number + 1; + + type Forced_Units_Iterator is record + Order : String_Ptr := null; + -- A reference to the contents of the forced-elaboration-order file, + -- read in as a string. + + Order_Index : Positive := 1; + -- Index into the order string + + Order_Line : Logical_Line_Number := First_Line_Number; + -- Logical line number within the order string + + Unit_Line : Logical_Line_Number := No_Line_Number; + -- The logical line number of the current unit name within the order + -- string. + + Unit_Name : Unit_Name_Type := No_Unit_Name; + -- The current unit name parsed from the order string + end record; + end Butil;