File : fname.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT COMPILER COMPONENTS                         --
   4 --                                                                          --
   5 --                                F N A M E                                 --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  12 -- terms of the  GNU General Public License as published  by the Free Soft- --
  13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  16 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  17 --                                                                          --
  18 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  21 --                                                                          --
  22 -- You should have received a copy of the GNU General Public License and    --
  23 -- a copy of the GCC Runtime Library Exception along with this program;     --
  24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  25 -- <http://www.gnu.org/licenses/>.                                          --
  26 --                                                                          --
  27 -- GNAT was originally developed  by the GNAT team at  New York University. --
  28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  29 --                                                                          --
  30 ------------------------------------------------------------------------------
  31 
  32 --  This package, together with its child package Fname.UF define the
  33 --  association between source file names and unit names as defined
  34 --  (see package Uname for definition of format of unit names).
  35 
  36 with Namet; use Namet;
  37 
  38 package Fname is
  39 
  40    --  Note: this package spec does not depend on the Uname spec in the Ada
  41    --  sense, but the comments and description of the semantics do depend on
  42    --  the conventions established by Uname.
  43 
  44    ---------------------------
  45    -- File Name Conventions --
  46    ---------------------------
  47 
  48    --  GNAT requires that there be a one to one correspondence between source
  49    --  file names (as used in the Osint package interface) and unit names as
  50    --  defined by the Uname package. This correspondence is defined by the
  51    --  two subprograms defined here in the Fname package.
  52 
  53    --   For full rules of file naming, see GNAT User's Guide. Note that the
  54    --   naming rules are affected by the presence of Source_File_Name pragmas
  55    --   that have been previously processed.
  56 
  57    --  Note that the file name does *not* include the directory name. The
  58    --  management of directories is provided by Osint, and full file names
  59    --  are used only for error message purposes within GNAT itself.
  60 
  61    -----------------
  62    -- Subprograms --
  63    -----------------
  64 
  65    function Is_Predefined_File_Name
  66      (Fname              : File_Name_Type;
  67       Renamings_Included : Boolean := True) return Boolean;
  68    --  This function determines if the given file name (which must be a simple
  69    --  file name with no directory information) is the file name for one of the
  70    --  predefined library units (i.e. part of the Ada, System, or Interface
  71    --  hierarchies). Note that units in the GNAT hierarchy are not considered
  72    --  predefined (see Is_Internal_File_Name below). On return, Name_Buffer
  73    --  contains the file name. The Renamings_Included parameter indicates
  74    --  whether annex J renamings such as Text_IO are to be considered as
  75    --  predefined. If Renamings_Included is True, then Text_IO will return
  76    --  True, otherwise only children of Ada, Interfaces and System return True.
  77 
  78    function Is_Predefined_File_Name
  79      (Renamings_Included : Boolean := True) return Boolean;
  80    --  This version is called with the file name already in Name_Buffer
  81 
  82    function Is_Internal_File_Name
  83      (Fname              : File_Name_Type;
  84       Renamings_Included : Boolean := True) return Boolean;
  85    --  Similar to Is_Predefined_File_Name. The internal file set is a superset
  86    --  of the predefined file set including children of GNAT.
  87 
  88    procedure Tree_Read;
  89    --  Dummy procedure (reads dummy table values from tree file)
  90 
  91    procedure Tree_Write;
  92    --  Writes out internal tables to current tree file using Tree_Write
  93    --  This is actually a dummy routine, since the relevant table is
  94    --  no longer used, but we retain it for now, to avoid a tree file
  95    --  incompatibility with the 3.13 compiler. Should be removed for
  96    --  the 3.14a release ???
  97 
  98 end Fname;