Inspector_Mode : Boolean renames Debug.Debug_Flag_Dot_II;
-- GNAT
-- Set True to activate Inspector mode (-gnatd.I switch). In particular
- -- this enables SCIL generation.
- -- When VM_Target /= None, the compiler will also attempt to
- -- generate code even in case of unsupported construct instead of
- -- displaying an error.
+ -- this enables SCIL generation. When VM_Target /= None, the compiler will
+ -- also attempt to generate code even in case of unsupported construct
+ -- instead of displaying an error.
Invalid_Value_Used : Boolean := False;
-- GNAT
Follow_Links_For_Files : Boolean := False;
-- PROJECT MANAGER
- -- Set to True (-eL) to process the project files in trusted mode.
- -- If Follow_Links is False, it is assumed that the project doesn't contain
+ -- Set to True (-eL) to process the project files in trusted mode. If
+ -- Follow_Links is False, it is assumed that the project doesn't contain
-- any file duplicated through symbolic links (although the latter are
-- still valid if they point to a file which is outside of the project),
-- and that no directory has a name which is a valid source name.
Follow_Links_For_Dirs : Boolean := True;
-- PROJECT MANAGER
- -- Whether directories can be links in this project, and therefore
- -- additional system calls should be performed to ensure we always see the
- -- same full name for each directory.
+ -- Set to True if directories can be links in this project, and therefore
+ -- additional system calls must be performed to ensure that we always see
+ -- the same full name for each directory.
Front_End_Inlining : Boolean := False;
-- GNAT
Inline_Processing_Required : Boolean := False;
-- GNAT
- -- Set True if inline processing is required. Inline processing is
- -- required if an active Inline pragma is processed. The flag is set
- -- for a pragma Inline or Inline_Always that is actually active.
+ -- Set True if inline processing is required. Inline processing is required
+ -- if an active Inline pragma is processed. The flag is set for a pragma
+ -- Inline or Inline_Always that is actually active.
In_Place_Mode : Boolean := False;
-- GNATMAKE
Keep_Going : Boolean := False;
-- GNATMAKE, GPRMAKE, GPRBUILD
- -- When True signals to ignore compilation errors and keep
- -- processing sources until there is no more work.
+ -- When True signals to ignore compilation errors and keep processing
+ -- sources until there is no more work.
Keep_Temporary_Files : Boolean := False;
-- GNATCMD
Link_Only : Boolean := False;
-- GNATMAKE, GPRMAKE, GPRBUILD
- -- Set to True to skip compile and bind steps
- -- (except when Bind_Only is set to True).
+ -- Set to True to skip compile and bind steps (except when Bind_Only is
+ -- set to True).
List_Restrictions : Boolean := False;
-- GNATBIND
List_Representation_Info_To_File : Boolean := False;
-- GNAT
- -- Set true by -gnatRs switch. Causes information from -gnatR/1/2/3
- -- to be written to file.rep (where file is the name of the source
- -- file) instead of stdout. For example, if file x.adb is compiled
- -- using -gnatR2s then representation info is written to x.adb.ref.
+ -- Set true by -gnatRs switch. Causes information from -gnatR/1/2/3 to be
+ -- written to file.rep (where file is the name of the source file) instead
+ -- of stdout. For example, if file x.adb is compiled using -gnatR2s then
+ -- representation info is written to x.adb.ref.
List_Representation_Info_Mechanisms : Boolean := False;
-- GNAT
- -- Set true by -gnatRm switch. Causes information on mechanisms to
- -- be included in the representation output information.
+ -- Set true by -gnatRm switch. Causes information on mechanisms to be
+ -- included in the representation output information.
List_Preprocessing_Symbols : Boolean := False;
-- GNAT, GNATPREP
-- Set to True if symbols for preprocessing a source are to be listed
- -- before preprocessing occurs. Set to True by switch -s of gnatprep
- -- or -s in preprocessing data file for the compiler.
+ -- before preprocessing occurs. Set to True by switch -s of gnatprep or
+ -- -s in preprocessing data file for the compiler.
type Create_Repinfo_File_Proc is access procedure (Src : String);
type Write_Repinfo_Line_Proc is access procedure (Info : String);
Write_Repinfo_Line_Access : Write_Repinfo_Line_Proc := null;
Close_Repinfo_File_Access : Close_Repinfo_File_Proc := null;
-- GNAT
- -- These three locations are left null when operating in non-compiler
- -- (e.g. ASIS mode), but when operating in compiler mode, they are
- -- set to point to the three corresponding procedures in Osint-C. The
- -- reason for this slightly strange interface is to prevent Repinfo
- -- from dragging in Osint in ASIS mode, which would include a lot of
- -- unwanted units in the ASIS build.
+ -- These three locations are left null when operating in non-compiler (e.g.
+ -- ASIS mode), but when operating in compiler mode, they are set to point
+ -- to the three corresponding procedures in Osint-C. The reason for this
+ -- slightly strange interface is to stop Repinfo from dragging in Osint in
+ -- ASIS mode, which would include lots of unwanted units in the ASIS build.
type Create_List_File_Proc is access procedure (S : String);
type Write_List_Info_Proc is access procedure (S : String);
-- set to point to the three corresponding procedures in Osint-C. The
-- reason for this slightly strange interface is to prevent Repinfo
-- from dragging in Osint-C in the binder, which would include unwanted
- -- units in the binder.
+ -- units in the binder.
Locking_Policy : Character := ' ';
-- GNAT, GNATBIND
- -- Set to ' ' for the default case (no locking policy specified).
- -- Reset to first character (uppercase) of locking policy name if a
- -- valid pragma Locking_Policy is encountered.
+ -- Set to ' ' for the default case (no locking policy specified). Reset to
+ -- first character (uppercase) of locking policy name if a valid pragma
+ -- Locking_Policy is encountered.
Locking_Policy_Sloc : Source_Ptr := No_Location;
-- GNAT, GNATBIND
- -- Remember location of previous Locking_Policy pragma. This is used
- -- for inconsistency error messages. A value of System_Location is
- -- used if the policy is set in package System.
+ -- Remember location of previous Locking_Policy pragma. This is used for
+ -- inconsistency error messages. A value of System_Location is used if the
+ -- policy is set in package System.
Look_In_Primary_Dir : Boolean := True;
-- GNAT, GNATBIND, GNATMAKE, GNATCLEAN
- -- Set to False if a -I- was present on the command line.
- -- When True we are allowed to look in the primary directory to locate
- -- other source or library files.
+ -- Set to False if a -I- was present on the command line. When True we are
+ -- allowed to look in the primary directory to locate other source or
+ -- library files.
Make_Steps : Boolean := False;
-- GNATMAKE
Original_Operating_Mode : Operating_Mode_Type := Generate_Code;
-- GNAT
- -- Indicates the original operating mode of the compiler as set by
- -- compiler options. This is identical to Operating_Mode except that
- -- this is not affected by errors.
+ -- Indicates the original operating mode of the compiler as set by compiler
+ -- options. This is identical to Operating_Mode except that this is not
+ -- affected by errors.
Optimization_Level : Int;
pragma Import (C, Optimization_Level, "optimize");
Overflow_Checks_Unsuppressed : Boolean := False;
-- GNAT
- -- Set to True if at least one pragma Unsuppress
+ -- Set to True if at least one occurrence of pragma Unsuppress
-- (All_Checks|Overflow_Checks) has been processed.
Persistent_BSS_Mode : Boolean := False;
type Usage is (Unknown, Not_In_Use, In_Use);
Project_File_In_Use : Usage := Unknown;
-- GNAT
- -- Indicates if a project file is used or not.
- -- Set to In_Use by the first SFNP pragma.
+ -- Indicates if a project file is used or not. Set to In_Use by the first
+ -- SFNP pragma.
Queuing_Policy : Character := ' ';
-- GNAT, GNATBIND
- -- Set to ' ' for the default case (no queuing policy specified).
- -- Reset to first character (uppercase) of locking policy name if a valid
+ -- Set to ' ' for the default case (no queuing policy specified). Reset to
+ -- first character (uppercase) of locking policy name if a valid
-- Queuing_Policy pragma is encountered.
Queuing_Policy_Sloc : Source_Ptr := No_Location;
-- GNAT, GNATBIND
- -- Remember location of previous Queuing_Policy pragma. This is used
- -- for inconsistency error messages. A value of System_Location is
- -- used if the policy is set in package System.
+ -- Remember location of previous Queuing_Policy pragma. This is used for
+ -- inconsistency error messages. A value of System_Location is used if the
+ -- policy is set in package System.
Quiet_Output : Boolean := False;
-- GNATMAKE, GNATCLEAN, GPRMAKE, GPRBUILD, GPRCLEAN
Search_Directory_Present : Boolean := False;
-- GNAT
- -- Set to True when argument is -I. Reset to False when next argument,
- -- a search directory path is taken into account. Note that this is
- -- quite different from other switches in this section in that it is
- -- only set in a transitory manner as a result of scanning a -I switch
- -- with no file name, and if set, is an indication that the next argument
- -- is to be treated as a file name.
+ -- Set to True when argument is -I. Reset to False when next argument, a
+ -- search directory path is taken into account. Note that this is quite
+ -- different from other switches in this section in that it is only set in
+ -- a transitory manner as a result of scanning a -I switch with no file
+ -- name, and if set, is an indication that the next argument is to be
+ -- treated as a file name.
Sec_Stack_Used : Boolean := False;
-- GNAT, GBATBIND
- -- Set True if generated code uses the System.Secondary_Stack package.
- -- For the binder, set if any unit uses the secondary stack package.
+ -- Set True if generated code uses the System.Secondary_Stack package. For
+ -- the binder, set if any unit uses the secondary stack package.
Setup_Projects : Boolean := False;
-- GNAT DRIVER
Shared_Libgnat : Boolean;
-- GNATBIND
- -- Set to True if a shared libgnat is requested by using the -shared
- -- option for GNATBIND and to False when using the -static option. The
- -- value of this flag is set by Gnatbind.Scan_Bind_Arg.
+ -- Set to True if a shared libgnat is requested by using the -shared option
+ -- for GNATBIND and to False when using the -static option. The value of
+ -- this flag is set by Gnatbind.Scan_Bind_Arg.
Sprint_Line_Limit : Nat := 72;
-- Limit values for chopping long lines in Sprint output, can be reset
Style_Check : Boolean := False;
-- GNAT
- -- Set True to perform style checks. Activates checks carried out
- -- in package Style (see body of this package for details of checks)
- -- This flag is set True by either the -gnatg or -gnaty switches.
+ -- Set True to perform style checks. Activates checks carried out in
+ -- package Style (see body of this package for details of checks) This
+ -- flag is set True by either the -gnatg or -gnaty switches.
Suppress_All_Inlining : Boolean := False;
-- GNAT
Tagged_Type_Expansion : Boolean := True;
-- GNAT
-- Set True if tagged types and interfaces should be expanded by the
- -- front-end. If False, the original tree is left unexpanded for
- -- tagged types and dispatching calls, assuming the underlying target
- -- supports it (e.g. case of JVM).
+ -- front-end. If False, the original tree is left unexpanded for tagged
+ -- types and dispatching calls, assuming the underlying target supports
+ -- it (e.g. in the JVM case).
Task_Dispatching_Policy : Character := ' ';
-- GNAT, GNATBIND
Real_Parent : Project_Node_Id;
New_Decl, Decl, Next : Project_Node_Id;
Last, L : Project_Node_Id;
+
begin
if Kind_Of (Expr, Tree) /= N_Declarative_Item then
New_Decl := Default_Project_Node (Tree, N_Declarative_Item);
Next := Next_Declarative_Item (Decl, Tree);
exit when Next = Empty_Node
or else
- (Add_Before_First_Pkg
- and then Kind_Of (Current_Item_Node (Next, Tree), Tree)
- = N_Package_Declaration)
+ (Add_Before_First_Pkg
+ and then Kind_Of (Current_Item_Node (Next, Tree), Tree) =
+ N_Package_Declaration)
or else
- (Add_Before_First_Case
- and then Kind_Of (Current_Item_Node (Next, Tree), Tree)
- = N_Case_Construction);
+ (Add_Before_First_Case
+ and then Kind_Of (Current_Item_Node (Next, Tree), Tree) =
+ N_Case_Construction);
Decl := Next;
end loop;
-- In case Expr is in fact a range of declarative items
+
Last := New_Decl;
loop
L := Next_Declarative_Item (Last, Tree);
end loop;
-- In case Expr is in fact a range of declarative items
+
Last := New_Decl;
loop
L := Next_Declarative_Item (Last, Tree);
function Create_Literal_String
(Str : Namet.Name_Id;
- Tree : Project_Node_Tree_Ref)
- return Project_Node_Id
+ Tree : Project_Node_Tree_Ref) return Project_Node_Id
is
Node : Project_Node_Id;
begin
Tree : Project_Node_Tree_Ref) return Project_Node_Id
is
Expr : constant Project_Node_Id :=
- Default_Project_Node (Tree, N_Expression, Single);
+ Default_Project_Node (Tree, N_Expression, Single);
begin
Set_First_Term (Expr, Tree, Default_Project_Node (Tree, N_Term, Single));
Set_Current_Term (First_Term (Expr, Tree), Tree, Node);
is
Pack : Project_Node_Id;
N : Name_Id;
+
begin
Name_Len := Pkg'Length;
Name_Buffer (1 .. Name_Len) := Pkg;
-- Check if the package already exists
Pack := First_Package_Of (Project, Tree);
-
while Pack /= Empty_Node loop
if Prj.Tree.Name_Of (Pack, Tree) = N then
return Pack;
Set_Package_Id_Of (Pack, Tree, Package_Node_Id_Of (N));
-- Add it to the list of packages
+
Set_Next_Package_In_Project
(Pack, Tree, First_Package_Of (Project, Tree));
Set_First_Package_Of (Project, Tree, Pack);
(Tree : Project_Node_Tree_Ref;
Prj_Or_Pkg : Project_Node_Id;
Name : Name_Id;
- Index_Name : Name_Id := No_Name;
+ Index_Name : Name_Id := No_Name;
Kind : Variable_Kind := List;
- At_Index : Integer := 0) return Project_Node_Id
+ At_Index : Integer := 0) return Project_Node_Id
is
Node : constant Project_Node_Id :=
- Default_Project_Node (Tree, N_Attribute_Declaration, Kind);
+ Default_Project_Node (Tree, N_Attribute_Declaration, Kind);
+
Case_Insensitive : Boolean;
Pkg : Package_Node_Id;
Start_At : Attribute_Node_Id;
+
begin
Set_Name_Of (Node, Tree, Name);
Full_Path : Path_Name_Type;
Is_Config_File : Boolean := False) return Project_Node_Id;
-- Create a new node for a project and register it in the tree so that it
- -- can be retrieved later on
+ -- can be retrieved later on.
function Create_Package
(Tree : Project_Node_Tree_Ref;
Project : Project_Node_Id;
Pkg : String) return Project_Node_Id;
-- Create a new package in Project. If the package already exists, it is
- -- returned.
- -- The name of the package *must* be lower-cases, or none of its attributes
- -- will be recognized.
+ -- returned. The name of the package *must* be lower-cases, or none of its
+ -- attributes will be recognized.
function Create_Attribute
(Tree : Project_Node_Tree_Ref;
Prj_Or_Pkg : Project_Node_Id;
Name : Name_Id;
- Index_Name : Name_Id := No_Name;
+ Index_Name : Name_Id := No_Name;
Kind : Variable_Kind := List;
- At_Index : Integer := 0) return Project_Node_Id;
- -- Create a new attribute.
- -- The new declaration is added at the end of the declarative item list for
- -- Prj_Or_Pkg (a project or a package), but before any package
- -- declaration). No addition is done if Prj_Or_Pkg is Empty_Node.
- -- If Index_Name is not "", then if creates an attribute value for a
- -- specific index.
- -- At_Index is used for the " at <idx>" in the naming exceptions.
- -- Use Set_Expression_Of to set the value of the attribute (in which case
- -- Enclose_In_Expression might be useful)
+ At_Index : Integer := 0) return Project_Node_Id;
+ -- Create a new attribute. The new declaration is added at the end of the
+ -- declarative item list for Prj_Or_Pkg (a project or a package), but
+ -- before any package declaration). No addition is done if Prj_Or_Pkg is
+ -- Empty_Node. If Index_Name is not "", then if creates an attribute value
+ -- for a specific index. At_Index is used for the " at <idx>" in the naming
+ -- exceptions. Use Set_Expression_Of to set the value of the attribute (in
+ -- which case Enclose_In_Expression might be useful)
function Create_Literal_String
(Str : Namet.Name_Id;
- Tree : Project_Node_Tree_Ref)
- return Project_Node_Id;
+ Tree : Project_Node_Tree_Ref) return Project_Node_Id;
-- Create a literal string whose value is Str
procedure Add_At_End
Expr : Project_Node_Id;
Add_Before_First_Pkg : Boolean := False;
Add_Before_First_Case : Boolean := False);
- -- Add a new declarative item in the list in Parent.
- -- This new declarative item will contain Expr (unless Expr is already a
- -- declarative item, in which case it is added directly to the list). The
- -- new item is inserted at the end of the list, unless Add_Before_First_Pkg
- -- is True. In the latter case, it is added just before the first case
- -- construction is seen, or before the first package (this assumes that all
- -- packages are found at the end of the project, which isn't true in the
- -- general case unless you have normalized the project to match this
- -- description).
+ -- Add a new declarative item in the list in Parent. This new declarative
+ -- item will contain Expr (unless Expr is already a declarative item, in
+ -- which case it is added directly to the list). The new item is inserted
+ -- at the end of the list, unless Add_Before_First_Pkg is True. In the
+ -- latter case, it is added just before the first case construction is
+ -- seen, or before the first package (this assumes that all packages are
+ -- found at the end of the project, which isn't true in the general case
+ -- unless you have normalized the project to match this description).
function Enclose_In_Expression
(Node : Project_Node_Id;
-- The following procedures are part of the abstract interface of the
-- Project File tree.
+
-- Each Set_* procedure is valid only for the same Project_Node_Kind
-- nodes as the corresponding query function above.
-- These are very low-level, and manipulate the tree itself directly. You