From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/ada/snames.ads-tmpl | 1800 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1800 insertions(+) create mode 100644 gcc/ada/snames.ads-tmpl (limited to 'gcc/ada/snames.ads-tmpl') diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl new file mode 100644 index 000000000..1a5eb033e --- /dev/null +++ b/gcc/ada/snames.ads-tmpl @@ -0,0 +1,1800 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT COMPILER COMPONENTS -- +-- -- +-- S N A M E S -- +-- -- +-- T e m p l a t e -- +-- -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- +-- -- +-- 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. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- 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 -- +-- . -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +with Namet; use Namet; + +package Snames is + +-- This package contains definitions of standard names (i.e. entries in the +-- Names table) that are used throughout the GNAT compiler. It also contains +-- the definitions of some enumeration types whose definitions are tied to +-- the order of these preset names. + + ------------------ + -- Preset Names -- + ------------------ + + -- The following are preset entries in the names table, which are entered + -- at the start of every compilation for easy access. Note that the order + -- of initialization of these names in the body must be coordinated with + -- the order of names in this table. + + -- Note: a name may not appear more than once in the following list. If + -- additional pragmas or attributes are introduced which might otherwise + -- cause a duplicate, then list it only once in this table, and adjust the + -- definition of the functions for testing for pragma names and attribute + -- names, and returning their ID values. Of course everything is simpler + -- if no such duplications occur! + + -- First we have the one character names used to optimize the lookup + -- process for one character identifiers (to avoid the hashing in this + -- case) There are a full 256 of these, but only the entries for lower + -- case and upper case letters have identifiers + + -- The lower case letter entries are used for one character identifiers + -- appearing in the source, for example in pragma Interface (C). + + Name_A : constant Name_Id := First_Name_Id + Character'Pos ('a'); + Name_B : constant Name_Id := First_Name_Id + Character'Pos ('b'); + Name_C : constant Name_Id := First_Name_Id + Character'Pos ('c'); + Name_D : constant Name_Id := First_Name_Id + Character'Pos ('d'); + Name_E : constant Name_Id := First_Name_Id + Character'Pos ('e'); + Name_F : constant Name_Id := First_Name_Id + Character'Pos ('f'); + Name_G : constant Name_Id := First_Name_Id + Character'Pos ('g'); + Name_H : constant Name_Id := First_Name_Id + Character'Pos ('h'); + Name_I : constant Name_Id := First_Name_Id + Character'Pos ('i'); + Name_J : constant Name_Id := First_Name_Id + Character'Pos ('j'); + Name_K : constant Name_Id := First_Name_Id + Character'Pos ('k'); + Name_L : constant Name_Id := First_Name_Id + Character'Pos ('l'); + Name_M : constant Name_Id := First_Name_Id + Character'Pos ('m'); + Name_N : constant Name_Id := First_Name_Id + Character'Pos ('n'); + Name_O : constant Name_Id := First_Name_Id + Character'Pos ('o'); + Name_P : constant Name_Id := First_Name_Id + Character'Pos ('p'); + Name_Q : constant Name_Id := First_Name_Id + Character'Pos ('q'); + Name_R : constant Name_Id := First_Name_Id + Character'Pos ('r'); + Name_S : constant Name_Id := First_Name_Id + Character'Pos ('s'); + Name_T : constant Name_Id := First_Name_Id + Character'Pos ('t'); + Name_U : constant Name_Id := First_Name_Id + Character'Pos ('u'); + Name_V : constant Name_Id := First_Name_Id + Character'Pos ('v'); + Name_W : constant Name_Id := First_Name_Id + Character'Pos ('w'); + Name_X : constant Name_Id := First_Name_Id + Character'Pos ('x'); + Name_Y : constant Name_Id := First_Name_Id + Character'Pos ('y'); + Name_Z : constant Name_Id := First_Name_Id + Character'Pos ('z'); + + -- The upper case letter entries are used by expander code for local + -- variables that do not require unique names (e.g. formal parameter + -- names in constructed procedures) + + Name_uA : constant Name_Id := First_Name_Id + Character'Pos ('A'); + Name_uB : constant Name_Id := First_Name_Id + Character'Pos ('B'); + Name_uC : constant Name_Id := First_Name_Id + Character'Pos ('C'); + Name_uD : constant Name_Id := First_Name_Id + Character'Pos ('D'); + Name_uE : constant Name_Id := First_Name_Id + Character'Pos ('E'); + Name_uF : constant Name_Id := First_Name_Id + Character'Pos ('F'); + Name_uG : constant Name_Id := First_Name_Id + Character'Pos ('G'); + Name_uH : constant Name_Id := First_Name_Id + Character'Pos ('H'); + Name_uI : constant Name_Id := First_Name_Id + Character'Pos ('I'); + Name_uJ : constant Name_Id := First_Name_Id + Character'Pos ('J'); + Name_uK : constant Name_Id := First_Name_Id + Character'Pos ('K'); + Name_uL : constant Name_Id := First_Name_Id + Character'Pos ('L'); + Name_uM : constant Name_Id := First_Name_Id + Character'Pos ('M'); + Name_uN : constant Name_Id := First_Name_Id + Character'Pos ('N'); + Name_uO : constant Name_Id := First_Name_Id + Character'Pos ('O'); + Name_uP : constant Name_Id := First_Name_Id + Character'Pos ('P'); + Name_uQ : constant Name_Id := First_Name_Id + Character'Pos ('Q'); + Name_uR : constant Name_Id := First_Name_Id + Character'Pos ('R'); + Name_uS : constant Name_Id := First_Name_Id + Character'Pos ('S'); + Name_uT : constant Name_Id := First_Name_Id + Character'Pos ('T'); + Name_uU : constant Name_Id := First_Name_Id + Character'Pos ('U'); + Name_uV : constant Name_Id := First_Name_Id + Character'Pos ('V'); + Name_uW : constant Name_Id := First_Name_Id + Character'Pos ('W'); + Name_uX : constant Name_Id := First_Name_Id + Character'Pos ('X'); + Name_uY : constant Name_Id := First_Name_Id + Character'Pos ('Y'); + Name_uZ : constant Name_Id := First_Name_Id + Character'Pos ('Z'); + + -- Note: the following table is read by the utility program XSNAMES and + -- its format should not be changed without coordinating with this program. + + N : constant Name_Id := First_Name_Id + 256; + -- Synonym used in standard name definitions + + -- Names referenced in snames.h + + Name_uParent : constant Name_Id := N + $; + Name_uTag : constant Name_Id := N + $; + Name_Off : constant Name_Id := N + $; + Name_Space : constant Name_Id := N + $; + Name_Time : constant Name_Id := N + $; + + -- Names of aspects for which there are no matching pragmas or attributes + -- so that they need to be included for aspect specification use. + + Name_Post : constant Name_Id := N + $; + Name_Pre : constant Name_Id := N + $; + + -- Some special names used by the expander. Note that the lower case u's + -- at the start of these names get translated to extra underscores. These + -- names are only referenced internally by expander generated code. + + Name_uAbort_Signal : constant Name_Id := N + $; + Name_uAlignment : constant Name_Id := N + $; + Name_uAssign : constant Name_Id := N + $; + Name_uATCB : constant Name_Id := N + $; + Name_uChain : constant Name_Id := N + $; + Name_uClean : constant Name_Id := N + $; + Name_uController : constant Name_Id := N + $; + Name_uCPU : constant Name_Id := N + $; + Name_uEntry_Bodies : constant Name_Id := N + $; + Name_uExpunge : constant Name_Id := N + $; + Name_uFinal_List : constant Name_Id := N + $; + Name_uIdepth : constant Name_Id := N + $; + Name_uInit : constant Name_Id := N + $; + Name_uLocal_Final_List : constant Name_Id := N + $; + Name_uMaster : constant Name_Id := N + $; + Name_uObject : constant Name_Id := N + $; + Name_uPostconditions : constant Name_Id := N + $; + Name_uPriority : constant Name_Id := N + $; + Name_uProcess_ATSD : constant Name_Id := N + $; + Name_uRelative_Deadline : constant Name_Id := N + $; + Name_uResult : constant Name_Id := N + $; + Name_uSecondary_Stack : constant Name_Id := N + $; + Name_uService : constant Name_Id := N + $; + Name_uSize : constant Name_Id := N + $; + Name_uStack : constant Name_Id := N + $; + Name_uTags : constant Name_Id := N + $; + Name_uTask : constant Name_Id := N + $; + Name_uTask_Id : constant Name_Id := N + $; + Name_uTask_Info : constant Name_Id := N + $; + Name_uTask_Name : constant Name_Id := N + $; + Name_uTrace_Sp : constant Name_Id := N + $; + + -- Names of predefined primitives used in the expansion of dispatching + -- requeue and select statements, Abort, 'Callable and 'Terminated. + + Name_uDisp_Asynchronous_Select : constant Name_Id := N + $; + Name_uDisp_Conditional_Select : constant Name_Id := N + $; + Name_uDisp_Get_Prim_Op_Kind : constant Name_Id := N + $; + Name_uDisp_Get_Task_Id : constant Name_Id := N + $; + Name_uDisp_Requeue : constant Name_Id := N + $; + Name_uDisp_Timed_Select : constant Name_Id := N + $; + + -- Names of routines in Ada.Finalization, needed by expander + + Name_Initialize : constant Name_Id := N + $; + Name_Adjust : constant Name_Id := N + $; + Name_Finalize : constant Name_Id := N + $; + + -- Names of fields declared in System.Finalization_Implementation, + -- needed by the expander when generating code for finalization. + + Name_Next : constant Name_Id := N + $; + Name_Prev : constant Name_Id := N + $; + + -- Names of allocation routines, also needed by expander + + Name_Allocate : constant Name_Id := N + $; + Name_Deallocate : constant Name_Id := N + $; + Name_Dereference : constant Name_Id := N + $; + + -- Names of Text_IO generic subpackages (see Rtsfind.Text_IO_Kludge) + + First_Text_IO_Package : constant Name_Id := N + $; + Name_Decimal_IO : constant Name_Id := N + $; + Name_Enumeration_IO : constant Name_Id := N + $; + Name_Fixed_IO : constant Name_Id := N + $; + Name_Float_IO : constant Name_Id := N + $; + Name_Integer_IO : constant Name_Id := N + $; + Name_Modular_IO : constant Name_Id := N + $; + Last_Text_IO_Package : constant Name_Id := N + $; + + subtype Text_IO_Package_Name is Name_Id + range First_Text_IO_Package .. Last_Text_IO_Package; + + -- Some miscellaneous names used for error detection/recovery + + Name_Const : constant Name_Id := N + $; + Name_Error : constant Name_Id := N + $; + Name_Go : constant Name_Id := N + $; + Name_Put : constant Name_Id := N + $; + Name_Put_Line : constant Name_Id := N + $; + Name_To : constant Name_Id := N + $; + + -- Name used by the integrated preprocessor + + Name_Defined : constant Name_Id := N + $; + + -- Names for packages that are treated specially by the compiler + + Name_Exception_Traces : constant Name_Id := N + $; + Name_Finalization : constant Name_Id := N + $; + Name_Finalization_Root : constant Name_Id := N + $; + Name_Interfaces : constant Name_Id := N + $; + Name_Most_Recent_Exception : constant Name_Id := N + $; + Name_Standard : constant Name_Id := N + $; + Name_System : constant Name_Id := N + $; + Name_Text_IO : constant Name_Id := N + $; + Name_Wide_Text_IO : constant Name_Id := N + $; + Name_Wide_Wide_Text_IO : constant Name_Id := N + $; + + -- Names of implementations of the distributed systems annex + + First_PCS_Name : constant Name_Id := N + $; + Name_No_DSA : constant Name_Id := N + $; + Name_GARLIC_DSA : constant Name_Id := N + $; + Name_PolyORB_DSA : constant Name_Id := N + $; + Last_PCS_Name : constant Name_Id := N + $; + + subtype PCS_Names is Name_Id + range First_PCS_Name .. Last_PCS_Name; + + -- Names of identifiers used in expanding distribution stubs + + Name_Addr : constant Name_Id := N + $; + Name_Async : constant Name_Id := N + $; + Name_Get_Active_Partition_ID : constant Name_Id := N + $; + Name_Get_RCI_Package_Receiver : constant Name_Id := N + $; + Name_Get_RCI_Package_Ref : constant Name_Id := N + $; + Name_Origin : constant Name_Id := N + $; + Name_Params : constant Name_Id := N + $; + Name_Partition : constant Name_Id := N + $; + Name_Partition_Interface : constant Name_Id := N + $; + Name_Ras : constant Name_Id := N + $; + Name_uCall : constant Name_Id := N + $; + Name_RCI_Name : constant Name_Id := N + $; + Name_Receiver : constant Name_Id := N + $; + Name_Rpc : constant Name_Id := N + $; + Name_Subp_Id : constant Name_Id := N + $; + Name_Operation : constant Name_Id := N + $; + Name_Argument : constant Name_Id := N + $; + Name_Arg_Modes : constant Name_Id := N + $; + Name_Handler : constant Name_Id := N + $; + Name_Target : constant Name_Id := N + $; + Name_Req : constant Name_Id := N + $; + Name_Obj_TypeCode : constant Name_Id := N + $; + Name_Stub : constant Name_Id := N + $; + + -- Operator Symbol entries. The actual names have an upper case O at + -- the start in place of the Op_ prefix (e.g. the actual name that + -- corresponds to Name_Op_Abs is "Oabs". + + First_Operator_Name : constant Name_Id := N + $; + Name_Op_Abs : constant Name_Id := N + $; -- "abs" + Name_Op_And : constant Name_Id := N + $; -- "and" + Name_Op_Mod : constant Name_Id := N + $; -- "mod" + Name_Op_Not : constant Name_Id := N + $; -- "not" + Name_Op_Or : constant Name_Id := N + $; -- "or" + Name_Op_Rem : constant Name_Id := N + $; -- "rem" + Name_Op_Xor : constant Name_Id := N + $; -- "xor" + Name_Op_Eq : constant Name_Id := N + $; -- "=" + Name_Op_Ne : constant Name_Id := N + $; -- "/=" + Name_Op_Lt : constant Name_Id := N + $; -- "<" + Name_Op_Le : constant Name_Id := N + $; -- "<=" + Name_Op_Gt : constant Name_Id := N + $; -- ">" + Name_Op_Ge : constant Name_Id := N + $; -- ">=" + Name_Op_Add : constant Name_Id := N + $; -- "+" + Name_Op_Subtract : constant Name_Id := N + $; -- "-" + Name_Op_Concat : constant Name_Id := N + $; -- "&" + Name_Op_Multiply : constant Name_Id := N + $; -- "*" + Name_Op_Divide : constant Name_Id := N + $; -- "/" + Name_Op_Expon : constant Name_Id := N + $; -- "**" + Last_Operator_Name : constant Name_Id := N + $; + + -- Names for all pragmas recognized by GNAT. The entries with the comment + -- "Ada 83" are pragmas that are defined in Ada 83, but not in Ada 95. + -- These pragmas are fully implemented in all modes (Ada 83, Ada 95, and + -- Ada 2005). In Ada 95 and Ada 2005 modes, they are technically considered + -- to be implementation dependent pragmas. + + -- The entries marked GNAT are pragmas that are defined by GNAT and that + -- are implemented in all modes (Ada 83, Ada 95, and Ada 2005) Complete + -- descriptions of the syntax of these implementation dependent pragmas + -- may be found in the appropriate section in unit Sem_Prag in file + -- sem-prag.adb, and they are documented in the GNAT reference manual. + + -- The entries marked Ada 05 are Ada 2005 pragmas. They are implemented + -- in Ada 83 and Ada 95 mode as well, where they are technically considered + -- to be implementation dependent pragmas. + + -- The entries marked Ada 12 are Ada 2012 pragmas. They are implemented + -- in Ada 83, Ada 95, and Ada 2005 mode as well, where they are technically + -- considered to be implementation dependent pragmas. + + -- The entries marked VMS are VMS specific pragmas that are recognized + -- only in OpenVMS versions of GNAT. They are ignored in other versions + -- with an appropriate warning. + + -- The entries marked AAMP are AAMP specific pragmas that are recognized + -- only in GNAT for the AAMP. They are ignored in other versions with + -- appropriate warnings. + + First_Pragma_Name : constant Name_Id := N + $; + + -- Configuration pragmas are grouped at start. Note that there is a list + -- of these names in the GNAT Users guide, be sure to update this list if + -- a new configuration pragma is added. + + Name_Ada_83 : constant Name_Id := N + $; -- GNAT + Name_Ada_95 : constant Name_Id := N + $; -- GNAT + Name_Ada_05 : constant Name_Id := N + $; -- GNAT + Name_Ada_2005 : constant Name_Id := N + $; -- GNAT + Name_Ada_12 : constant Name_Id := N + $; -- GNAT + Name_Ada_2012 : constant Name_Id := N + $; -- GNAT + Name_Assertion_Policy : constant Name_Id := N + $; -- Ada 05 + Name_Assume_No_Invalid_Values : constant Name_Id := N + $; -- GNAT + Name_C_Pass_By_Copy : constant Name_Id := N + $; -- GNAT + Name_Check_Name : constant Name_Id := N + $; -- GNAT + Name_Check_Policy : constant Name_Id := N + $; -- GNAT + Name_Compile_Time_Error : constant Name_Id := N + $; -- GNAT + Name_Compile_Time_Warning : constant Name_Id := N + $; -- GNAT + Name_Compiler_Unit : constant Name_Id := N + $; -- GNAT + Name_Component_Alignment : constant Name_Id := N + $; -- GNAT + Name_Convention_Identifier : constant Name_Id := N + $; -- GNAT + Name_Debug_Policy : constant Name_Id := N + $; -- GNAT + Name_Detect_Blocking : constant Name_Id := N + $; -- Ada 05 + Name_Default_Storage_Pool : constant Name_Id := N + $; -- Ada 12 + Name_Discard_Names : constant Name_Id := N + $; + Name_Elaboration_Checks : constant Name_Id := N + $; -- GNAT + Name_Eliminate : constant Name_Id := N + $; -- GNAT + Name_Extend_System : constant Name_Id := N + $; -- GNAT + Name_Extensions_Allowed : constant Name_Id := N + $; -- GNAT + Name_External_Name_Casing : constant Name_Id := N + $; -- GNAT + + -- Note: Fast_Math is not in this list because its name matches -- GNAT + -- the name of the corresponding attribute. However, it is + -- included in the definition of the type Pragma_Id, and the + -- functions Get_Pragma_Id, Is_[Configuration_]Pragma_Id, and + -- correctly recognize and process Fast_Math. + + Name_Favor_Top_Level : constant Name_Id := N + $; -- GNAT + Name_Float_Representation : constant Name_Id := N + $; -- GNAT + Name_Implicit_Packing : constant Name_Id := N + $; -- GNAT + Name_Initialize_Scalars : constant Name_Id := N + $; -- GNAT + Name_Interrupt_State : constant Name_Id := N + $; -- GNAT + Name_License : constant Name_Id := N + $; -- GNAT + Name_Locking_Policy : constant Name_Id := N + $; + Name_Long_Float : constant Name_Id := N + $; -- VMS + Name_No_Run_Time : constant Name_Id := N + $; -- GNAT + Name_No_Strict_Aliasing : constant Name_Id := N + $; -- GNAT + Name_Normalize_Scalars : constant Name_Id := N + $; + Name_Optimize_Alignment : constant Name_Id := N + $; -- GNAT + Name_Persistent_BSS : constant Name_Id := N + $; -- GNAT + Name_Polling : constant Name_Id := N + $; -- GNAT + Name_Priority_Specific_Dispatching : constant Name_Id := N + $; -- Ada 05 + Name_Profile : constant Name_Id := N + $; -- Ada 05 + Name_Profile_Warnings : constant Name_Id := N + $; -- GNAT + Name_Propagate_Exceptions : constant Name_Id := N + $; -- GNAT + Name_Queuing_Policy : constant Name_Id := N + $; + Name_Ravenscar : constant Name_Id := N + $; -- GNAT + Name_Restricted_Run_Time : constant Name_Id := N + $; -- GNAT + Name_Restrictions : constant Name_Id := N + $; + Name_Restriction_Warnings : constant Name_Id := N + $; -- GNAT + Name_Reviewable : constant Name_Id := N + $; + Name_Short_Circuit_And_Or : constant Name_Id := N + $; -- GNAT + Name_Short_Descriptors : constant Name_Id := N + $; -- GNAT + Name_Source_File_Name : constant Name_Id := N + $; -- GNAT + Name_Source_File_Name_Project : constant Name_Id := N + $; -- GNAT + Name_Style_Checks : constant Name_Id := N + $; -- GNAT + Name_Suppress : constant Name_Id := N + $; + Name_Suppress_Exception_Locations : constant Name_Id := N + $; -- GNAT + Name_Task_Dispatching_Policy : constant Name_Id := N + $; + Name_Universal_Data : constant Name_Id := N + $; -- AAMP + Name_Unsuppress : constant Name_Id := N + $; -- Ada 05 + Name_Use_VADS_Size : constant Name_Id := N + $; -- GNAT + Name_Validity_Checks : constant Name_Id := N + $; -- GNAT + Name_Warnings : constant Name_Id := N + $; -- GNAT + Name_Wide_Character_Encoding : constant Name_Id := N + $; -- GNAT + Last_Configuration_Pragma_Name : constant Name_Id := N + $; + + -- Remaining pragma names + + Name_Abort_Defer : constant Name_Id := N + $; -- GNAT + Name_All_Calls_Remote : constant Name_Id := N + $; + Name_Annotate : constant Name_Id := N + $; -- GNAT + + -- Note: AST_Entry is not in this list because its name matches -- VMS + -- the name of the corresponding attribute. However, it is + -- included in the definition of the type Pragma_Id, and the + -- functions Get_Pragma_Id and Is_Pragma_Id correctly recognize + -- and process Name_AST_Entry. + + Name_Assert : constant Name_Id := N + $; -- Ada 05 + Name_Asynchronous : constant Name_Id := N + $; + Name_Atomic : constant Name_Id := N + $; + Name_Atomic_Components : constant Name_Id := N + $; + Name_Attach_Handler : constant Name_Id := N + $; + Name_Check : constant Name_Id := N + $; -- GNAT + Name_CIL_Constructor : constant Name_Id := N + $; -- GNAT + Name_Comment : constant Name_Id := N + $; -- GNAT + Name_Common_Object : constant Name_Id := N + $; -- GNAT + Name_Complete_Representation : constant Name_Id := N + $; -- GNAT + Name_Complex_Representation : constant Name_Id := N + $; -- GNAT + Name_Controlled : constant Name_Id := N + $; + Name_Convention : constant Name_Id := N + $; + Name_CPP_Class : constant Name_Id := N + $; -- GNAT + Name_CPP_Constructor : constant Name_Id := N + $; -- GNAT + Name_CPP_Virtual : constant Name_Id := N + $; -- GNAT + Name_CPP_Vtable : constant Name_Id := N + $; -- GNAT + Name_CPU : constant Name_Id := N + $; -- Ada 12 + Name_Debug : constant Name_Id := N + $; -- GNAT + Name_Dimension : constant Name_Id := N + $; -- GNAT + Name_Elaborate : constant Name_Id := N + $; -- Ada 83 + Name_Elaborate_All : constant Name_Id := N + $; + Name_Elaborate_Body : constant Name_Id := N + $; + Name_Export : constant Name_Id := N + $; + Name_Export_Exception : constant Name_Id := N + $; -- VMS + Name_Export_Function : constant Name_Id := N + $; -- GNAT + Name_Export_Object : constant Name_Id := N + $; -- GNAT + Name_Export_Procedure : constant Name_Id := N + $; -- GNAT + Name_Export_Value : constant Name_Id := N + $; -- GNAT + Name_Export_Valued_Procedure : constant Name_Id := N + $; -- GNAT + Name_External : constant Name_Id := N + $; -- GNAT + Name_Finalize_Storage_Only : constant Name_Id := N + $; -- GNAT + Name_Ident : constant Name_Id := N + $; -- VMS + Name_Implemented : constant Name_Id := N + $; -- Ada 12 + Name_Import : constant Name_Id := N + $; + Name_Import_Exception : constant Name_Id := N + $; -- VMS + Name_Import_Function : constant Name_Id := N + $; -- GNAT + Name_Import_Object : constant Name_Id := N + $; -- GNAT + Name_Import_Procedure : constant Name_Id := N + $; -- GNAT + Name_Import_Valued_Procedure : constant Name_Id := N + $; -- GNAT + Name_Independent : constant Name_Id := N + $; -- Ada 12 + Name_Independent_Components : constant Name_Id := N + $; -- Ada 12 + Name_Inline : constant Name_Id := N + $; + Name_Inline_Always : constant Name_Id := N + $; -- GNAT + Name_Inline_Generic : constant Name_Id := N + $; -- GNAT + Name_Inspection_Point : constant Name_Id := N + $; + + -- Note: Interface is not in this list because its name -- GNAT + -- matches an Ada 05 keyword. However it is included in + -- the definition of the type Attribute_Id, and the functions + -- Get_Pragma_Id and Is_Pragma_Id correctly recognize and + -- process Name_Storage_Size. + + Name_Interface_Name : constant Name_Id := N + $; -- GNAT + Name_Interrupt_Handler : constant Name_Id := N + $; + Name_Interrupt_Priority : constant Name_Id := N + $; + Name_Invariant : constant Name_Id := N + $; -- GNAT + Name_Java_Constructor : constant Name_Id := N + $; -- GNAT + Name_Java_Interface : constant Name_Id := N + $; -- GNAT + Name_Keep_Names : constant Name_Id := N + $; -- GNAT + Name_Link_With : constant Name_Id := N + $; -- GNAT + Name_Linker_Alias : constant Name_Id := N + $; -- GNAT + Name_Linker_Constructor : constant Name_Id := N + $; -- GNAT + Name_Linker_Destructor : constant Name_Id := N + $; -- GNAT + Name_Linker_Options : constant Name_Id := N + $; + Name_Linker_Section : constant Name_Id := N + $; -- GNAT + Name_List : constant Name_Id := N + $; + Name_Machine_Attribute : constant Name_Id := N + $; -- GNAT + Name_Main : constant Name_Id := N + $; -- GNAT + Name_Main_Storage : constant Name_Id := N + $; -- GNAT + Name_Memory_Size : constant Name_Id := N + $; -- Ada 83 + Name_No_Body : constant Name_Id := N + $; -- GNAT + Name_No_Return : constant Name_Id := N + $; -- Ada 05 + Name_Obsolescent : constant Name_Id := N + $; -- GNAT + Name_Optimize : constant Name_Id := N + $; + Name_Ordered : constant Name_Id := N + $; -- GNAT + Name_Pack : constant Name_Id := N + $; + Name_Page : constant Name_Id := N + $; + Name_Passive : constant Name_Id := N + $; -- GNAT + Name_Postcondition : constant Name_Id := N + $; -- GNAT + Name_Precondition : constant Name_Id := N + $; -- GNAT + Name_Predicate : constant Name_Id := N + $; -- GNAT + Name_Preelaborable_Initialization : constant Name_Id := N + $; -- Ada 05 + Name_Preelaborate : constant Name_Id := N + $; + Name_Preelaborate_05 : constant Name_Id := N + $; -- GNAT + + -- Note: Priority is not in this list because its name matches + -- the name of the corresponding attribute. However, it is + -- included in the definition of the type Pragma_Id, and the + -- functions Get_Pragma_Id and Is_Pragma_Id correctly recognize + -- and process Priority. Priority is a standard Ada 95 pragma. + + Name_Psect_Object : constant Name_Id := N + $; -- VMS + Name_Pure : constant Name_Id := N + $; + Name_Pure_05 : constant Name_Id := N + $; -- GNAT + Name_Pure_Function : constant Name_Id := N + $; -- GNAT + Name_Relative_Deadline : constant Name_Id := N + $; -- Ada 05 + Name_Remote_Call_Interface : constant Name_Id := N + $; + Name_Remote_Types : constant Name_Id := N + $; + Name_Share_Generic : constant Name_Id := N + $; -- GNAT + Name_Shared : constant Name_Id := N + $; -- Ada 83 + Name_Shared_Passive : constant Name_Id := N + $; + + -- Note: Storage_Size is not in this list because its name + -- matches the name of the corresponding attribute. However, + -- it is included in the definition of the type Attribute_Id, + -- and the functions Get_Pragma_Id and Is_Pragma_Id correctly + -- recognize and process Name_Storage_Size. + + -- Note: Storage_Unit is also omitted from the list because + -- of a clash with an attribute name, and is treated similarly. + + Name_Source_Reference : constant Name_Id := N + $; -- GNAT + Name_Static_Elaboration_Desired : constant Name_Id := N + $; -- GNAT + Name_Stream_Convert : constant Name_Id := N + $; -- GNAT + Name_Subtitle : constant Name_Id := N + $; -- GNAT + Name_Suppress_All : constant Name_Id := N + $; -- GNAT + Name_Suppress_Debug_Info : constant Name_Id := N + $; -- GNAT + Name_Suppress_Initialization : constant Name_Id := N + $; -- GNAT + Name_System_Name : constant Name_Id := N + $; -- Ada 83 + Name_Task_Info : constant Name_Id := N + $; -- GNAT + Name_Task_Name : constant Name_Id := N + $; -- GNAT + Name_Task_Storage : constant Name_Id := N + $; -- VMS + Name_Thread_Local_Storage : constant Name_Id := N + $; -- GNAT + Name_Time_Slice : constant Name_Id := N + $; -- GNAT + Name_Title : constant Name_Id := N + $; -- GNAT + Name_Unchecked_Union : constant Name_Id := N + $; -- Ada 05 + Name_Unimplemented_Unit : constant Name_Id := N + $; -- GNAT + Name_Universal_Aliasing : constant Name_Id := N + $; -- GNAT + Name_Unmodified : constant Name_Id := N + $; -- GNAT + Name_Unreferenced : constant Name_Id := N + $; -- GNAT + Name_Unreferenced_Objects : constant Name_Id := N + $; -- GNAT + Name_Unreserve_All_Interrupts : constant Name_Id := N + $; -- GNAT + Name_Volatile : constant Name_Id := N + $; + Name_Volatile_Components : constant Name_Id := N + $; + Name_Weak_External : constant Name_Id := N + $; -- GNAT + Last_Pragma_Name : constant Name_Id := N + $; + + -- Language convention names for pragma Convention/Export/Import/Interface + -- Note that Name_C is not included in this list, since it was already + -- declared earlier in the context of one-character identifier names + -- (where the order is critical to the fast look up process). + + -- Note: there are no convention names corresponding to the conventions + -- Entry and Protected, this is because these conventions cannot be + -- specified by a pragma. + + First_Convention_Name : constant Name_Id := N + $; + Name_Ada : constant Name_Id := N + $; + Name_Assembler : constant Name_Id := N + $; + Name_CIL : constant Name_Id := N + $; + Name_COBOL : constant Name_Id := N + $; + Name_CPP : constant Name_Id := N + $; + Name_Fortran : constant Name_Id := N + $; + Name_Intrinsic : constant Name_Id := N + $; + Name_Java : constant Name_Id := N + $; + Name_Stdcall : constant Name_Id := N + $; + Name_Stubbed : constant Name_Id := N + $; + Last_Convention_Name : constant Name_Id := N + $; + + -- The following names are preset as synonyms for Assembler + + Name_Asm : constant Name_Id := N + $; + Name_Assembly : constant Name_Id := N + $; + + -- The following names are preset as synonyms for C + + Name_Default : constant Name_Id := N + $; + -- Name_External (previously defined as pragma) + + -- The following names are preset as synonyms for CPP + + Name_C_Plus_Plus : constant Name_Id := N + $; + + -- The following names are present as synonyms for Stdcall + + Name_DLL : constant Name_Id := N + $; + Name_Win32 : constant Name_Id := N + $; + + -- Other special names used in processing pragmas + + Name_As_Is : constant Name_Id := N + $; + Name_Assertion : constant Name_Id := N + $; + Name_Attribute_Name : constant Name_Id := N + $; + Name_Body_File_Name : constant Name_Id := N + $; + Name_Boolean_Entry_Barriers : constant Name_Id := N + $; + Name_By_Any : constant Name_Id := N + $; + Name_By_Entry : constant Name_Id := N + $; + Name_By_Protected_Procedure : constant Name_Id := N + $; + Name_Casing : constant Name_Id := N + $; + Name_Code : constant Name_Id := N + $; + Name_Component : constant Name_Id := N + $; + Name_Component_Size_4 : constant Name_Id := N + $; + Name_Copy : constant Name_Id := N + $; + Name_D_Float : constant Name_Id := N + $; + Name_Descriptor : constant Name_Id := N + $; + Name_Dot_Replacement : constant Name_Id := N + $; + Name_Dynamic : constant Name_Id := N + $; + Name_Entity : constant Name_Id := N + $; + Name_Entry_Count : constant Name_Id := N + $; + Name_External_Name : constant Name_Id := N + $; + Name_First_Optional_Parameter : constant Name_Id := N + $; + Name_Form : constant Name_Id := N + $; + Name_G_Float : constant Name_Id := N + $; + Name_Gcc : constant Name_Id := N + $; + Name_Gnat : constant Name_Id := N + $; + Name_GPL : constant Name_Id := N + $; + Name_IEEE_Float : constant Name_Id := N + $; + Name_Ignore : constant Name_Id := N + $; + Name_Info : constant Name_Id := N + $; + Name_Internal : constant Name_Id := N + $; + Name_Link_Name : constant Name_Id := N + $; + Name_Lowercase : constant Name_Id := N + $; + Name_Max_Entry_Queue_Depth : constant Name_Id := N + $; + Name_Max_Entry_Queue_Length : constant Name_Id := N + $; + Name_Max_Size : constant Name_Id := N + $; + Name_Mechanism : constant Name_Id := N + $; + Name_Message : constant Name_Id := N + $; + Name_Mixedcase : constant Name_Id := N + $; + Name_Modified_GPL : constant Name_Id := N + $; + Name_Name : constant Name_Id := N + $; + Name_NCA : constant Name_Id := N + $; + Name_No : constant Name_Id := N + $; + Name_No_Dependence : constant Name_Id := N + $; + Name_No_Dynamic_Attachment : constant Name_Id := N + $; + Name_No_Dynamic_Interrupts : constant Name_Id := N + $; + Name_No_Requeue : constant Name_Id := N + $; + Name_No_Requeue_Statements : constant Name_Id := N + $; + Name_No_Task_Attributes : constant Name_Id := N + $; + Name_No_Task_Attributes_Package : constant Name_Id := N + $; + Name_On : constant Name_Id := N + $; + Name_Policy : constant Name_Id := N + $; + Name_Parameter_Types : constant Name_Id := N + $; + Name_Reference : constant Name_Id := N + $; + Name_Restricted : constant Name_Id := N + $; + Name_Result_Mechanism : constant Name_Id := N + $; + Name_Result_Type : constant Name_Id := N + $; + Name_Runtime : constant Name_Id := N + $; + Name_SB : constant Name_Id := N + $; + Name_Secondary_Stack_Size : constant Name_Id := N + $; + Name_Section : constant Name_Id := N + $; + Name_Semaphore : constant Name_Id := N + $; + Name_Short_Descriptor : constant Name_Id := N + $; + Name_Simple_Barriers : constant Name_Id := N + $; + Name_Spec_File_Name : constant Name_Id := N + $; + Name_State : constant Name_Id := N + $; + Name_Static : constant Name_Id := N + $; + Name_Stack_Size : constant Name_Id := N + $; + Name_Subunit_File_Name : constant Name_Id := N + $; + Name_Task_Stack_Size_Default : constant Name_Id := N + $; + Name_Task_Type : constant Name_Id := N + $; + Name_Time_Slicing_Enabled : constant Name_Id := N + $; + Name_Top_Guard : constant Name_Id := N + $; + Name_UBA : constant Name_Id := N + $; + Name_UBS : constant Name_Id := N + $; + Name_UBSB : constant Name_Id := N + $; + Name_Unit_Name : constant Name_Id := N + $; + Name_Unknown : constant Name_Id := N + $; + Name_Unrestricted : constant Name_Id := N + $; + Name_Uppercase : constant Name_Id := N + $; + Name_User : constant Name_Id := N + $; + Name_VAX_Float : constant Name_Id := N + $; + Name_VMS : constant Name_Id := N + $; + Name_Vtable_Ptr : constant Name_Id := N + $; + Name_Working_Storage : constant Name_Id := N + $; + + -- Names of recognized attributes. The entries with the comment "Ada 83" + -- are attributes that are defined in Ada 83, but not in Ada 95. These + -- attributes are implemented in both Ada 83 and Ada 95 modes in GNAT. + + -- The entries marked GNAT are attributes that are defined by GNAT + -- and implemented in both Ada 83 and Ada 95 modes. Full descriptions + -- of these implementation dependent attributes may be found in the + -- appropriate section in package Sem_Attr in file sem-attr.ads. + + -- The entries marked VMS are recognized only in OpenVMS implementations + -- of GNAT, and are treated as illegal in all other contexts. + + First_Attribute_Name : constant Name_Id := N + $; + Name_Abort_Signal : constant Name_Id := N + $; -- GNAT + Name_Access : constant Name_Id := N + $; + Name_Address : constant Name_Id := N + $; + Name_Address_Size : constant Name_Id := N + $; -- GNAT + Name_Aft : constant Name_Id := N + $; + Name_Alignment : constant Name_Id := N + $; + Name_Asm_Input : constant Name_Id := N + $; -- GNAT + Name_Asm_Output : constant Name_Id := N + $; -- GNAT + Name_AST_Entry : constant Name_Id := N + $; -- VMS + Name_Bit : constant Name_Id := N + $; -- GNAT + Name_Bit_Order : constant Name_Id := N + $; + Name_Bit_Position : constant Name_Id := N + $; -- GNAT + Name_Body_Version : constant Name_Id := N + $; + Name_Callable : constant Name_Id := N + $; + Name_Caller : constant Name_Id := N + $; + Name_Code_Address : constant Name_Id := N + $; -- GNAT + Name_Compiler_Version : constant Name_Id := N + $; -- GNAT + Name_Component_Size : constant Name_Id := N + $; + Name_Compose : constant Name_Id := N + $; + Name_Constrained : constant Name_Id := N + $; + Name_Count : constant Name_Id := N + $; + Name_Default_Bit_Order : constant Name_Id := N + $; -- GNAT + Name_Definite : constant Name_Id := N + $; + Name_Delta : constant Name_Id := N + $; + Name_Denorm : constant Name_Id := N + $; + Name_Digits : constant Name_Id := N + $; + Name_Elaborated : constant Name_Id := N + $; -- GNAT + Name_Emax : constant Name_Id := N + $; -- Ada 83 + Name_Enabled : constant Name_Id := N + $; -- GNAT + Name_Enum_Rep : constant Name_Id := N + $; -- GNAT + Name_Enum_Val : constant Name_Id := N + $; -- GNAT + Name_Epsilon : constant Name_Id := N + $; -- Ada 83 + Name_Exponent : constant Name_Id := N + $; + Name_External_Tag : constant Name_Id := N + $; + Name_Fast_Math : constant Name_Id := N + $; -- GNAT + Name_First : constant Name_Id := N + $; + Name_First_Bit : constant Name_Id := N + $; + Name_Fixed_Value : constant Name_Id := N + $; -- GNAT + Name_Fore : constant Name_Id := N + $; + Name_Has_Access_Values : constant Name_Id := N + $; -- GNAT + Name_Has_Discriminants : constant Name_Id := N + $; -- GNAT + Name_Has_Tagged_Values : constant Name_Id := N + $; -- GNAT + Name_Identity : constant Name_Id := N + $; + Name_Img : constant Name_Id := N + $; -- GNAT + Name_Integer_Value : constant Name_Id := N + $; -- GNAT + Name_Invalid_Value : constant Name_Id := N + $; -- GNAT + Name_Large : constant Name_Id := N + $; -- Ada 83 + Name_Last : constant Name_Id := N + $; + Name_Last_Bit : constant Name_Id := N + $; + Name_Leading_Part : constant Name_Id := N + $; + Name_Length : constant Name_Id := N + $; + Name_Machine_Emax : constant Name_Id := N + $; + Name_Machine_Emin : constant Name_Id := N + $; + Name_Machine_Mantissa : constant Name_Id := N + $; + Name_Machine_Overflows : constant Name_Id := N + $; + Name_Machine_Radix : constant Name_Id := N + $; + Name_Machine_Rounding : constant Name_Id := N + $; -- Ada 05 + Name_Machine_Rounds : constant Name_Id := N + $; + Name_Machine_Size : constant Name_Id := N + $; -- GNAT + Name_Mantissa : constant Name_Id := N + $; -- Ada 83 + Name_Max_Alignment_For_Allocation : constant Name_Id := N + $; -- Ada 12 + Name_Max_Size_In_Storage_Elements : constant Name_Id := N + $; + Name_Maximum_Alignment : constant Name_Id := N + $; -- GNAT + Name_Mechanism_Code : constant Name_Id := N + $; -- GNAT + Name_Mod : constant Name_Id := N + $; -- Ada 05 + Name_Model_Emin : constant Name_Id := N + $; + Name_Model_Epsilon : constant Name_Id := N + $; + Name_Model_Mantissa : constant Name_Id := N + $; + Name_Model_Small : constant Name_Id := N + $; + Name_Modulus : constant Name_Id := N + $; + Name_Null_Parameter : constant Name_Id := N + $; -- GNAT + Name_Object_Size : constant Name_Id := N + $; -- GNAT + Name_Old : constant Name_Id := N + $; -- GNAT + Name_Partition_ID : constant Name_Id := N + $; + Name_Passed_By_Reference : constant Name_Id := N + $; -- GNAT + Name_Pool_Address : constant Name_Id := N + $; + Name_Pos : constant Name_Id := N + $; + Name_Position : constant Name_Id := N + $; + Name_Priority : constant Name_Id := N + $; -- Ada 05 + Name_Range : constant Name_Id := N + $; + Name_Range_Length : constant Name_Id := N + $; -- GNAT + Name_Ref : constant Name_Id := N + $; -- GNAT + Name_Result : constant Name_Id := N + $; -- GNAT + Name_Round : constant Name_Id := N + $; + Name_Safe_Emax : constant Name_Id := N + $; -- Ada 83 + Name_Safe_First : constant Name_Id := N + $; + Name_Safe_Large : constant Name_Id := N + $; -- Ada 83 + Name_Safe_Last : constant Name_Id := N + $; + Name_Safe_Small : constant Name_Id := N + $; -- Ada 83 + Name_Scale : constant Name_Id := N + $; + Name_Scaling : constant Name_Id := N + $; + Name_Signed_Zeros : constant Name_Id := N + $; + Name_Size : constant Name_Id := N + $; + Name_Small : constant Name_Id := N + $; + Name_Storage_Size : constant Name_Id := N + $; + Name_Storage_Unit : constant Name_Id := N + $; -- GNAT + Name_Stream_Size : constant Name_Id := N + $; -- Ada 05 + Name_Tag : constant Name_Id := N + $; + Name_Target_Name : constant Name_Id := N + $; -- GNAT + Name_Terminated : constant Name_Id := N + $; + Name_To_Address : constant Name_Id := N + $; -- GNAT + Name_Type_Class : constant Name_Id := N + $; -- GNAT + Name_Type_Key : constant Name_Id := N + $; -- GNAT + Name_UET_Address : constant Name_Id := N + $; -- GNAT + Name_Unbiased_Rounding : constant Name_Id := N + $; + Name_Unchecked_Access : constant Name_Id := N + $; + Name_Unconstrained_Array : constant Name_Id := N + $; + Name_Universal_Literal_String : constant Name_Id := N + $; -- GNAT + Name_Unrestricted_Access : constant Name_Id := N + $; -- GNAT + Name_VADS_Size : constant Name_Id := N + $; -- GNAT + Name_Val : constant Name_Id := N + $; + Name_Valid : constant Name_Id := N + $; + Name_Value_Size : constant Name_Id := N + $; -- GNAT + Name_Version : constant Name_Id := N + $; + Name_Wchar_T_Size : constant Name_Id := N + $; -- GNAT + Name_Wide_Wide_Width : constant Name_Id := N + $; -- Ada 05 + Name_Wide_Width : constant Name_Id := N + $; + Name_Width : constant Name_Id := N + $; + Name_Word_Size : constant Name_Id := N + $; -- GNAT + + -- Attributes that designate attributes returning renamable functions, + -- i.e. functions that return other than a universal value and that + -- have non-universal arguments. + + First_Renamable_Function_Attribute : constant Name_Id := N + $; + Name_Adjacent : constant Name_Id := N + $; + Name_Ceiling : constant Name_Id := N + $; + Name_Copy_Sign : constant Name_Id := N + $; + Name_Floor : constant Name_Id := N + $; + Name_Fraction : constant Name_Id := N + $; + Name_From_Any : constant Name_Id := N + $; -- GNAT + Name_Image : constant Name_Id := N + $; + Name_Input : constant Name_Id := N + $; + Name_Machine : constant Name_Id := N + $; + Name_Max : constant Name_Id := N + $; + Name_Min : constant Name_Id := N + $; + Name_Model : constant Name_Id := N + $; + Name_Pred : constant Name_Id := N + $; + Name_Remainder : constant Name_Id := N + $; + Name_Rounding : constant Name_Id := N + $; + Name_Succ : constant Name_Id := N + $; + Name_To_Any : constant Name_Id := N + $; -- GNAT + Name_Truncation : constant Name_Id := N + $; + Name_TypeCode : constant Name_Id := N + $; -- GNAT + Name_Value : constant Name_Id := N + $; + Name_Wide_Image : constant Name_Id := N + $; + Name_Wide_Wide_Image : constant Name_Id := N + $; + Name_Wide_Value : constant Name_Id := N + $; + Name_Wide_Wide_Value : constant Name_Id := N + $; + Last_Renamable_Function_Attribute : constant Name_Id := N + $; + + -- Attributes that designate procedures + + First_Procedure_Attribute : constant Name_Id := N + $; + Name_Output : constant Name_Id := N + $; + Name_Read : constant Name_Id := N + $; + Name_Write : constant Name_Id := N + $; + Last_Procedure_Attribute : constant Name_Id := N + $; + + -- Remaining attributes are ones that return entities + + First_Entity_Attribute_Name : constant Name_Id := N + $; + Name_Elab_Body : constant Name_Id := N + $; -- GNAT + Name_Elab_Spec : constant Name_Id := N + $; -- GNAT + Name_Storage_Pool : constant Name_Id := N + $; + + -- These attributes are the ones that return types + + First_Type_Attribute_Name : constant Name_Id := N + $; + Name_Base : constant Name_Id := N + $; + Name_Class : constant Name_Id := N + $; + Name_Stub_Type : constant Name_Id := N + $; + Last_Type_Attribute_Name : constant Name_Id := N + $; + Last_Entity_Attribute_Name : constant Name_Id := N + $; + Last_Attribute_Name : constant Name_Id := N + $; + + -- Names of recognized locking policy identifiers + + -- Note: policies are identified by the first character of the + -- name (e.g. C for Ceiling_Locking). If new policy names are added, + -- the first character must be distinct. + + First_Locking_Policy_Name : constant Name_Id := N + $; + Name_Ceiling_Locking : constant Name_Id := N + $; + Name_Inheritance_Locking : constant Name_Id := N + $; + Last_Locking_Policy_Name : constant Name_Id := N + $; + + -- Names of recognized queuing policy identifiers + + -- Note: policies are identified by the first character of the + -- name (e.g. F for FIFO_Queuing). If new policy names are added, + -- the first character must be distinct. + + First_Queuing_Policy_Name : constant Name_Id := N + $; + Name_FIFO_Queuing : constant Name_Id := N + $; + Name_Priority_Queuing : constant Name_Id := N + $; + Last_Queuing_Policy_Name : constant Name_Id := N + $; + + -- Names of recognized task dispatching policy identifiers + + -- Note: policies are identified by the first character of the + -- name (e.g. F for FIFO_Within_Priorities). If new policy names + -- are added, the first character must be distinct. + + First_Task_Dispatching_Policy_Name : constant Name_Id := N + $; + Name_EDF_Across_Priorities : constant Name_Id := N + $; + Name_FIFO_Within_Priorities : constant Name_Id := N + $; + Name_Non_Preemptive_Within_Priorities : constant Name_Id := N + $; + Name_Round_Robin_Within_Priorities : constant Name_Id := N + $; + Last_Task_Dispatching_Policy_Name : constant Name_Id := N + $; + + -- Names of recognized checks for pragma Suppress + + First_Check_Name : constant Name_Id := N + $; + Name_Access_Check : constant Name_Id := N + $; + Name_Accessibility_Check : constant Name_Id := N + $; + Name_Alignment_Check : constant Name_Id := N + $; -- GNAT + Name_Discriminant_Check : constant Name_Id := N + $; + Name_Division_Check : constant Name_Id := N + $; + Name_Elaboration_Check : constant Name_Id := N + $; + Name_Index_Check : constant Name_Id := N + $; + Name_Length_Check : constant Name_Id := N + $; + Name_Overflow_Check : constant Name_Id := N + $; + Name_Range_Check : constant Name_Id := N + $; + Name_Storage_Check : constant Name_Id := N + $; + Name_Tag_Check : constant Name_Id := N + $; + Name_Validity_Check : constant Name_Id := N + $; -- GNAT + Name_All_Checks : constant Name_Id := N + $; + Last_Check_Name : constant Name_Id := N + $; + + -- Names corresponding to reserved keywords, excluding those already + -- declared in the attribute list (Access, Delta, Digits, Mod, Range). + + -- Note: Name_Some is here even though for now we do not treat it as being + -- reserved. We treat it instead as an unreserved keyword. This may change + -- in the future, but in any case it belongs in the following list. + + Name_Abort : constant Name_Id := N + $; + Name_Abs : constant Name_Id := N + $; + Name_Accept : constant Name_Id := N + $; + Name_And : constant Name_Id := N + $; + Name_All : constant Name_Id := N + $; + Name_Array : constant Name_Id := N + $; + Name_At : constant Name_Id := N + $; + Name_Begin : constant Name_Id := N + $; + Name_Body : constant Name_Id := N + $; + Name_Case : constant Name_Id := N + $; + Name_Constant : constant Name_Id := N + $; + Name_Declare : constant Name_Id := N + $; + Name_Delay : constant Name_Id := N + $; + Name_Do : constant Name_Id := N + $; + Name_Else : constant Name_Id := N + $; + Name_Elsif : constant Name_Id := N + $; + Name_End : constant Name_Id := N + $; + Name_Entry : constant Name_Id := N + $; + Name_Exception : constant Name_Id := N + $; + Name_Exit : constant Name_Id := N + $; + Name_For : constant Name_Id := N + $; + Name_Function : constant Name_Id := N + $; + Name_Generic : constant Name_Id := N + $; + Name_Goto : constant Name_Id := N + $; + Name_If : constant Name_Id := N + $; + Name_In : constant Name_Id := N + $; + Name_Is : constant Name_Id := N + $; + Name_Limited : constant Name_Id := N + $; + Name_Loop : constant Name_Id := N + $; + Name_New : constant Name_Id := N + $; + Name_Not : constant Name_Id := N + $; + Name_Null : constant Name_Id := N + $; + Name_Of : constant Name_Id := N + $; + Name_Or : constant Name_Id := N + $; + Name_Others : constant Name_Id := N + $; + Name_Out : constant Name_Id := N + $; + Name_Package : constant Name_Id := N + $; + Name_Pragma : constant Name_Id := N + $; + Name_Private : constant Name_Id := N + $; + Name_Procedure : constant Name_Id := N + $; + Name_Raise : constant Name_Id := N + $; + Name_Record : constant Name_Id := N + $; + Name_Rem : constant Name_Id := N + $; + Name_Renames : constant Name_Id := N + $; + Name_Return : constant Name_Id := N + $; + Name_Reverse : constant Name_Id := N + $; + Name_Select : constant Name_Id := N + $; + Name_Separate : constant Name_Id := N + $; + Name_Some : constant Name_Id := N + $; + Name_Subtype : constant Name_Id := N + $; + Name_Task : constant Name_Id := N + $; + Name_Terminate : constant Name_Id := N + $; + Name_Then : constant Name_Id := N + $; + Name_Type : constant Name_Id := N + $; + Name_Use : constant Name_Id := N + $; + Name_When : constant Name_Id := N + $; + Name_While : constant Name_Id := N + $; + Name_With : constant Name_Id := N + $; + Name_Xor : constant Name_Id := N + $; + + -- Names of intrinsic subprograms + + -- Note: Asm is missing from this list, since Asm is a legitimate + -- convention name. So is To_Address, which is a GNAT attribute. + + First_Intrinsic_Name : constant Name_Id := N + $; + Name_Divide : constant Name_Id := N + $; + Name_Enclosing_Entity : constant Name_Id := N + $; + Name_Exception_Information : constant Name_Id := N + $; + Name_Exception_Message : constant Name_Id := N + $; + Name_Exception_Name : constant Name_Id := N + $; + Name_File : constant Name_Id := N + $; + Name_Generic_Dispatching_Constructor : constant Name_Id := N + $; + Name_Import_Address : constant Name_Id := N + $; + Name_Import_Largest_Value : constant Name_Id := N + $; + Name_Import_Value : constant Name_Id := N + $; + Name_Is_Negative : constant Name_Id := N + $; + Name_Line : constant Name_Id := N + $; + Name_Rotate_Left : constant Name_Id := N + $; + Name_Rotate_Right : constant Name_Id := N + $; + Name_Shift_Left : constant Name_Id := N + $; + Name_Shift_Right : constant Name_Id := N + $; + Name_Shift_Right_Arithmetic : constant Name_Id := N + $; + Name_Source_Location : constant Name_Id := N + $; + Name_Unchecked_Conversion : constant Name_Id := N + $; + Name_Unchecked_Deallocation : constant Name_Id := N + $; + Name_To_Pointer : constant Name_Id := N + $; + Last_Intrinsic_Name : constant Name_Id := N + $; + + -- Names used in processing intrinsic calls + + Name_Free : constant Name_Id := N + $; + + -- Reserved words used only in Ada 95 + + First_95_Reserved_Word : constant Name_Id := N + $; + Name_Abstract : constant Name_Id := N + $; + Name_Aliased : constant Name_Id := N + $; + Name_Protected : constant Name_Id := N + $; + Name_Until : constant Name_Id := N + $; + Name_Requeue : constant Name_Id := N + $; + Name_Tagged : constant Name_Id := N + $; + Last_95_Reserved_Word : constant Name_Id := N + $; + + subtype Ada_95_Reserved_Words is + Name_Id range First_95_Reserved_Word .. Last_95_Reserved_Word; + + -- Miscellaneous names used in semantic checking + + Name_Raise_Exception : constant Name_Id := N + $; + + -- Additional reserved words and identifiers used in GNAT Project Files + -- Note that Name_External is already previously declared + -- The names with the -- GPR annotation are only used in gprbuild + + Name_Aggregate : constant Name_Id := N + $; + Name_Archive_Builder : constant Name_Id := N + $; + Name_Archive_Builder_Append_Option : constant Name_Id := N + $; + Name_Archive_Indexer : constant Name_Id := N + $; + Name_Archive_Suffix : constant Name_Id := N + $; + Name_Binder : constant Name_Id := N + $; + Name_Body_Suffix : constant Name_Id := N + $; + Name_Builder : constant Name_Id := N + $; + Name_Compiler : constant Name_Id := N + $; + Name_Compiler_Command : constant Name_Id := N + $; -- GPR + Name_Config_Body_File_Name : constant Name_Id := N + $; + Name_Config_Body_File_Name_Index : constant Name_Id := N + $; + Name_Config_Body_File_Name_Pattern : constant Name_Id := N + $; + Name_Config_File_Switches : constant Name_Id := N + $; + Name_Config_File_Unique : constant Name_Id := N + $; + Name_Config_Spec_File_Name : constant Name_Id := N + $; + Name_Config_Spec_File_Name_Index : constant Name_Id := N + $; + Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + $; + Name_Configuration : constant Name_Id := N + $; + Name_Cross_Reference : constant Name_Id := N + $; + Name_Default_Language : constant Name_Id := N + $; + Name_Default_Switches : constant Name_Id := N + $; + Name_Dependency_Driver : constant Name_Id := N + $; + Name_Dependency_Switches : constant Name_Id := N + $; + Name_Driver : constant Name_Id := N + $; + Name_Excluded_Source_Dirs : constant Name_Id := N + $; + Name_Excluded_Source_Files : constant Name_Id := N + $; + Name_Excluded_Source_List_File : constant Name_Id := N + $; + Name_Exec_Dir : constant Name_Id := N + $; + Name_Executable : constant Name_Id := N + $; + Name_Executable_Suffix : constant Name_Id := N + $; + Name_Extends : constant Name_Id := N + $; + Name_External_As_List : constant Name_Id := N + $; + Name_Externally_Built : constant Name_Id := N + $; + Name_Finder : constant Name_Id := N + $; + Name_Global_Compilation_Switches : constant Name_Id := N + $; + Name_Global_Configuration_Pragmas : constant Name_Id := N + $; + Name_Global_Config_File : constant Name_Id := N + $; -- GPR + Name_Gnatls : constant Name_Id := N + $; + Name_Gnatstub : constant Name_Id := N + $; + Name_Gnu : constant Name_Id := N + $; + Name_Ide : constant Name_Id := N + $; + Name_Ignore_Source_Sub_Dirs : constant Name_Id := N + $; + Name_Implementation : constant Name_Id := N + $; + Name_Implementation_Exceptions : constant Name_Id := N + $; + Name_Implementation_Suffix : constant Name_Id := N + $; + Name_Include_Switches : constant Name_Id := N + $; + Name_Include_Path : constant Name_Id := N + $; + Name_Include_Path_File : constant Name_Id := N + $; + Name_Inherit_Source_Path : constant Name_Id := N + $; + Name_Languages : constant Name_Id := N + $; + Name_Leading_Library_Options : constant Name_Id := N + $; + Name_Leading_Required_Switches : constant Name_Id := N + $; + Name_Leading_Switches : constant Name_Id := N + $; + Name_Library : constant Name_Id := N + $; + Name_Library_Ali_Dir : constant Name_Id := N + $; + Name_Library_Auto_Init : constant Name_Id := N + $; + Name_Library_Auto_Init_Supported : constant Name_Id := N + $; + Name_Library_Builder : constant Name_Id := N + $; + Name_Library_Dir : constant Name_Id := N + $; + Name_Library_GCC : constant Name_Id := N + $; + Name_Library_Install_Name_Option : constant Name_Id := N + $; + Name_Library_Interface : constant Name_Id := N + $; + Name_Library_Kind : constant Name_Id := N + $; + Name_Library_Name : constant Name_Id := N + $; + Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + $; + Name_Library_Options : constant Name_Id := N + $; + Name_Library_Partial_Linker : constant Name_Id := N + $; + Name_Library_Reference_Symbol_File : constant Name_Id := N + $; + Name_Library_Src_Dir : constant Name_Id := N + $; + Name_Library_Support : constant Name_Id := N + $; + Name_Library_Symbol_File : constant Name_Id := N + $; + Name_Library_Symbol_Policy : constant Name_Id := N + $; + Name_Library_Version : constant Name_Id := N + $; + Name_Library_Version_Switches : constant Name_Id := N + $; + Name_Linker : constant Name_Id := N + $; + Name_Linker_Executable_Option : constant Name_Id := N + $; + Name_Linker_Lib_Dir_Option : constant Name_Id := N + $; + Name_Linker_Lib_Name_Option : constant Name_Id := N + $; + Name_Local_Config_File : constant Name_Id := N + $; -- GPR + Name_Local_Configuration_Pragmas : constant Name_Id := N + $; + Name_Locally_Removed_Files : constant Name_Id := N + $; + Name_Map_File_Option : constant Name_Id := N + $; + Name_Mapping_File_Switches : constant Name_Id := N + $; + Name_Mapping_Spec_Suffix : constant Name_Id := N + $; + Name_Mapping_Body_Suffix : constant Name_Id := N + $; + Name_Max_Command_Line_Length : constant Name_Id := N + $; + Name_Metrics : constant Name_Id := N + $; + Name_Multi_Unit_Object_Separator : constant Name_Id := N + $; + Name_Multi_Unit_Switches : constant Name_Id := N + $; + Name_Naming : constant Name_Id := N + $; + Name_None : constant Name_Id := N + $; + Name_Object_File_Suffix : constant Name_Id := N + $; + Name_Object_File_Switches : constant Name_Id := N + $; + Name_Object_Generated : constant Name_Id := N + $; + Name_Object_List : constant Name_Id := N + $; + Name_Objects_Linked : constant Name_Id := N + $; + Name_Objects_Path : constant Name_Id := N + $; + Name_Objects_Path_File : constant Name_Id := N + $; + Name_Object_Dir : constant Name_Id := N + $; + Name_Option_List : constant Name_Id := N + $; + Name_Path_Syntax : constant Name_Id := N + $; + Name_Pic_Option : constant Name_Id := N + $; + Name_Pretty_Printer : constant Name_Id := N + $; + Name_Prefix : constant Name_Id := N + $; + Name_Project : constant Name_Id := N + $; + Name_Project_Dir : constant Name_Id := N + $; + Name_Project_Files : constant Name_Id := N + $; + Name_Project_Path : constant Name_Id := N + $; + Name_Response_File_Format : constant Name_Id := N + $; + Name_Response_File_Switches : constant Name_Id := N + $; + Name_Roots : constant Name_Id := N + $; -- GPR + Name_Required_Switches : constant Name_Id := N + $; + Name_Run_Path_Option : constant Name_Id := N + $; + Name_Run_Path_Origin : constant Name_Id := N + $; + Name_Separate_Run_Path_Options : constant Name_Id := N + $; + Name_Shared_Library_Minimum_Switches : constant Name_Id := N + $; + Name_Shared_Library_Prefix : constant Name_Id := N + $; + Name_Shared_Library_Suffix : constant Name_Id := N + $; + Name_Separate_Suffix : constant Name_Id := N + $; + Name_Source_Dirs : constant Name_Id := N + $; + Name_Source_Files : constant Name_Id := N + $; + Name_Source_List_File : constant Name_Id := N + $; + Name_Spec : constant Name_Id := N + $; + Name_Spec_Suffix : constant Name_Id := N + $; + Name_Specification : constant Name_Id := N + $; + Name_Specification_Exceptions : constant Name_Id := N + $; + Name_Specification_Suffix : constant Name_Id := N + $; + Name_Stack : constant Name_Id := N + $; + Name_Switches : constant Name_Id := N + $; + Name_Symbolic_Link_Supported : constant Name_Id := N + $; + Name_Synchronize : constant Name_Id := N + $; + Name_Toolchain_Description : constant Name_Id := N + $; + Name_Toolchain_Version : constant Name_Id := N + $; + Name_Trailing_Required_Switches : constant Name_Id := N + $; + Name_Runtime_Library_Dir : constant Name_Id := N + $; + Name_Runtime_Source_Dir : constant Name_Id := N + $; + + -- Other miscellaneous names used in front end + + Name_Unaligned_Valid : constant Name_Id := N + $; + + -- Names used to implement iterators over predefined containers + + Name_Cursor : constant Name_Id := N + $; + Name_Element : constant Name_Id := N + $; + Name_Element_Type : constant Name_Id := N + $; + Name_No_Element : constant Name_Id := N + $; + Name_Previous : constant Name_Id := N + $; + + -- Ada 05 reserved words + + First_2005_Reserved_Word : constant Name_Id := N + $; + Name_Interface : constant Name_Id := N + $; + Name_Overriding : constant Name_Id := N + $; + Name_Synchronized : constant Name_Id := N + $; + Last_2005_Reserved_Word : constant Name_Id := N + $; + + subtype Ada_2005_Reserved_Words is + Name_Id range First_2005_Reserved_Word .. Last_2005_Reserved_Word; + + -- Mark last defined name for consistency check in Snames body + + Last_Predefined_Name : constant Name_Id := N + $; + + --------------------------------------- + -- Subtypes Defining Name Categories -- + --------------------------------------- + + subtype Any_Operator_Name is Name_Id range + First_Operator_Name .. Last_Operator_Name; + + subtype Configuration_Pragma_Names is Name_Id range + First_Pragma_Name .. Last_Configuration_Pragma_Name; + + ------------------------------ + -- Attribute ID Definitions -- + ------------------------------ + + type Attribute_Id is ( + Attribute_Abort_Signal, + Attribute_Access, + Attribute_Address, + Attribute_Address_Size, + Attribute_Aft, + Attribute_Alignment, + Attribute_Asm_Input, + Attribute_Asm_Output, + Attribute_AST_Entry, + Attribute_Bit, + Attribute_Bit_Order, + Attribute_Bit_Position, + Attribute_Body_Version, + Attribute_Callable, + Attribute_Caller, + Attribute_Code_Address, + Attribute_Compiler_Version, + Attribute_Component_Size, + Attribute_Compose, + Attribute_Constrained, + Attribute_Count, + Attribute_Default_Bit_Order, + Attribute_Definite, + Attribute_Delta, + Attribute_Denorm, + Attribute_Digits, + Attribute_Elaborated, + Attribute_Emax, + Attribute_Enabled, + Attribute_Enum_Rep, + Attribute_Enum_Val, + Attribute_Epsilon, + Attribute_Exponent, + Attribute_External_Tag, + Attribute_Fast_Math, + Attribute_First, + Attribute_First_Bit, + Attribute_Fixed_Value, + Attribute_Fore, + Attribute_Has_Access_Values, + Attribute_Has_Discriminants, + Attribute_Has_Tagged_Values, + Attribute_Identity, + Attribute_Img, + Attribute_Integer_Value, + Attribute_Invalid_Value, + Attribute_Large, + Attribute_Last, + Attribute_Last_Bit, + Attribute_Leading_Part, + Attribute_Length, + Attribute_Machine_Emax, + Attribute_Machine_Emin, + Attribute_Machine_Mantissa, + Attribute_Machine_Overflows, + Attribute_Machine_Radix, + Attribute_Machine_Rounding, + Attribute_Machine_Rounds, + Attribute_Machine_Size, + Attribute_Mantissa, + Attribute_Max_Alignment_For_Allocation, + Attribute_Max_Size_In_Storage_Elements, + Attribute_Maximum_Alignment, + Attribute_Mechanism_Code, + Attribute_Mod, + Attribute_Model_Emin, + Attribute_Model_Epsilon, + Attribute_Model_Mantissa, + Attribute_Model_Small, + Attribute_Modulus, + Attribute_Null_Parameter, + Attribute_Object_Size, + Attribute_Old, + Attribute_Partition_ID, + Attribute_Passed_By_Reference, + Attribute_Pool_Address, + Attribute_Pos, + Attribute_Position, + Attribute_Priority, + Attribute_Range, + Attribute_Range_Length, + Attribute_Ref, + Attribute_Result, + Attribute_Round, + Attribute_Safe_Emax, + Attribute_Safe_First, + Attribute_Safe_Large, + Attribute_Safe_Last, + Attribute_Safe_Small, + Attribute_Scale, + Attribute_Scaling, + Attribute_Signed_Zeros, + Attribute_Size, + Attribute_Small, + Attribute_Storage_Size, + Attribute_Storage_Unit, + Attribute_Stream_Size, + Attribute_Tag, + Attribute_Target_Name, + Attribute_Terminated, + Attribute_To_Address, + Attribute_Type_Class, + Attribute_Type_Key, + Attribute_UET_Address, + Attribute_Unbiased_Rounding, + Attribute_Unchecked_Access, + Attribute_Unconstrained_Array, + Attribute_Universal_Literal_String, + Attribute_Unrestricted_Access, + Attribute_VADS_Size, + Attribute_Val, + Attribute_Valid, + Attribute_Value_Size, + Attribute_Version, + Attribute_Wchar_T_Size, + Attribute_Wide_Wide_Width, + Attribute_Wide_Width, + Attribute_Width, + Attribute_Word_Size, + + -- Attributes designating renamable functions + + Attribute_Adjacent, + Attribute_Ceiling, + Attribute_Copy_Sign, + Attribute_Floor, + Attribute_Fraction, + Attribute_From_Any, + Attribute_Image, + Attribute_Input, + Attribute_Machine, + Attribute_Max, + Attribute_Min, + Attribute_Model, + Attribute_Pred, + Attribute_Remainder, + Attribute_Rounding, + Attribute_Succ, + Attribute_To_Any, + Attribute_Truncation, + Attribute_TypeCode, + Attribute_Value, + Attribute_Wide_Image, + Attribute_Wide_Wide_Image, + Attribute_Wide_Value, + Attribute_Wide_Wide_Value, + + -- Attributes designating procedures + + Attribute_Output, + Attribute_Read, + Attribute_Write, + + -- Entity attributes (includes type attributes) + + Attribute_Elab_Body, + Attribute_Elab_Spec, + Attribute_Storage_Pool, + + -- Type attributes + + Attribute_Base, + Attribute_Class, + Attribute_Stub_Type); + + type Attribute_Class_Array is array (Attribute_Id) of Boolean; + -- Type used to build attribute classification flag arrays + + ------------------------------------ + -- Convention Name ID Definitions -- + ------------------------------------ + + type Convention_Id is ( + + -- The native-to-Ada (non-foreign) conventions come first. These include + -- the ones defined in the RM, plus Stubbed. + + Convention_Ada, + Convention_Intrinsic, + Convention_Entry, + Convention_Protected, + Convention_Stubbed, + + -- The remaining conventions are foreign language conventions + + Convention_Assembler, -- also Asm, Assembly + Convention_C, -- also Default, External + Convention_CIL, + Convention_COBOL, + Convention_CPP, + Convention_Fortran, + Convention_Java, + Convention_Stdcall); -- also DLL, Win32 + + -- Note: Convention C_Pass_By_Copy is allowed only for record + -- types (where it is treated like C except that the appropriate + -- flag is set in the record type). Recognizing this convention + -- is specially handled in Sem_Prag. + + for Convention_Id'Size use 8; + -- Plenty of space for expansion + + subtype Foreign_Convention is + Convention_Id range Convention_Assembler .. Convention_Id'Last; + + ----------------------------------- + -- Locking Policy ID Definitions -- + ----------------------------------- + + type Locking_Policy_Id is ( + Locking_Policy_Inheritance_Locking, + Locking_Policy_Ceiling_Locking); + + --------------------------- + -- Pragma ID Definitions -- + --------------------------- + + type Pragma_Id is ( + + -- Configuration pragmas + + -- Note: This list is in the GNAT users guide, so be sure that if any + -- additions or deletions are made to the following list, they are + -- properly reflected in the users guide. + + Pragma_Ada_83, + Pragma_Ada_95, + Pragma_Ada_05, + Pragma_Ada_2005, + Pragma_Ada_12, + Pragma_Ada_2012, + Pragma_Assertion_Policy, + Pragma_Assume_No_Invalid_Values, + Pragma_C_Pass_By_Copy, + Pragma_Check_Name, + Pragma_Check_Policy, + Pragma_Compile_Time_Error, + Pragma_Compile_Time_Warning, + Pragma_Compiler_Unit, + Pragma_Component_Alignment, + Pragma_Convention_Identifier, + Pragma_Debug_Policy, + Pragma_Detect_Blocking, + Pragma_Default_Storage_Pool, + Pragma_Discard_Names, + Pragma_Elaboration_Checks, + Pragma_Eliminate, + Pragma_Extend_System, + Pragma_Extensions_Allowed, + Pragma_External_Name_Casing, + Pragma_Favor_Top_Level, + Pragma_Float_Representation, + Pragma_Implicit_Packing, + Pragma_Initialize_Scalars, + Pragma_Interrupt_State, + Pragma_License, + Pragma_Locking_Policy, + Pragma_Long_Float, + Pragma_No_Run_Time, + Pragma_No_Strict_Aliasing, + Pragma_Normalize_Scalars, + Pragma_Optimize_Alignment, + Pragma_Persistent_BSS, + Pragma_Polling, + Pragma_Priority_Specific_Dispatching, + Pragma_Profile, + Pragma_Profile_Warnings, + Pragma_Propagate_Exceptions, + Pragma_Queuing_Policy, + Pragma_Ravenscar, + Pragma_Restricted_Run_Time, + Pragma_Restrictions, + Pragma_Restriction_Warnings, + Pragma_Reviewable, + Pragma_Short_Circuit_And_Or, + Pragma_Short_Descriptors, + Pragma_Source_File_Name, + Pragma_Source_File_Name_Project, + Pragma_Style_Checks, + Pragma_Suppress, + Pragma_Suppress_Exception_Locations, + Pragma_Task_Dispatching_Policy, + Pragma_Universal_Data, + Pragma_Unsuppress, + Pragma_Use_VADS_Size, + Pragma_Validity_Checks, + Pragma_Warnings, + Pragma_Wide_Character_Encoding, + + -- Remaining (non-configuration) pragmas + + Pragma_Abort_Defer, + Pragma_All_Calls_Remote, + Pragma_Annotate, + Pragma_Assert, + Pragma_Asynchronous, + Pragma_Atomic, + Pragma_Atomic_Components, + Pragma_Attach_Handler, + Pragma_Check, + Pragma_CIL_Constructor, + Pragma_Comment, + Pragma_Common_Object, + Pragma_Complete_Representation, + Pragma_Complex_Representation, + Pragma_Controlled, + Pragma_Convention, + Pragma_CPP_Class, + Pragma_CPP_Constructor, + Pragma_CPP_Virtual, + Pragma_CPP_Vtable, + Pragma_CPU, + Pragma_Debug, + Pragma_Dimension, + Pragma_Elaborate, + Pragma_Elaborate_All, + Pragma_Elaborate_Body, + Pragma_Export, + Pragma_Export_Exception, + Pragma_Export_Function, + Pragma_Export_Object, + Pragma_Export_Procedure, + Pragma_Export_Value, + Pragma_Export_Valued_Procedure, + Pragma_External, + Pragma_Finalize_Storage_Only, + Pragma_Ident, + Pragma_Implemented, + Pragma_Import, + Pragma_Import_Exception, + Pragma_Import_Function, + Pragma_Import_Object, + Pragma_Import_Procedure, + Pragma_Import_Valued_Procedure, + Pragma_Independent, + Pragma_Independent_Components, + Pragma_Inline, + Pragma_Inline_Always, + Pragma_Inline_Generic, + Pragma_Inspection_Point, + Pragma_Interface_Name, + Pragma_Interrupt_Handler, + Pragma_Interrupt_Priority, + Pragma_Invariant, + Pragma_Java_Constructor, + Pragma_Java_Interface, + Pragma_Keep_Names, + Pragma_Link_With, + Pragma_Linker_Alias, + Pragma_Linker_Constructor, + Pragma_Linker_Destructor, + Pragma_Linker_Options, + Pragma_Linker_Section, + Pragma_List, + Pragma_Machine_Attribute, + Pragma_Main, + Pragma_Main_Storage, + Pragma_Memory_Size, + Pragma_No_Body, + Pragma_No_Return, + Pragma_Obsolescent, + Pragma_Optimize, + Pragma_Ordered, + Pragma_Pack, + Pragma_Page, + Pragma_Passive, + Pragma_Postcondition, + Pragma_Precondition, + Pragma_Predicate, + Pragma_Preelaborable_Initialization, + Pragma_Preelaborate, + Pragma_Preelaborate_05, + Pragma_Psect_Object, + Pragma_Pure, + Pragma_Pure_05, + Pragma_Pure_Function, + Pragma_Relative_Deadline, + Pragma_Remote_Call_Interface, + Pragma_Remote_Types, + Pragma_Share_Generic, + Pragma_Shared, + Pragma_Shared_Passive, + Pragma_Source_Reference, + Pragma_Static_Elaboration_Desired, + Pragma_Stream_Convert, + Pragma_Subtitle, + Pragma_Suppress_All, + Pragma_Suppress_Debug_Info, + Pragma_Suppress_Initialization, + Pragma_System_Name, + Pragma_Task_Info, + Pragma_Task_Name, + Pragma_Task_Storage, + Pragma_Thread_Local_Storage, + Pragma_Time_Slice, + Pragma_Title, + Pragma_Unchecked_Union, + Pragma_Unimplemented_Unit, + Pragma_Universal_Aliasing, + Pragma_Unmodified, + Pragma_Unreferenced, + Pragma_Unreferenced_Objects, + Pragma_Unreserve_All_Interrupts, + Pragma_Volatile, + Pragma_Volatile_Components, + Pragma_Weak_External, + + -- The following pragmas are on their own, out of order, because of the + -- special processing required to deal with the fact that their names + -- match existing attribute names. + + Pragma_AST_Entry, + Pragma_Fast_Math, + Pragma_Interface, + Pragma_Priority, + Pragma_Storage_Size, + Pragma_Storage_Unit, + + -- The value to represent an unknown or unrecognized pragma + + Unknown_Pragma); + + ----------------------------------- + -- Queuing Policy ID definitions -- + ----------------------------------- + + type Queuing_Policy_Id is ( + Queuing_Policy_FIFO_Queuing, + Queuing_Policy_Priority_Queuing); + + -------------------------------------------- + -- Task Dispatching Policy ID definitions -- + -------------------------------------------- + + type Task_Dispatching_Policy_Id is ( + Task_Dispatching_FIFO_Within_Priorities); + -- Id values used to identify task dispatching policies + + ----------------- + -- Subprograms -- + ----------------- + + procedure Initialize; + -- Called to initialize the preset names in the names table + + function Is_Attribute_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized attribute + + function Is_Entity_Attribute_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized entity attribute, + -- i.e. an attribute reference that returns an entity. + + function Is_Procedure_Attribute_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized attribute that + -- designates a procedure (and can therefore appear as a statement). + + function Is_Function_Attribute_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized attribute + -- that designates a renameable function, and can therefore appear in + -- a renaming statement. Note that not all attributes designating + -- functions are renamable, in particular, those returning a universal + -- value cannot be renamed. + + function Is_Type_Attribute_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized type attribute, + -- i.e. an attribute reference that returns a type + + function Is_Convention_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of one of the recognized + -- language conventions, as required by pragma Convention, Import, + -- Export, Interface. Returns True if so. Also returns True for a + -- name that has been specified by a Convention_Identifier pragma. + -- If neither case holds, returns False. + + function Is_Keyword_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is one of the (reserved) keyword names. This + -- includes all the keywords defined in the Ada standard (taking into + -- effect the Ada version). It also includes additional keywords in + -- contexts where additional keywords have been added. For example, in the + -- context of parsing project files, keywords such as PROJECT are included. + + function Is_Locking_Policy_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized locking policy + + function Is_Operator_Symbol_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of an operator symbol + + function Is_Pragma_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized pragma. Note that + -- pragmas AST_Entry, Fast_Math, Priority, Storage_Size, and Storage_Unit + -- are recognized as pragmas by this function even though their names are + -- separate from the other pragma names. For this reason, clients should + -- always use this function, rather than do range tests on Name_Id values. + + function Is_Configuration_Pragma_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized configuration + -- pragma. Note that pragma Fast_Math is recognized as a configuration + -- pragma by this function even though its name is separate from other + -- configuration pragma names. For this reason, clients should always + -- use this function, rather than do range tests on Name_Id values. + + function Is_Queuing_Policy_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized queuing policy + + function Is_Task_Dispatching_Policy_Name (N : Name_Id) return Boolean; + -- Test to see if the name N is the name of a recognized task + -- dispatching policy. + + function Get_Attribute_Id (N : Name_Id) return Attribute_Id; + -- Returns Id of attribute corresponding to given name. It is an error to + -- call this function with a name that is not the name of a attribute. + + function Get_Convention_Id (N : Name_Id) return Convention_Id; + -- Returns Id of language convention corresponding to given name. It is + -- an error to call this function with a name that is not the name of a + -- convention, or one that has been previously recorded using a call to + -- Record_Convention_Identifier. + + function Get_Convention_Name (C : Convention_Id) return Name_Id; + -- Returns the name of language convention corresponding to given + -- convention id. + + function Get_Locking_Policy_Id (N : Name_Id) return Locking_Policy_Id; + -- Returns Id of locking policy corresponding to given name. It is an error + -- to call this function with a name that is not the name of a check. + + function Get_Pragma_Id (N : Name_Id) return Pragma_Id; + -- Returns Id of pragma corresponding to given name. Returns Unknown_Pragma + -- if N is not a name of a known (Ada defined or GNAT-specific) pragma. + -- Note that the function also works correctly for names of pragmas that + -- are not included in the main list of pragma Names (AST_Entry, Priority, + -- Storage_Size, and Storage_Unit (e.g. Name_Storage_Size returns + -- Pragma_Storage_Size). + + function Get_Queuing_Policy_Id (N : Name_Id) return Queuing_Policy_Id; + -- Returns Id of queuing policy corresponding to given name. It is an error + -- to call this function with a name that is not the name of a check. + + function Get_Task_Dispatching_Policy_Id + (N : Name_Id) return Task_Dispatching_Policy_Id; + -- Returns Id of task dispatching policy corresponding to given name. It + -- is an error to call this function with a name that is not the name of + -- a defined check. + + procedure Record_Convention_Identifier + (Id : Name_Id; + Convention : Convention_Id); + -- A call to this procedure, resulting from an occurrence of a pragma + -- Convention_Identifier, records that from now on an occurrence of Id + -- will be recognized as a name for the specified convention. + +private + pragma Inline (Is_Attribute_Name); + pragma Inline (Is_Entity_Attribute_Name); + pragma Inline (Is_Type_Attribute_Name); + pragma Inline (Is_Locking_Policy_Name); + pragma Inline (Is_Operator_Symbol_Name); + pragma Inline (Is_Queuing_Policy_Name); + pragma Inline (Is_Pragma_Name); + pragma Inline (Is_Task_Dispatching_Policy_Name); + +end Snames; -- cgit v1.2.3