This file is indexed.

/usr/share/ada/adainclude/gpr/gpr-names.ads is in libgpr1-dev 2017-5.

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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
------------------------------------------------------------------------------
--                                                                          --
--                           GPR PROJECT MANAGER                            --
--                                                                          --
--          Copyright (C) 2001-2015, Free Software Foundation, Inc.         --
--                                                                          --
-- This library 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. This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.                            --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
------------------------------------------------------------------------------

package GPR.Names is

   Name_Buffer : String (1 .. 1_000_000);
   Name_Len    : Natural := 0;

   procedure Get_Name_String (Id : Name_Id);
   procedure Get_Name_String (Id : Unit_Name_Type);
   procedure Get_Name_String (Id : File_Name_Type);
   procedure Get_Name_String (Id : Path_Name_Type);
   --  Get_Name_String is used to retrieve the string associated with an entry
   --  in the names table. The resulting string is stored in Name_Buffer and
   --  Name_Len is set. It is an error to call Get_Name_String with one of the
   --  special name Id values (No_Name or Error_Name).

   function Get_Name_String (Id : Name_Id) return String;
   function Get_Name_String (Id : Unit_Name_Type) return String;
   function Get_Name_String (Id : File_Name_Type) return String;
   function Get_Name_String (Id : Path_Name_Type) return String;
   --  This functional form returns the result as a string without affecting
   --  the contents of either Name_Buffer or Name_Len. The lower bound is 1.

   procedure Get_Name_String_And_Append (Id : Name_Id);
   --  Like Get_Name_String but the resulting characters are appended to the
   --  current contents of the entry stored in Name_Buffer, and Name_Len is
   --  incremented to include the added characters.

   function Length_Of_Name (Id : Name_Id) return Nat;
   function Length_Of_Name (Id : File_Name_Type) return Nat;
   pragma Inline (Length_Of_Name);

   function Name_Find return Name_Id;
   function Name_Find return Unit_Name_Type;
   function Name_Find return File_Name_Type;
   function Name_Find return Path_Name_Type;

   function Name_Enter return Name_Id;

   procedure Add_Char_To_Name_Buffer (C : Character);
   pragma Inline (Add_Char_To_Name_Buffer);
   --  Add given character to the end of the string currently stored in the
   --  Name_Buffer, incrementing Name_Len.

   procedure Add_Nat_To_Name_Buffer (V : Nat);
   --  Add decimal representation of given value to the end of the string
   --  currently stored in Name_Buffer, incrementing Name_Len as required.

   procedure Add_Str_To_Name_Buffer (S : String);
   --  Add characters of string S to the end of the string currently stored in
   --  the Name_Buffer, incrementing Name_Len by the length of the string.

   function Get_Name_Table_Int (Id : Name_Id) return Int;
   function Get_Name_Table_Int (Id : Unit_Name_Type) return Int;
   function Get_Name_Table_Int (Id : File_Name_Type) return Int;
   pragma Inline (Get_Name_Table_Int);
   --  Fetches the Int value associated with the given name

   procedure Set_Name_Table_Int (Id : Name_Id; Val : Int);
   procedure Set_Name_Table_Int (Id : Unit_Name_Type; Val : Int);
   procedure Set_Name_Table_Int (Id : File_Name_Type; Val : Int);
   pragma Inline (Set_Name_Table_Int);
   --  Sets the Int value associated with the given name

   type Char_Code_Base is mod 2 ** 32;
   for Char_Code_Base'Size use 32;

   subtype Char_Code is Char_Code_Base range 0 .. 16#7FFF_FFFF#;
   for Char_Code'Value_Size use 32;
   for Char_Code'Object_Size use 32;

   function Get_Char_Code (C : Character) return Char_Code;
   pragma Inline (Get_Char_Code);
   --  Function to obtain internal character code from source character. For
   --  the moment, the internal character code is simply the Pos value of the
   --  input source character, but we provide this interface for possible later
   --  support of alternative character sets.

   function In_Character_Range (C : Char_Code) return Boolean;
   pragma Inline (In_Character_Range);
   --  Determines if the given character code is in range of type Character,
   --  and if so, returns True. If not, returns False.

   function Get_Character (C : Char_Code) return Character;
   pragma Inline (Get_Character);
   --  For a character C that is in Character range (see above function), this
   --  function returns the corresponding Character value. It is an error to
   --  call Get_Character if C is not in Character range.

   procedure Store_Encoded_Character (C : Char_Code);
   --  Stores given character code at the end of Name_Buffer, updating the
   --  value in Name_Len appropriately. Lower case letters and digits are
   --  stored unchanged. Other 8-bit characters are stored using the Uhh
   --  encoding (hh = hex code), other 16-bit wide character values are stored
   --  using the Whhhh (hhhh = hex code) encoding, and other 32-bit wide wide
   --  character values are stored using the WWhhhhhhhh (hhhhhhhh = hex code).
   --  Note that this procedure does not fold upper case letters (they are
   --  stored using the Uhh encoding). If folding is required, it must be
   --  done by the caller prior to the call.

   procedure Write_Name (Id : Name_Id);
   procedure Write_Name (Id : File_Name_Type);
   procedure Write_Name (Id : Path_Name_Type);
   --  Write_Name writes the characters of the specified name Id to the
   --  specific file File. No end of line is written, just the characters of
   --  the name. On return Name_Buffer and Name_Len are set as for a call to
   --  Get_Name_String. The name is written in encoded form (i.e. including
   --  Uhh, Whhh, Qx, _op as they appear in the name table). If Id is
   --  Error_Name, or No_Name, no text is output.

   procedure Write_Unit_Name (U : Unit_Name_Type);
   --  Output unit name with (body) or (spec) after as required.

   ------------------------
   -- Debugging Routines --
   ------------------------

   procedure wn2 (Id : Name_Id);
   pragma Export (Ada, wn2);

   -------------------------------
   -- Case Control Declarations --
   -------------------------------

   --  Declaration of type for describing casing convention

   type Casing_Type is
     (All_Upper_Case,
      --  All letters are upper case

      All_Lower_Case,
      --  All letters are lower case

      Mixed_Case,
      --  The initial letter, and any letters after underlines are upper case.
      --  All other letters are lower case

      Unknown
      --  Used if an identifier does not distinguish between the above cases,
      --  (e.g. X, Y_3, M4, A_B, or if it is inconsistent ABC_def).
     );

   subtype Known_Casing is Casing_Type range All_Upper_Case .. Mixed_Case;
   --  Exclude Unknown casing

   procedure Set_Casing (C : Casing_Type);
   --  Takes the name stored in the first Name_Len positions of Name_Buffer and
   --  modifies it to be consistent with the casing given by C.

end GPR.Names;