This file is indexed.

/usr/share/ada/adainclude/asis/a4g-get_unit.ads is in libasis2014-dev 2014-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
------------------------------------------------------------------------------
--                                                                          --
--                 ASIS-for-GNAT IMPLEMENTATION COMPONENTS                  --
--                                                                          --
--                          A 4 G . G E T _ U N I T                         --
--                                                                          --
--                                 S p e c                                  --
--                                                                          --
--            Copyright (C) 1995-2013, Free Software Foundation, Inc.       --
--                                                                          --
-- ASIS-for-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 --
-- Software Foundation;  either version 2,  or  (at your option)  any later --
-- version. ASIS-for-GNAT is distributed  in the hope  that it will be use- --
-- ful, but WITHOUT ANY WARRANTY; without even the implied warranty of MER- --
-- CHANTABILITY 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 ASIS-for-GNAT; see file     --
-- COPYING. If not, write to the Free Software Foundation,  59 Temple Place --
-- - Suite 330,  Boston, MA 02111-1307, USA.                                --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
-- ASIS-for-GNAT was originally developed  by the ASIS-for-GNAT team at the --
-- Software  Engineering  Laboratory  of  the Swiss  Federal  Institute  of --
-- Technology (LGL-EPFL) in Lausanne,  Switzerland, in cooperation with the --
-- Scientific  Research  Computer  Center of  Moscow State University (SRCC --
-- MSU), Russia,  with funding partially provided  by grants from the Swiss --
-- National  Science  Foundation  and  the  Swiss  Academy  of  Engineering --
-- Sciences. ASIS-for-GNAT is now maintained by AdaCore                     --
-- (http://www.adacore.com).                                                --
--                                                                          --
------------------------------------------------------------------------------

with A4G.A_Types; use A4G.A_Types;

package A4G.Get_Unit is

--  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
--  !!                                                                 !!
--  !!  This package should be completely revised (and very likely -   !!
--  !!  removed), when migration to using pre-created trees as to the  !!
--  !!  *ONLY* ASIS operation mode is completed                        !!
--  !!                                                                 !!
--  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

--  This paskage contains routines for obtaining ASIS Compilation Units
--  according to the requests arosen during processing the queries from
--  Asis.Compilation_Units package which get Units and Unit Lists from an
--  ASIS Context. As the first step, these routines try to find the
--  reqiested unit(s) by making the corresponding search among Units
--  which are already known to ASIS by looking for the Units in the internal
--  tables implementing the ASIS Context Model. If this first step does not
--  give the required resuil, the attempt to fing the Unit(s) by processing
--  the Ada sources or pre-created tree output files is undertaken. To obtain
--  information about the Unit which has never been known to ASIS, ASIS has,
--  depending on the options set for a context, either to compile it "on the
--  fly" in order to check its correctness and to produce the tree output
--  file, if the Unit is correct, or to try to locate the pre-created tree
--  output file; then the tree output file has to be read in and analysed.
--  If the tree contains the subtrees for other Ada units which have not
--  been known to ASIS so far, ASIS stores the information about these units
--  in its internal tables (even the ASIS query being processed has no
--  relation to these units).

   -----------------
   -- Subprograms --
   -----------------

   function Get_One_Unit
     (Name    : Wide_String;
      Context : Context_Id;
      Spec    : Boolean)
      return    Unit_Id;
   --  This function defines the top-level control flow for the two
   --  functions from the Asis_Compilation_Unit package which yields
   --  one ASIS Compilation Unit: Library_Unit_Declaration and
   --  Compilation_Unit_Body. Spec is used to make the diffference
   --  between these two functions: it is set True for
   --  Library_Unit_Declaration and False for Compilation_Unit_Body.

   function Fetch_Unit_By_Ada_Name
     (Name      : String;
      Norm_Name : String;
      Context   : Context_Id;
      Spec      : Boolean)
      return      Unit_Id;
   --  This function is supposed to be called in the following situation:
   --
   --  -  Name is non-empty string which can be interpreted as an Ada unit
   --     name;
   --
   --  -  Norm_Name is non-empty string representing the normalised version
   --     of the Ada unit name passed as the actual for Name. This means
   --     that Norm_Name'Legth = Name'Length + 2, and Norm_name ends with
   --     "%s" or "%b" DEPENDING ON THE VALUE OF SPEC;
   --
   --  The Context parameter indicates the ASIS Context to look for a Unit
   --  indicated by Name and Norm_Name. Spec indicates whether the library
   --  unit declaration or the compilation unit body should be fetched
   --  (See the documentation for the functions Library_Unit_Declaration
   --  and Compilation_Unit_Body from the Asis_Compilation_Units package
   --  for the definition of the ASIS meaning of "library unit declaration"
   --  and "compilation unit body").
   --
   --  This function returns the Unit_Id value indicating the desired
   --  Unit. Nil_Unit is returned if Context does not contain the   -- ##
   --  Unit having Name as its unit name.
   --
   --  If ASIS already knows this Unit, the returned Unit_Id value
   --  points to some pre-existing entry in the Unit Table for the given
   --  Context. Otherwise ASIS tries to compile Unit from its cource.
   --  If the compilation is successful, ASIS retrieves the newly
   --  created tree and it obtains and stores in the Unit Table
   --  information about the Unit AND ABOUT ALL IS SUPPORTERS, WHICH
   --  ARE NOT KNOWN TO ASIS!
   --
   --  !!! THIS FUNCTION SHOULD ANALYZE EXISTING TREES BEFORE TRYING
   --  !!! TO CREATE THE NEW TREE, THIS IS NOT IMPLEMENTED YET
   --
   --  IMPLEMENTATION LIMITATION : if the file name of an Ada unit is
   --  defined by the Source_File_Name pragma, ASIS cannot call GNAT
   --  to compile this unit!

   function Get_Main_Unit_Tree_On_The_Fly
     (Start_Unit : Unit_Id;
      Cont       : Context_Id;
      Spec       : Boolean)
      return       Unit_Id;
   --  This function is supposed to be used for the Incremental Context mode
   --  only. It purpose is to try to create the main tree for Start_Unit
   --  (if Spec is set ON) or for the body of Start_Unit (if Spec is set OFF).
   --  If the tree is successfully created, this function returns either
   --  Start_From or the Id of the body of Start_From respectively, otherwise
   --  Nil_Unit is returned.
   --
   --  If this function creates the new tree, this tree is added to the set
   --  of trees making up the current incremental context, and this tree
   --  becomes the tree currently accessed by ASIS.
   --
   --  This function is supposed to be called with Start_Unit representing
   --  some spec unit in the Cont. It is also supposed that the tree which
   --  should be created by the call does not exist in Cont. The caller is
   --  responsible to insure these conditions.
   --  condition

end A4G.Get_Unit;