aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/ada/aa_util.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/ada/aa_util.ads')
-rw-r--r--gcc-4.9/gcc/ada/aa_util.ads145
1 files changed, 145 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/ada/aa_util.ads b/gcc-4.9/gcc/ada/aa_util.ads
new file mode 100644
index 000000000..27b618324
--- /dev/null
+++ b/gcc-4.9/gcc/ada/aa_util.ads
@@ -0,0 +1,145 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAAMP COMPILER COMPONENTS --
+-- --
+-- A A _ U T I L --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2001-2011, AdaCore --
+-- --
+-- 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 Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- 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 GNAT; see file COPYING3. If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package provides various utility operations used by GNAT back-ends
+-- (e.g. AAMP).
+
+-- This package is a messy grab bag of stuff. These routines should be moved
+-- to appropriate units (sem_util,sem_aux,exp_util,namet,uintp,urealp). ???
+
+with Namet; use Namet;
+with Types; use Types;
+with Uintp; use Uintp;
+with Urealp; use Urealp;
+
+package AA_Util is
+
+ function Is_Global_Entity (E : Entity_Id) return Boolean;
+ -- Returns true if and only if E is a library-level entity (excludes
+ -- entities declared within blocks at the outer level of library packages).
+
+ function New_Name_Id (Name : String) return Name_Id;
+ -- Returns a Name_Id corresponding to the given name string
+
+ function Name_String (Name : Name_Id) return String;
+ -- Returns the name string associated with Name
+
+ function New_String_Id (S : String) return String_Id;
+ -- Returns a String_Id corresponding to the given string
+
+ function String_Value (Str_Id : String_Id) return String;
+ -- Returns the string associated with Str_Id
+
+ -- Name-generation utilities
+
+ type Name_Sequencer is private;
+ -- This type is used to support back-end generation of unique symbol
+ -- (e.g., for string literal objects or labels). By declaring an
+ -- aliased object of type Name_Sequence and passing that object
+ -- to the function Next_Name, a series of names with suffixes
+ -- of the form "__n" will be produced, where n is a string denoting
+ -- a positive integer. The sequence starts with "__1", and increases
+ -- by one on each successive call to Next_Name for a given Name_Sequencer.
+
+ function Next_Name
+ (Name_Seq : not null access Name_Sequencer;
+ Name_Prefix : String) return Name_Id;
+ -- Returns the Name_Id for a name composed of the given Name_Prefix
+ -- concatentated with a unique number suffix of the form "__n",
+ -- as detemined by the current state of Name_Seq.
+
+ function Elab_Spec_Name (Module_Name : Name_Id) return Name_Id;
+ -- Returns a name id for the elaboration subprogram to be associated with
+ -- the specification of the named module. The denoted name is of the form
+ -- "modulename___elabs".
+
+ function Elab_Body_Name (Module_Name : Name_Id) return Name_Id;
+ -- Returns a name id for the elaboration subprogram to be associated
+ -- with the body of the named module. The denoted name is of the form
+ -- "modulename___elabb".
+
+ function File_Name_Without_Suffix (File_Name : String) return String;
+ -- Removes the suffix ('.' followed by other characters), if present, from
+ -- the end of File_Name and returns the shortened name (otherwise simply
+ -- returns File_Name).
+
+ function Source_Name (Sloc : Source_Ptr) return File_Name_Type;
+ -- Returns file name corresponding to the source file name associated with
+ -- the given source position Sloc.
+
+ function Source_Name_Without_Suffix (Sloc : Source_Ptr) return String;
+ -- Returns a string corresponding to the source file name associated with
+ -- the given source position Sloc, with its dot-preceded suffix, if any,
+ -- removed. As examples, the name "main.adb" is mapped to "main" and the
+ -- name "main.2.ada" is mapped to "main.2". As a special case, file names
+ -- with a ".dg" suffix will also strip off the ".dg", so "main.adb.dg"
+ -- becomes simply "main".
+
+ function Source_Id_String (Unit_Name : Name_Id) return String;
+ -- Returns a string that uniquely identifies the unit with the given
+ -- Unit_Name. This string is derived from Unit_Name by replacing any
+ -- multiple underscores with dot ('.') characters and normalizing the
+ -- casing to mixed case (e.g., "ada__strings" is mapped to ("Ada.Strings").
+
+ function Source_Id (Unit_Name : Name_Id) return String_Id;
+ -- Returns a String_Id reference to a string that uniquely identifies
+ -- the program unit having the given name (as defined for function
+ -- Source_Id_String).
+
+ function Source_Id_String (Sloc : Source_Ptr) return String;
+ -- Returns a string that uniquely identifies the source file containing
+ -- the given source location. This string is constructed from the
+ -- concatentation of the date and time stamp of the file with a
+ -- hexadecimal check sum (e.g., "020425143059ABCDEF01").
+
+ function Source_Id (Sloc : Source_Ptr) return String_Id;
+ -- Returns a String_Id reference to a string that uniquely identifies the
+ -- source file containing the given source location (as defined for
+ -- function Source_Id_String).
+
+ function Image (I : Int) return String;
+ -- Returns Int'Image (I), but without a leading space in the case where
+ -- I is nonnegative. Useful for concatenating integers onto other names.
+
+ type Integer_Image_Format is (Decimal, Ada_Hex, AAMP_Hex);
+
+ function UI_Image (I : Uint; Format : Integer_Image_Format) return String;
+ -- Returns the image of the universal integer I, with no leading spaces
+ -- and in the format specified. The Format parameter specifies whether
+ -- the integer representation should be decimal (the default), or Ada
+ -- hexadecimal (Ada_Hex => "16#xxxxx#" format), or AAMP hexadecimal.
+ -- In the latter case, the integer will have the form of a sequence of
+ -- hexadecimal digits bracketed by '^' characters, and will contain '_'
+ -- characters as separators for groups of four hexadecimal digits
+ -- (e.g., ^1C_A3CD^). If the format AAMP_Hex is selected, the universal
+ -- integer must have a nonnegative value.
+
+ function UR_Image (R : Ureal) return String;
+ -- Returns a decimal image of the universal real value R
+
+private
+
+ type Name_Sequencer is record
+ Sequence_Number : Natural := 0;
+ end record;
+
+end AA_Util;