Mercurial > hg > CbC > CbC_gcc
diff gcc/ada/bindo-writers.ads @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/ada/bindo-writers.ads Thu Feb 13 11:34:05 2020 +0900 @@ -0,0 +1,163 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT COMPILER COMPONENTS -- +-- -- +-- B I N D O . W R I T E R S -- +-- -- +-- S p e c -- +-- -- +-- Copyright (C) 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- -- +-- 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. -- +-- -- +------------------------------------------------------------------------------ + +-- For full architecture, see unit Bindo. + +-- The following unit contains facilities to output the various graphs used in +-- determining the elaboration order, as well as the elaboration order itself +-- to standard output. + +with Types; use Types; + +with Bindo.Graphs; +use Bindo.Graphs; +use Bindo.Graphs.Invocation_Graphs; +use Bindo.Graphs.Library_Graphs; + +package Bindo.Writers is + + ----------------- + -- Indentation -- + ----------------- + + -- The following type defines the level of indentation used in various + -- output routines. + + type Indentation_Level is new Natural; + No_Indentation : constant Indentation_Level := Indentation_Level'First; + + Nested_Indentation : constant Indentation_Level := 2; + -- The level of indentation for a nested new line + + Number_Column : constant Indentation_Level := 6; + -- The level of right justification of numbers + + Step_Column : constant Indentation_Level := 4; + -- The level of right justification of the elaboration order step + + procedure Indent_By (Indent : Indentation_Level); + pragma Inline (Indent_By); + -- Indent the current line by Indent spaces + + procedure Write_Num + (Val : Int; + Val_Indent : Indentation_Level := Number_Column); + pragma Inline (Write_Num); + -- Output integer value Val in a right-justified form based on the value of + -- Val_Col. + + ----------------- + -- ALI_Writers -- + ----------------- + + package ALI_Writers is + procedure Write_ALI_Tables; + -- Write the contents of the following tables to standard output: + -- + -- * ALI.Invocation_Constructs + -- * ALI.Invocation_Relations + + end ALI_Writers; + + ------------------- + -- Cycle_Writers -- + ------------------- + + package Cycle_Writers is + procedure Write_Cycles (G : Library_Graph); + -- Write all cycles of library graph G to standard output + + end Cycle_Writers; + + ------------------------ + -- Dependency_Writers -- + ------------------------ + + package Dependency_Writers is + procedure Write_Dependencies (G : Library_Graph); + -- Write all elaboration dependencies of the units represented by + -- vertices of library graph G. + + end Dependency_Writers; + + ------------------------------- + -- Elaboration_Order_Writers -- + ------------------------------- + + package Elaboration_Order_Writers is + procedure Write_Elaboration_Order (Order : Unit_Id_Table); + -- Write elaboration order Order to standard output + + end Elaboration_Order_Writers; + + ------------------------------ + -- Invocation_Graph_Writers -- + ------------------------------ + + package Invocation_Graph_Writers is + procedure Write_Invocation_Graph (G : Invocation_Graph); + -- Write invocation graph G to standard output + + end Invocation_Graph_Writers; + + --------------------------- + -- Library_Graph_Writers -- + --------------------------- + + package Library_Graph_Writers is + procedure Write_Library_Graph (G : Library_Graph); + -- Write library graph G to standard output + + end Library_Graph_Writers; + + ------------------- + -- Phase_Writers -- + ------------------- + + package Phase_Writers is + procedure End_Phase (Phase : Elaboration_Phase); + pragma Inline (End_Phase); + -- Write the end message associated with elaboration phase Phase to + -- standard output. + + procedure Start_Phase (Phase : Elaboration_Phase); + pragma Inline (Start_Phase); + -- Write the start message associated with elaboration phase Phase to + -- standard output. + + end Phase_Writers; + + -------------------------- + -- Unit_Closure_Writers -- + -------------------------- + + package Unit_Closure_Writers is + procedure Write_Unit_Closure (Order : Unit_Id_Table); + -- Write all sources in the closure of the main unit as enumerated in + -- elaboration order Order. + + end Unit_Closure_Writers; + +end Bindo.Writers;