home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / lib-load.ads < prev    next >
Text File  |  1996-09-28  |  5KB  |  83 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                             L I B . L O A D                              --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.1 $                              --
  10. --                                                                          --
  11. --        Copyright (c) 1992,1993,1994,1995 NYU, All Rights Reserved        --
  12. --                                                                          --
  13. -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  14. -- terms of the  GNU General Public License as published  by the Free Soft- --
  15. -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
  16. -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  17. -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  18. -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
  19. -- for  more details.  You should have  received  a copy of the GNU General --
  20. -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
  21. -- to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. --
  22. --                                                                          --
  23. ------------------------------------------------------------------------------
  24.  
  25. --  This child package contains the function used to load a separately
  26. --  compiled unit, as well as the routine used to initialize the unit
  27. --  table and load the main source file.
  28. --
  29.  
  30. package Lib.Load is
  31.  
  32.    procedure Initialize;
  33.    --  Called at the start of compiling a new main source unit to initialize
  34.    --  the library processing for the new main source. Establishes and
  35.    --  initializes the units table entry for the new main unit (leaving
  36.    --  the Unit_File_Name entry of Main_Unit set to No_File if there are no
  37.    --  more files. Otherwise the main source file has been opened and read
  38.    --  and then closed on return.
  39.  
  40.    function Load_Unit
  41.      (Uname    : Unit_Name_Type;
  42.       Required : Boolean;
  43.       Enode    : Node_Id)
  44.       return     Unit_Number_Type;
  45.    --  This function loads and parses the unit specified by Unit_Name_Type
  46.    --  (or returns the unit number for the previously constructed units table
  47.    --  entry if this is not the first call for this unit). Required indicates
  48.    --  the behavior on a file not found condition, as further described below,
  49.    --  and Enode is the node in the calling program to which error messages
  50.    --  are to be attached.
  51.    --
  52.    --  If the corresponding file is found, the value returned by Load is the
  53.    --  unit number that indexes the corresponding entry in the units table. If
  54.    --  a serious enough parser error occurs to prevent subsequent semantic
  55.    --  analysis, then the Fatal_Error flag of the returned entry is set and
  56.    --  in addition, the fatal error flag of the calling unit is also set.
  57.    --
  58.    --  If the corresponding file is not found, then the behavior depends on
  59.    --  the setting of Required. If Required is False, then No_Unit is returned
  60.    --  and no error messages are issued. If Required is True, then a fatal
  61.    --  error message is posted, and Unrecoverable_Error raised to abandon the
  62.    --  compilation.
  63.    --
  64.    --  A special case arises in the call from Rtsfind, where Enode is set to
  65.    --  Empty. In this case Required is False, and the caller in any case treats
  66.    --  any error as fatal.
  67.  
  68.    procedure Make_Instance_Unit (N : Node_Id);
  69.    --  When a compilation unit is an instantiation, it contains both the
  70.    --  declaration and the body of the instance, each of which can have its
  71.    --  own elaboration routine. The file itself corresponds to the declaration.
  72.    --  We create an additional entry for the body, so that the binder can
  73.    --  generate the proper elaboration calls to both. The argument N is the
  74.    --  compilation unit node created for the body.
  75.  
  76.    procedure Version_Update (U : Node_Id; From : Node_Id);
  77.    --  This routine is called when unit U is found to be semantically
  78.    --  dependent on unit From. It updates the version of U to register
  79.    --  dependence on the version of From. The arguments are compilation
  80.    --  unit nodes for the relevant library nodes.
  81.  
  82. end Lib.Load;
  83.