OSDN Git Service

2005-03-08 Javier Miranda <miranda@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / snames.adb
index 2e2aeb5..c80da27 100644 (file)
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                               S N A M E S                                --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---          Copyright (C) 1992-2004, 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 2,  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 COPYING.  If not, write --
--- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
--- MA 02111-1307, USA.                                                      --
---                                                                          --
--- As a special exception,  if other files  instantiate  generics from this --
--- unit, or you link  this unit with other files  to produce an executable, --
--- this  unit  does not  by itself cause  the resulting  executable  to  be --
--- covered  by the  GNU  General  Public  License.  This exception does not --
--- however invalidate  any other reasons why  the executable file  might be --
--- covered by the  GNU Public License.                                      --
---                                                                          --
--- 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;
-with Table;
-
-package body Snames is
-
-   --  Table used to record convention identifiers
-
-   type Convention_Id_Entry is record
-      Name       : Name_Id;
-      Convention : Convention_Id;
-   end record;
-
-   package Convention_Identifiers is new Table.Table (
-     Table_Component_Type => Convention_Id_Entry,
-     Table_Index_Type     => Int,
-     Table_Low_Bound      => 1,
-     Table_Initial        => 50,
-     Table_Increment      => 200,
-     Table_Name           => "Name_Convention_Identifiers");
-
-   --  Table of names to be set by Initialize. Each name is terminated by a
-   --  single #, and the end of the list is marked by a null entry, i.e. by
-   --  two # marks in succession. Note that the table does not include the
-   --  entries for a-z, since these are initialized by Namet itself.
-
-   Preset_Names : constant String :=
-     "_parent#" &
-     "_tag#" &
-     "off#" &
-     "space#" &
-     "time#" &
-     "_abort_signal#" &
-     "_alignment#" &
-     "_assign#" &
-     "_chain#" &
-     "_clean#" &
-     "_controller#" &
-     "_entry_bodies#" &
-     "_expunge#" &
-     "_final_list#" &
-     "_idepth#" &
-     "_init#" &
-     "_local_final_list#" &
-     "_master#" &
-     "_object#" &
-     "_priority#" &
-     "_process_atsd#" &
-     "_secondary_stack#" &
-     "_service#" &
-     "_size#" &
-     "_tags#" &
-     "_task#" &
-     "_task_id#" &
-     "_task_info#" &
-     "_task_name#" &
-     "_trace_sp#" &
-     "initialize#" &
-     "adjust#" &
-     "finalize#" &
-     "next#" &
-     "prev#" &
-     "_typecode#" &
-     "_from_any#" &
-     "_to_any#" &
-     "allocate#" &
-     "deallocate#" &
-     "dereference#" &
-     "decimal_io#" &
-     "enumeration_io#" &
-     "fixed_io#" &
-     "float_io#" &
-     "integer_io#" &
-     "modular_io#" &
-     "a_textio#" &
-     "a_witeio#" &
-     "const#" &
-     "<error>#" &
-     "go#" &
-     "put#" &
-     "put_line#" &
-     "to#" &
-     "finalization#" &
-     "finalization_root#" &
-     "interfaces#" &
-     "standard#" &
-     "system#" &
-     "text_io#" &
-     "wide_text_io#" &
-     "no_dsa#" &
-     "glade_dsa#" &
-     "polyorb_dsa#" &
-     "addr#" &
-     "async#" &
-     "get_active_partition_id#" &
-     "get_rci_package_receiver#" &
-     "get_rci_package_ref#" &
-     "origin#" &
-     "params#" &
-     "partition#" &
-     "partition_interface#" &
-     "ras#" &
-     "call#" &
-     "rci_name#" &
-     "receiver#" &
-     "result#" &
-     "rpc#" &
-     "subp_id#" &
-     "operation#" &
-     "argument#" &
-     "arg_modes#" &
-     "handler#" &
-     "target#" &
-     "req#" &
-     "obj_typecode#" &
-     "Oabs#" &
-     "Oand#" &
-     "Omod#" &
-     "Onot#" &
-     "Oor#" &
-     "Orem#" &
-     "Oxor#" &
-     "Oeq#" &
-     "One#" &
-     "Olt#" &
-     "Ole#" &
-     "Ogt#" &
-     "Oge#" &
-     "Oadd#" &
-     "Osubtract#" &
-     "Oconcat#" &
-     "Omultiply#" &
-     "Odivide#" &
-     "Oexpon#" &
-     "ada_83#" &
-     "ada_95#" &
-     "ada_05#" &
-     "c_pass_by_copy#" &
-     "compile_time_warning#" &
-     "component_alignment#" &
-     "convention_identifier#" &
-     "detect_blocking#" &
-     "discard_names#" &
-     "elaboration_checks#" &
-     "eliminate#" &
-     "explicit_overriding#" &
-     "extend_system#" &
-     "extensions_allowed#" &
-     "external_name_casing#" &
-     "float_representation#" &
-     "initialize_scalars#" &
-     "interrupt_state#" &
-     "license#" &
-     "locking_policy#" &
-     "long_float#" &
-     "no_run_time#" &
-     "no_strict_aliasing#" &
-     "normalize_scalars#" &
-     "polling#" &
-     "persistent_data#" &
-     "persistent_object#" &
-     "profile#" &
-     "profile_warnings#" &
-     "propagate_exceptions#" &
-     "queuing_policy#" &
-     "ravenscar#" &
-     "restricted_run_time#" &
-     "restrictions#" &
-     "restriction_warnings#" &
-     "reviewable#" &
-     "source_file_name#" &
-     "source_file_name_project#" &
-     "style_checks#" &
-     "suppress#" &
-     "suppress_exception_locations#" &
-     "task_dispatching_policy#" &
-     "universal_data#" &
-     "unsuppress#" &
-     "use_vads_size#" &
-     "validity_checks#" &
-     "warnings#" &
-     "abort_defer#" &
-     "all_calls_remote#" &
-     "annotate#" &
-     "assert#" &
-     "asynchronous#" &
-     "atomic#" &
-     "atomic_components#" &
-     "attach_handler#" &
-     "comment#" &
-     "common_object#" &
-     "complex_representation#" &
-     "controlled#" &
-     "convention#" &
-     "cpp_class#" &
-     "cpp_constructor#" &
-     "cpp_virtual#" &
-     "cpp_vtable#" &
-     "debug#" &
-     "elaborate#" &
-     "elaborate_all#" &
-     "elaborate_body#" &
-     "export#" &
-     "export_exception#" &
-     "export_function#" &
-     "export_object#" &
-     "export_procedure#" &
-     "export_value#" &
-     "export_valued_procedure#" &
-     "external#" &
-     "finalize_storage_only#" &
-     "ident#" &
-     "import#" &
-     "import_exception#" &
-     "import_function#" &
-     "import_object#" &
-     "import_procedure#" &
-     "import_valued_procedure#" &
-     "inline#" &
-     "inline_always#" &
-     "inline_generic#" &
-     "inspection_point#" &
-     "interface#" &
-     "interface_name#" &
-     "interrupt_handler#" &
-     "interrupt_priority#" &
-     "java_constructor#" &
-     "java_interface#" &
-     "keep_names#" &
-     "link_with#" &
-     "linker_alias#" &
-     "linker_options#" &
-     "linker_section#" &
-     "list#" &
-     "machine_attribute#" &
-     "main#" &
-     "main_storage#" &
-     "memory_size#" &
-     "no_return#" &
-     "obsolescent#" &
-     "optimize#" &
-     "optional_overriding#" &
-     "overriding#" &
-     "pack#" &
-     "page#" &
-     "passive#" &
-     "preelaborate#" &
-     "priority#" &
-     "psect_object#" &
-     "pure#" &
-     "pure_function#" &
-     "remote_call_interface#" &
-     "remote_types#" &
-     "share_generic#" &
-     "shared#" &
-     "shared_passive#" &
-     "source_reference#" &
-     "stream_convert#" &
-     "subtitle#" &
-     "suppress_all#" &
-     "suppress_debug_info#" &
-     "suppress_initialization#" &
-     "system_name#" &
-     "task_info#" &
-     "task_name#" &
-     "task_storage#" &
-     "thread_body#" &
-     "time_slice#" &
-     "title#" &
-     "unchecked_union#" &
-     "unimplemented_unit#" &
-     "unreferenced#" &
-     "unreserve_all_interrupts#" &
-     "volatile#" &
-     "volatile_components#" &
-     "weak_external#" &
-     "ada#" &
-     "assembler#" &
-     "cobol#" &
-     "cpp#" &
-     "fortran#" &
-     "intrinsic#" &
-     "java#" &
-     "stdcall#" &
-     "stubbed#" &
-     "asm#" &
-     "assembly#" &
-     "default#" &
-     "dll#" &
-     "win32#" &
-     "as_is#" &
-     "body_file_name#" &
-     "boolean_entry_barriers#" &
-     "casing#" &
-     "code#" &
-     "component#" &
-     "component_size_4#" &
-     "copy#" &
-     "d_float#" &
-     "descriptor#" &
-     "dot_replacement#" &
-     "dynamic#" &
-     "entity#" &
-     "external_name#" &
-     "first_optional_parameter#" &
-     "form#" &
-     "g_float#" &
-     "gcc#" &
-     "gnat#" &
-     "gpl#" &
-     "ieee_float#" &
-     "internal#" &
-     "link_name#" &
-     "lowercase#" &
-     "max_entry_queue_depth#" &
-     "max_entry_queue_length#" &
-     "max_size#" &
-     "mechanism#" &
-     "mixedcase#" &
-     "modified_gpl#" &
-     "name#" &
-     "nca#" &
-     "no#" &
-     "on#" &
-     "parameter_types#" &
-     "reference#" &
-     "no_dynamic_attachment#" &
-     "no_dynamic_interrupts#" &
-     "no_requeue#" &
-     "no_requeue_statements#" &
-     "no_task_attributes#" &
-     "no_task_attributes_package#" &
-     "restricted#" &
-     "result_mechanism#" &
-     "result_type#" &
-     "runtime#" &
-     "sb#" &
-     "secondary_stack_size#" &
-     "section#" &
-     "semaphore#" &
-     "simple_barriers#" &
-     "spec_file_name#" &
-     "static#" &
-     "stack_size#" &
-     "subunit_file_name#" &
-     "task_stack_size_default#" &
-     "task_type#" &
-     "time_slicing_enabled#" &
-     "top_guard#" &
-     "uba#" &
-     "ubs#" &
-     "ubsb#" &
-     "unit_name#" &
-     "unknown#" &
-     "unrestricted#" &
-     "uppercase#" &
-     "user#" &
-     "vax_float#" &
-     "vms#" &
-     "working_storage#" &
-     "abort_signal#" &
-     "access#" &
-     "address#" &
-     "address_size#" &
-     "aft#" &
-     "alignment#" &
-     "asm_input#" &
-     "asm_output#" &
-     "ast_entry#" &
-     "bit#" &
-     "bit_order#" &
-     "bit_position#" &
-     "body_version#" &
-     "callable#" &
-     "caller#" &
-     "code_address#" &
-     "component_size#" &
-     "compose#" &
-     "constrained#" &
-     "count#" &
-     "default_bit_order#" &
-     "definite#" &
-     "delta#" &
-     "denorm#" &
-     "digits#" &
-     "elaborated#" &
-     "emax#" &
-     "enum_rep#" &
-     "epsilon#" &
-     "exponent#" &
-     "external_tag#" &
-     "first#" &
-     "first_bit#" &
-     "fixed_value#" &
-     "fore#" &
-     "has_discriminants#" &
-     "identity#" &
-     "img#" &
-     "integer_value#" &
-     "large#" &
-     "last#" &
-     "last_bit#" &
-     "leading_part#" &
-     "length#" &
-     "machine_emax#" &
-     "machine_emin#" &
-     "machine_mantissa#" &
-     "machine_overflows#" &
-     "machine_radix#" &
-     "machine_rounds#" &
-     "machine_size#" &
-     "mantissa#" &
-     "max_size_in_storage_elements#" &
-     "maximum_alignment#" &
-     "mechanism_code#" &
-     "model_emin#" &
-     "model_epsilon#" &
-     "model_mantissa#" &
-     "model_small#" &
-     "modulus#" &
-     "null_parameter#" &
-     "object_size#" &
-     "partition_id#" &
-     "passed_by_reference#" &
-     "pool_address#" &
-     "pos#" &
-     "position#" &
-     "range#" &
-     "range_length#" &
-     "round#" &
-     "safe_emax#" &
-     "safe_first#" &
-     "safe_large#" &
-     "safe_last#" &
-     "safe_small#" &
-     "scale#" &
-     "scaling#" &
-     "signed_zeros#" &
-     "size#" &
-     "small#" &
-     "storage_size#" &
-     "storage_unit#" &
-     "tag#" &
-     "target_name#" &
-     "terminated#" &
-     "to_address#" &
-     "type_class#" &
-     "uet_address#" &
-     "unbiased_rounding#" &
-     "unchecked_access#" &
-     "unconstrained_array#" &
-     "universal_literal_string#" &
-     "unrestricted_access#" &
-     "vads_size#" &
-     "val#" &
-     "valid#" &
-     "value_size#" &
-     "version#" &
-     "wchar_t_size#" &
-     "wide_width#" &
-     "width#" &
-     "word_size#" &
-     "adjacent#" &
-     "ceiling#" &
-     "copy_sign#" &
-     "floor#" &
-     "fraction#" &
-     "image#" &
-     "input#" &
-     "machine#" &
-     "max#" &
-     "min#" &
-     "model#" &
-     "pred#" &
-     "remainder#" &
-     "rounding#" &
-     "succ#" &
-     "truncation#" &
-     "value#" &
-     "wide_image#" &
-     "wide_value#" &
-     "output#" &
-     "read#" &
-     "write#" &
-     "elab_body#" &
-     "elab_spec#" &
-     "storage_pool#" &
-     "base#" &
-     "class#" &
-     "ceiling_locking#" &
-     "inheritance_locking#" &
-     "fifo_queuing#" &
-     "priority_queuing#" &
-     "fifo_within_priorities#" &
-     "access_check#" &
-     "accessibility_check#" &
-     "discriminant_check#" &
-     "division_check#" &
-     "elaboration_check#" &
-     "index_check#" &
-     "length_check#" &
-     "overflow_check#" &
-     "range_check#" &
-     "storage_check#" &
-     "tag_check#" &
-     "all_checks#" &
-     "abort#" &
-     "abs#" &
-     "accept#" &
-     "and#" &
-     "all#" &
-     "array#" &
-     "at#" &
-     "begin#" &
-     "body#" &
-     "case#" &
-     "constant#" &
-     "declare#" &
-     "delay#" &
-     "do#" &
-     "else#" &
-     "elsif#" &
-     "end#" &
-     "entry#" &
-     "exception#" &
-     "exit#" &
-     "for#" &
-     "function#" &
-     "generic#" &
-     "goto#" &
-     "if#" &
-     "in#" &
-     "is#" &
-     "limited#" &
-     "loop#" &
-     "mod#" &
-     "new#" &
-     "not#" &
-     "null#" &
-     "of#" &
-     "or#" &
-     "others#" &
-     "out#" &
-     "package#" &
-     "pragma#" &
-     "private#" &
-     "procedure#" &
-     "raise#" &
-     "record#" &
-     "rem#" &
-     "renames#" &
-     "return#" &
-     "reverse#" &
-     "select#" &
-     "separate#" &
-     "subtype#" &
-     "task#" &
-     "terminate#" &
-     "then#" &
-     "type#" &
-     "use#" &
-     "when#" &
-     "while#" &
-     "with#" &
-     "xor#" &
-     "divide#" &
-     "enclosing_entity#" &
-     "exception_information#" &
-     "exception_message#" &
-     "exception_name#" &
-     "file#" &
-     "import_address#" &
-     "import_largest_value#" &
-     "import_value#" &
-     "is_negative#" &
-     "line#" &
-     "rotate_left#" &
-     "rotate_right#" &
-     "shift_left#" &
-     "shift_right#" &
-     "shift_right_arithmetic#" &
-     "source_location#" &
-     "unchecked_conversion#" &
-     "unchecked_deallocation#" &
-     "to_pointer#" &
-     "abstract#" &
-     "aliased#" &
-     "protected#" &
-     "until#" &
-     "requeue#" &
-     "tagged#" &
-     "raise_exception#" &
-     "binder#" &
-     "body_suffix#" &
-     "builder#" &
-     "compiler#" &
-     "cross_reference#" &
-     "default_switches#" &
-     "exec_dir#" &
-     "executable#" &
-     "executable_suffix#" &
-     "extends#" &
-     "finder#" &
-     "global_configuration_pragmas#" &
-     "gnatls#" &
-     "gnatstub#" &
-     "implementation#" &
-     "implementation_exceptions#" &
-     "implementation_suffix#" &
-     "languages#" &
-     "library_dir#" &
-     "library_auto_init#" &
-     "library_gcc#" &
-     "library_interface#" &
-     "library_kind#" &
-     "library_name#" &
-     "library_options#" &
-     "library_reference_symbol_file#" &
-     "library_src_dir#" &
-     "library_symbol_file#" &
-     "library_symbol_policy#" &
-     "library_version#" &
-     "linker#" &
-     "local_configuration_pragmas#" &
-     "locally_removed_files#" &
-     "metrics#" &
-     "naming#" &
-     "object_dir#" &
-     "pretty_printer#" &
-     "project#" &
-     "separate_suffix#" &
-     "source_dirs#" &
-     "source_files#" &
-     "source_list_file#" &
-     "spec#" &
-     "spec_suffix#" &
-     "specification#" &
-     "specification_exceptions#" &
-     "specification_suffix#" &
-     "switches#" &
-     "unaligned_valid#" &
-      "#";
-
-   ---------------------
-   -- Generated Names --
-   ---------------------
-
-   --  This section lists the various cases of generated names which are
-   --  built from existing names by adding unique leading and/or trailing
-   --  upper case letters. In some cases these names are built recursively,
-   --  in particular names built from types may be built from types which
-   --  themselves have generated names. In this list, xxx represents an
-   --  existing name to which identifying letters are prepended or appended,
-   --  and a trailing n represents a serial number in an external name that
-   --  has some semantic significance (e.g. the n'th index type of an array).
-
-   --    xxxA    access type for formal xxx in entry param record   (Exp_Ch9)
-   --    xxxB    tag table for tagged type xxx                      (Exp_Ch3)
-   --    xxxB    task body procedure for task xxx                   (Exp_Ch9)
-   --    xxxD    dispatch table for tagged type xxx                 (Exp_Ch3)
-   --    xxxD    discriminal for discriminant xxx                   (Sem_Ch3)
-   --    xxxDn   n'th discr check function for rec type xxx         (Exp_Ch3)
-   --    xxxE    elaboration boolean flag for task xxx              (Exp_Ch9)
-   --    xxxE    dispatch table pointer type for tagged type xxx    (Exp_Ch3)
-   --    xxxE    parameters for accept body for entry xxx           (Exp_Ch9)
-   --    xxxFn   n'th primitive of a tagged type (named xxx)        (Exp_Ch3)
-   --    xxxJ    tag table type index for tagged type xxx           (Exp_Ch3)
-   --    xxxM    master Id value for access type xxx                (Exp_Ch3)
-   --    xxxP    tag table pointer type for tagged type xxx         (Exp_Ch3)
-   --    xxxP    parameter record type for entry xxx                (Exp_Ch9)
-   --    xxxPA   access to parameter record type for entry xxx      (Exp_Ch9)
-   --    xxxPn   pointer type for n'th primitive of tagged type xxx (Exp_Ch3)
-   --    xxxR    dispatch table pointer for tagged type xxx         (Exp_Ch3)
-   --    xxxT    tag table type for tagged type xxx                 (Exp_Ch3)
-   --    xxxT    literal table for enumeration type xxx             (Sem_Ch3)
-   --    xxxV    type for task value record for task xxx            (Exp_Ch9)
-   --    xxxX    entry index constant                               (Exp_Ch9)
-   --    xxxY    dispatch table type for tagged type xxx            (Exp_Ch3)
-   --    xxxZ    size variable for task xxx                         (Exp_Ch9)
-
-   --  TSS names
-
-   --    xxxDA   deep adjust routine for type xxx                   (Exp_TSS)
-   --    xxxDF   deep finalize routine for type xxx                 (Exp_TSS)
-   --    xxxDI   deep initialize routine for type xxx               (Exp_TSS)
-   --    xxxEQ   composite equality routine for record type xxx     (Exp_TSS)
-   --    xxxIP   initialization procedure for type xxx              (Exp_TSS)
-   --    xxxRA   RAs type access routine for type xxx               (Exp_TSS)
-   --    xxxRD   RAs type dereference routine for type xxx          (Exp_TSS)
-   --    xxxRP   Rep to Pos conversion for enumeration type xxx     (Exp_TSS)
-   --    xxxSA   array/slice assignment for controlled comp. arrays (Exp_TSS)
-   --    xxxSI   stream input attribute subprogram for type xxx     (Exp_TSS)
-   --    xxxSO   stream output attribute subprogram for type xxx    (Exp_TSS)
-   --    xxxSR   stream read attribute subprogram for type xxx      (Exp_TSS)
-   --    xxxSW   stream write attribute subprogram for type xxx     (Exp_TSS)
-
-   --  Implicit type names
-
-   --    TxxxT   type of literal table for enumeration type xxx     (Sem_Ch3)
-
-   --  (Note: this list is not complete or accurate ???)
-
-   ----------------------
-   -- Get_Attribute_Id --
-   ----------------------
-
-   function Get_Attribute_Id (N : Name_Id) return Attribute_Id is
-   begin
-      return Attribute_Id'Val (N - First_Attribute_Name);
-   end Get_Attribute_Id;
-
-   ------------------
-   -- Get_Check_Id --
-   ------------------
-
-   function Get_Check_Id (N : Name_Id) return Check_Id is
-   begin
-      return Check_Id'Val (N - First_Check_Name);
-   end Get_Check_Id;
-
-   -----------------------
-   -- Get_Convention_Id --
-   -----------------------
-
-   function Get_Convention_Id (N : Name_Id) return Convention_Id is
-   begin
-      case N is
-         when Name_Ada        => return Convention_Ada;
-         when Name_Assembler  => return Convention_Assembler;
-         when Name_C          => return Convention_C;
-         when Name_COBOL      => return Convention_COBOL;
-         when Name_CPP        => return Convention_CPP;
-         when Name_Fortran    => return Convention_Fortran;
-         when Name_Intrinsic  => return Convention_Intrinsic;
-         when Name_Java       => return Convention_Java;
-         when Name_Stdcall    => return Convention_Stdcall;
-         when Name_Stubbed    => return Convention_Stubbed;
-
-         --  If no direct match, then we must have a convention
-         --  identifier pragma that has specified this name.
-
-         when others          =>
-            for J in 1 .. Convention_Identifiers.Last loop
-               if N = Convention_Identifiers.Table (J).Name then
-                  return Convention_Identifiers.Table (J).Convention;
-               end if;
-            end loop;
-
-            raise Program_Error;
-      end case;
-   end Get_Convention_Id;
-
-   ---------------------------
-   -- Get_Locking_Policy_Id --
-   ---------------------------
-
-   function Get_Locking_Policy_Id (N : Name_Id) return Locking_Policy_Id is
-   begin
-      return Locking_Policy_Id'Val (N - First_Locking_Policy_Name);
-   end Get_Locking_Policy_Id;
-
-   -------------------
-   -- Get_Pragma_Id --
-   -------------------
-
-   function Get_Pragma_Id (N : Name_Id) return Pragma_Id is
-   begin
-      if N = Name_AST_Entry then
-         return Pragma_AST_Entry;
-      elsif N = Name_Storage_Size then
-         return Pragma_Storage_Size;
-      elsif N = Name_Storage_Unit then
-         return Pragma_Storage_Unit;
-      elsif N not in First_Pragma_Name .. Last_Pragma_Name then
-         return Unknown_Pragma;
-      else
-         return Pragma_Id'Val (N - First_Pragma_Name);
-      end if;
-   end Get_Pragma_Id;
-
-   ---------------------------
-   -- Get_Queuing_Policy_Id --
-   ---------------------------
-
-   function Get_Queuing_Policy_Id (N : Name_Id) return Queuing_Policy_Id is
-   begin
-      return Queuing_Policy_Id'Val (N - First_Queuing_Policy_Name);
-   end Get_Queuing_Policy_Id;
-
-   ------------------------------------
-   -- Get_Task_Dispatching_Policy_Id --
-   ------------------------------------
-
-   function Get_Task_Dispatching_Policy_Id (N : Name_Id)
-     return Task_Dispatching_Policy_Id is
-   begin
-      return Task_Dispatching_Policy_Id'Val
-        (N - First_Task_Dispatching_Policy_Name);
-   end Get_Task_Dispatching_Policy_Id;
-
-   ----------------
-   -- Initialize --
-   ----------------
-
-   procedure Initialize is
-      P_Index      : Natural;
-      Discard_Name : Name_Id;
-
-   begin
-      P_Index := Preset_Names'First;
-
-      loop
-         Name_Len := 0;
-
-         while Preset_Names (P_Index) /= '#' loop
-            Name_Len := Name_Len + 1;
-            Name_Buffer (Name_Len) := Preset_Names (P_Index);
-            P_Index := P_Index + 1;
-         end loop;
-
-         --  We do the Name_Find call to enter the name into the table, but
-         --  we don't need to do anything with the result, since we already
-         --  initialized all the preset names to have the right value (we
-         --  are depending on the order of the names and Preset_Names).
-
-         Discard_Name := Name_Find;
-         P_Index := P_Index + 1;
-         exit when Preset_Names (P_Index) = '#';
-      end loop;
-
-      --  Make sure that number of names in standard table is correct. If
-      --  this check fails, run utility program XSNAMES to construct a new
-      --  properly matching version of the body.
-
-      pragma Assert (Discard_Name = Last_Predefined_Name);
-
-      --  Initialize the convention identifiers table with the standard
-      --  set of synonyms that we recognize for conventions.
-
-      Convention_Identifiers.Init;
-
-      Convention_Identifiers.Append ((Name_Asm,      Convention_Assembler));
-      Convention_Identifiers.Append ((Name_Assembly, Convention_Assembler));
-
-      Convention_Identifiers.Append ((Name_Default,  Convention_C));
-      Convention_Identifiers.Append ((Name_External, Convention_C));
-
-      Convention_Identifiers.Append ((Name_DLL,      Convention_Stdcall));
-      Convention_Identifiers.Append ((Name_Win32,    Convention_Stdcall));
-   end Initialize;
-
-   -----------------------
-   -- Is_Attribute_Name --
-   -----------------------
-
-   function Is_Attribute_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Attribute_Name .. Last_Attribute_Name;
-   end Is_Attribute_Name;
-
-   -------------------
-   -- Is_Check_Name --
-   -------------------
-
-   function Is_Check_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Check_Name .. Last_Check_Name;
-   end Is_Check_Name;
-
-   ------------------------
-   -- Is_Convention_Name --
-   ------------------------
-
-   function Is_Convention_Name (N : Name_Id) return Boolean is
-   begin
-      --  Check if this is one of the standard conventions
-
-      if N in First_Convention_Name .. Last_Convention_Name
-        or else N = Name_C
-      then
-         return True;
-
-      --  Otherwise check if it is in convention identifier table
-
-      else
-         for J in 1 .. Convention_Identifiers.Last loop
-            if N = Convention_Identifiers.Table (J).Name then
-               return True;
-            end if;
-         end loop;
-
-         return False;
-      end if;
-   end Is_Convention_Name;
-
-   ------------------------------
-   -- Is_Entity_Attribute_Name --
-   ------------------------------
-
-   function Is_Entity_Attribute_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Entity_Attribute_Name .. Last_Entity_Attribute_Name;
-   end Is_Entity_Attribute_Name;
-
-   --------------------------------
-   -- Is_Function_Attribute_Name --
-   --------------------------------
-
-   function Is_Function_Attribute_Name (N : Name_Id) return Boolean is
-   begin
-      return N in
-        First_Renamable_Function_Attribute ..
-          Last_Renamable_Function_Attribute;
-   end Is_Function_Attribute_Name;
-
-   ----------------------------
-   -- Is_Locking_Policy_Name --
-   ----------------------------
-
-   function Is_Locking_Policy_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Locking_Policy_Name .. Last_Locking_Policy_Name;
-   end Is_Locking_Policy_Name;
-
-   -----------------------------
-   -- Is_Operator_Symbol_Name --
-   -----------------------------
-
-   function Is_Operator_Symbol_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Operator_Name .. Last_Operator_Name;
-   end Is_Operator_Symbol_Name;
-
-   --------------------
-   -- Is_Pragma_Name --
-   --------------------
-
-   function Is_Pragma_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Pragma_Name .. Last_Pragma_Name
-        or else N = Name_AST_Entry
-        or else N = Name_Storage_Size
-        or else N = Name_Storage_Unit;
-   end Is_Pragma_Name;
-
-   ---------------------------------
-   -- Is_Procedure_Attribute_Name --
-   ---------------------------------
-
-   function Is_Procedure_Attribute_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Procedure_Attribute .. Last_Procedure_Attribute;
-   end Is_Procedure_Attribute_Name;
-
-   ----------------------------
-   -- Is_Queuing_Policy_Name --
-   ----------------------------
-
-   function Is_Queuing_Policy_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Queuing_Policy_Name .. Last_Queuing_Policy_Name;
-   end Is_Queuing_Policy_Name;
-
-   -------------------------------------
-   -- Is_Task_Dispatching_Policy_Name --
-   -------------------------------------
-
-   function Is_Task_Dispatching_Policy_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Task_Dispatching_Policy_Name ..
-                  Last_Task_Dispatching_Policy_Name;
-   end Is_Task_Dispatching_Policy_Name;
-
-   ----------------------------
-   -- Is_Type_Attribute_Name --
-   ----------------------------
-
-   function Is_Type_Attribute_Name (N : Name_Id) return Boolean is
-   begin
-      return N in First_Type_Attribute_Name .. Last_Type_Attribute_Name;
-   end Is_Type_Attribute_Name;
-
-   ----------------------------------
-   -- Record_Convention_Identifier --
-   ----------------------------------
-
-   procedure Record_Convention_Identifier
-     (Id         : Name_Id;
-      Convention : Convention_Id)
-   is
-   begin
-      Convention_Identifiers.Append ((Id, Convention));
-   end Record_Convention_Identifier;
-
-end Snames;
+------------------------------------------------------------------------------\r
+--                                                                          --\r
+--                         GNAT COMPILER COMPONENTS                         --\r
+--                                                                          --\r
+--                               S N A M E S                                --\r
+--                                                                          --\r
+--                                 B o d y                                  --\r
+--                                                                          --\r
+--          Copyright (C) 1992-2005, Free Software Foundation, Inc.         --\r
+--                                                                          --\r
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --\r
+-- terms of the  GNU General Public License as published  by the Free Soft- --\r
+-- ware  Foundation;  either version 2,  or (at your option) any later ver- --\r
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --\r
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --\r
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --\r
+-- for  more details.  You should have  received  a copy of the GNU General --\r
+-- Public License  distributed with GNAT;  see file COPYING.  If not, write --\r
+-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --\r
+-- MA 02111-1307, USA.                                                      --\r
+--                                                                          --\r
+-- As a special exception,  if other files  instantiate  generics from this --\r
+-- unit, or you link  this unit with other files  to produce an executable, --\r
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --\r
+-- covered  by the  GNU  General  Public  License.  This exception does not --\r
+-- however invalidate  any other reasons why  the executable file  might be --\r
+-- covered by the  GNU Public License.                                      --\r
+--                                                                          --\r
+-- GNAT was originally developed  by the GNAT team at  New York University. --\r
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --\r
+--                                                                          --\r
+------------------------------------------------------------------------------\r
+\r
+with Namet; use Namet;\r
+with Table;\r
+\r
+package body Snames is\r
+\r
+   --  Table used to record convention identifiers\r
+\r
+   type Convention_Id_Entry is record\r
+      Name       : Name_Id;\r
+      Convention : Convention_Id;\r
+   end record;\r
+\r
+   package Convention_Identifiers is new Table.Table (\r
+     Table_Component_Type => Convention_Id_Entry,\r
+     Table_Index_Type     => Int,\r
+     Table_Low_Bound      => 1,\r
+     Table_Initial        => 50,\r
+     Table_Increment      => 200,\r
+     Table_Name           => "Name_Convention_Identifiers");\r
+\r
+   --  Table of names to be set by Initialize. Each name is terminated by a\r
+   --  single #, and the end of the list is marked by a null entry, i.e. by\r
+   --  two # marks in succession. Note that the table does not include the\r
+   --  entries for a-z, since these are initialized by Namet itself.\r
+\r
+   Preset_Names : constant String :=\r
+     "_parent#" &\r
+     "_tag#" &\r
+     "off#" &\r
+     "space#" &\r
+     "time#" &\r
+     "_abort_signal#" &\r
+     "_alignment#" &\r
+     "_assign#" &\r
+     "_atcb#" &\r
+     "_chain#" &\r
+     "_clean#" &\r
+     "_controller#" &\r
+     "_entry_bodies#" &\r
+     "_expunge#" &\r
+     "_final_list#" &\r
+     "_idepth#" &\r
+     "_init#" &\r
+     "_local_final_list#" &\r
+     "_master#" &\r
+     "_object#" &\r
+     "_priority#" &\r
+     "_process_atsd#" &\r
+     "_secondary_stack#" &\r
+     "_service#" &\r
+     "_size#" &\r
+     "_stack#" &\r
+     "_tags#" &\r
+     "_task#" &\r
+     "_task_id#" &\r
+     "_task_info#" &\r
+     "_task_name#" &\r
+     "_trace_sp#" &\r
+     "initialize#" &\r
+     "adjust#" &\r
+     "finalize#" &\r
+     "next#" &\r
+     "prev#" &\r
+     "_typecode#" &\r
+     "_from_any#" &\r
+     "_to_any#" &\r
+     "allocate#" &\r
+     "deallocate#" &\r
+     "dereference#" &\r
+     "decimal_io#" &\r
+     "enumeration_io#" &\r
+     "fixed_io#" &\r
+     "float_io#" &\r
+     "integer_io#" &\r
+     "modular_io#" &\r
+     "const#" &\r
+     "<error>#" &\r
+     "go#" &\r
+     "put#" &\r
+     "put_line#" &\r
+     "to#" &\r
+     "finalization#" &\r
+     "finalization_root#" &\r
+     "interfaces#" &\r
+     "standard#" &\r
+     "system#" &\r
+     "text_io#" &\r
+     "wide_text_io#" &\r
+     "wide_wide_text_io#" &\r
+     "no_dsa#" &\r
+     "garlic_dsa#" &\r
+     "polyorb_dsa#" &\r
+     "addr#" &\r
+     "async#" &\r
+     "get_active_partition_id#" &\r
+     "get_rci_package_receiver#" &\r
+     "get_rci_package_ref#" &\r
+     "origin#" &\r
+     "params#" &\r
+     "partition#" &\r
+     "partition_interface#" &\r
+     "ras#" &\r
+     "call#" &\r
+     "rci_name#" &\r
+     "receiver#" &\r
+     "result#" &\r
+     "rpc#" &\r
+     "subp_id#" &\r
+     "operation#" &\r
+     "argument#" &\r
+     "arg_modes#" &\r
+     "handler#" &\r
+     "target#" &\r
+     "req#" &\r
+     "obj_typecode#" &\r
+     "stub#" &\r
+     "Oabs#" &\r
+     "Oand#" &\r
+     "Omod#" &\r
+     "Onot#" &\r
+     "Oor#" &\r
+     "Orem#" &\r
+     "Oxor#" &\r
+     "Oeq#" &\r
+     "One#" &\r
+     "Olt#" &\r
+     "Ole#" &\r
+     "Ogt#" &\r
+     "Oge#" &\r
+     "Oadd#" &\r
+     "Osubtract#" &\r
+     "Oconcat#" &\r
+     "Omultiply#" &\r
+     "Odivide#" &\r
+     "Oexpon#" &\r
+     "ada_83#" &\r
+     "ada_95#" &\r
+     "ada_05#" &\r
+     "c_pass_by_copy#" &\r
+     "compile_time_warning#" &\r
+     "component_alignment#" &\r
+     "convention_identifier#" &\r
+     "detect_blocking#" &\r
+     "discard_names#" &\r
+     "elaboration_checks#" &\r
+     "eliminate#" &\r
+     "explicit_overriding#" &\r
+     "extend_system#" &\r
+     "extensions_allowed#" &\r
+     "external_name_casing#" &\r
+     "float_representation#" &\r
+     "initialize_scalars#" &\r
+     "interrupt_state#" &\r
+     "license#" &\r
+     "locking_policy#" &\r
+     "long_float#" &\r
+     "no_run_time#" &\r
+     "no_strict_aliasing#" &\r
+     "normalize_scalars#" &\r
+     "polling#" &\r
+     "persistent_data#" &\r
+     "persistent_object#" &\r
+     "profile#" &\r
+     "profile_warnings#" &\r
+     "propagate_exceptions#" &\r
+     "queuing_policy#" &\r
+     "ravenscar#" &\r
+     "restricted_run_time#" &\r
+     "restrictions#" &\r
+     "restriction_warnings#" &\r
+     "reviewable#" &\r
+     "source_file_name#" &\r
+     "source_file_name_project#" &\r
+     "style_checks#" &\r
+     "suppress#" &\r
+     "suppress_exception_locations#" &\r
+     "task_dispatching_policy#" &\r
+     "universal_data#" &\r
+     "unsuppress#" &\r
+     "use_vads_size#" &\r
+     "validity_checks#" &\r
+     "warnings#" &\r
+     "abort_defer#" &\r
+     "all_calls_remote#" &\r
+     "annotate#" &\r
+     "assert#" &\r
+     "asynchronous#" &\r
+     "atomic#" &\r
+     "atomic_components#" &\r
+     "attach_handler#" &\r
+     "comment#" &\r
+     "common_object#" &\r
+     "complex_representation#" &\r
+     "controlled#" &\r
+     "convention#" &\r
+     "cpp_class#" &\r
+     "cpp_constructor#" &\r
+     "cpp_virtual#" &\r
+     "cpp_vtable#" &\r
+     "debug#" &\r
+     "elaborate#" &\r
+     "elaborate_all#" &\r
+     "elaborate_body#" &\r
+     "export#" &\r
+     "export_exception#" &\r
+     "export_function#" &\r
+     "export_object#" &\r
+     "export_procedure#" &\r
+     "export_value#" &\r
+     "export_valued_procedure#" &\r
+     "external#" &\r
+     "finalize_storage_only#" &\r
+     "ident#" &\r
+     "import#" &\r
+     "import_exception#" &\r
+     "import_function#" &\r
+     "import_object#" &\r
+     "import_procedure#" &\r
+     "import_valued_procedure#" &\r
+     "inline#" &\r
+     "inline_always#" &\r
+     "inline_generic#" &\r
+     "inspection_point#" &\r
+     "interface_name#" &\r
+     "interrupt_handler#" &\r
+     "interrupt_priority#" &\r
+     "java_constructor#" &\r
+     "java_interface#" &\r
+     "keep_names#" &\r
+     "link_with#" &\r
+     "linker_alias#" &\r
+     "linker_options#" &\r
+     "linker_section#" &\r
+     "list#" &\r
+     "machine_attribute#" &\r
+     "main#" &\r
+     "main_storage#" &\r
+     "memory_size#" &\r
+     "no_return#" &\r
+     "obsolescent#" &\r
+     "optimize#" &\r
+     "optional_overriding#" &\r
+     "pack#" &\r
+     "page#" &\r
+     "passive#" &\r
+     "preelaborate#" &\r
+     "priority#" &\r
+     "psect_object#" &\r
+     "pure#" &\r
+     "pure_function#" &\r
+     "remote_call_interface#" &\r
+     "remote_types#" &\r
+     "share_generic#" &\r
+     "shared#" &\r
+     "shared_passive#" &\r
+     "source_reference#" &\r
+     "stream_convert#" &\r
+     "subtitle#" &\r
+     "suppress_all#" &\r
+     "suppress_debug_info#" &\r
+     "suppress_initialization#" &\r
+     "system_name#" &\r
+     "task_info#" &\r
+     "task_name#" &\r
+     "task_storage#" &\r
+     "thread_body#" &\r
+     "time_slice#" &\r
+     "title#" &\r
+     "unchecked_union#" &\r
+     "unimplemented_unit#" &\r
+     "unreferenced#" &\r
+     "unreserve_all_interrupts#" &\r
+     "volatile#" &\r
+     "volatile_components#" &\r
+     "weak_external#" &\r
+     "ada#" &\r
+     "assembler#" &\r
+     "cobol#" &\r
+     "cpp#" &\r
+     "fortran#" &\r
+     "intrinsic#" &\r
+     "java#" &\r
+     "stdcall#" &\r
+     "stubbed#" &\r
+     "asm#" &\r
+     "assembly#" &\r
+     "default#" &\r
+     "dll#" &\r
+     "win32#" &\r
+     "as_is#" &\r
+     "body_file_name#" &\r
+     "boolean_entry_barriers#" &\r
+     "casing#" &\r
+     "code#" &\r
+     "component#" &\r
+     "component_size_4#" &\r
+     "copy#" &\r
+     "d_float#" &\r
+     "descriptor#" &\r
+     "dot_replacement#" &\r
+     "dynamic#" &\r
+     "entity#" &\r
+     "external_name#" &\r
+     "first_optional_parameter#" &\r
+     "form#" &\r
+     "g_float#" &\r
+     "gcc#" &\r
+     "gnat#" &\r
+     "gpl#" &\r
+     "ieee_float#" &\r
+     "internal#" &\r
+     "link_name#" &\r
+     "lowercase#" &\r
+     "max_entry_queue_depth#" &\r
+     "max_entry_queue_length#" &\r
+     "max_size#" &\r
+     "mechanism#" &\r
+     "mixedcase#" &\r
+     "modified_gpl#" &\r
+     "name#" &\r
+     "nca#" &\r
+     "no#" &\r
+     "no_dependence#" &\r
+     "no_dynamic_attachment#" &\r
+     "no_dynamic_interrupts#" &\r
+     "no_requeue#" &\r
+     "no_requeue_statements#" &\r
+     "no_task_attributes#" &\r
+     "no_task_attributes_package#" &\r
+     "on#" &\r
+     "parameter_types#" &\r
+     "reference#" &\r
+     "restricted#" &\r
+     "result_mechanism#" &\r
+     "result_type#" &\r
+     "runtime#" &\r
+     "sb#" &\r
+     "secondary_stack_size#" &\r
+     "section#" &\r
+     "semaphore#" &\r
+     "simple_barriers#" &\r
+     "spec_file_name#" &\r
+     "static#" &\r
+     "stack_size#" &\r
+     "subunit_file_name#" &\r
+     "task_stack_size_default#" &\r
+     "task_type#" &\r
+     "time_slicing_enabled#" &\r
+     "top_guard#" &\r
+     "uba#" &\r
+     "ubs#" &\r
+     "ubsb#" &\r
+     "unit_name#" &\r
+     "unknown#" &\r
+     "unrestricted#" &\r
+     "uppercase#" &\r
+     "user#" &\r
+     "vax_float#" &\r
+     "vms#" &\r
+     "working_storage#" &\r
+     "abort_signal#" &\r
+     "access#" &\r
+     "address#" &\r
+     "address_size#" &\r
+     "aft#" &\r
+     "alignment#" &\r
+     "asm_input#" &\r
+     "asm_output#" &\r
+     "ast_entry#" &\r
+     "bit#" &\r
+     "bit_order#" &\r
+     "bit_position#" &\r
+     "body_version#" &\r
+     "callable#" &\r
+     "caller#" &\r
+     "code_address#" &\r
+     "component_size#" &\r
+     "compose#" &\r
+     "constrained#" &\r
+     "count#" &\r
+     "default_bit_order#" &\r
+     "definite#" &\r
+     "delta#" &\r
+     "denorm#" &\r
+     "digits#" &\r
+     "elaborated#" &\r
+     "emax#" &\r
+     "enum_rep#" &\r
+     "epsilon#" &\r
+     "exponent#" &\r
+     "external_tag#" &\r
+     "first#" &\r
+     "first_bit#" &\r
+     "fixed_value#" &\r
+     "fore#" &\r
+     "has_access_values#" &\r
+     "has_discriminants#" &\r
+     "identity#" &\r
+     "img#" &\r
+     "integer_value#" &\r
+     "large#" &\r
+     "last#" &\r
+     "last_bit#" &\r
+     "leading_part#" &\r
+     "length#" &\r
+     "machine_emax#" &\r
+     "machine_emin#" &\r
+     "machine_mantissa#" &\r
+     "machine_overflows#" &\r
+     "machine_radix#" &\r
+     "machine_rounds#" &\r
+     "machine_size#" &\r
+     "mantissa#" &\r
+     "max_size_in_storage_elements#" &\r
+     "maximum_alignment#" &\r
+     "mechanism_code#" &\r
+     "mod#" &\r
+     "model_emin#" &\r
+     "model_epsilon#" &\r
+     "model_mantissa#" &\r
+     "model_small#" &\r
+     "modulus#" &\r
+     "null_parameter#" &\r
+     "object_size#" &\r
+     "partition_id#" &\r
+     "passed_by_reference#" &\r
+     "pool_address#" &\r
+     "pos#" &\r
+     "position#" &\r
+     "range#" &\r
+     "range_length#" &\r
+     "round#" &\r
+     "safe_emax#" &\r
+     "safe_first#" &\r
+     "safe_large#" &\r
+     "safe_last#" &\r
+     "safe_small#" &\r
+     "scale#" &\r
+     "scaling#" &\r
+     "signed_zeros#" &\r
+     "size#" &\r
+     "small#" &\r
+     "storage_size#" &\r
+     "storage_unit#" &\r
+     "stream_size#" &\r
+     "tag#" &\r
+     "target_name#" &\r
+     "terminated#" &\r
+     "to_address#" &\r
+     "type_class#" &\r
+     "uet_address#" &\r
+     "unbiased_rounding#" &\r
+     "unchecked_access#" &\r
+     "unconstrained_array#" &\r
+     "universal_literal_string#" &\r
+     "unrestricted_access#" &\r
+     "vads_size#" &\r
+     "val#" &\r
+     "valid#" &\r
+     "value_size#" &\r
+     "version#" &\r
+     "wchar_t_size#" &\r
+     "wide_wide_width#" &\r
+     "wide_width#" &\r
+     "width#" &\r
+     "word_size#" &\r
+     "adjacent#" &\r
+     "ceiling#" &\r
+     "copy_sign#" &\r
+     "floor#" &\r
+     "fraction#" &\r
+     "image#" &\r
+     "input#" &\r
+     "machine#" &\r
+     "max#" &\r
+     "min#" &\r
+     "model#" &\r
+     "pred#" &\r
+     "remainder#" &\r
+     "rounding#" &\r
+     "succ#" &\r
+     "truncation#" &\r
+     "value#" &\r
+     "wide_image#" &\r
+     "wide_wide_image#" &\r
+     "wide_value#" &\r
+     "wide_wide_value#" &\r
+     "output#" &\r
+     "read#" &\r
+     "write#" &\r
+     "elab_body#" &\r
+     "elab_spec#" &\r
+     "storage_pool#" &\r
+     "base#" &\r
+     "class#" &\r
+     "ceiling_locking#" &\r
+     "inheritance_locking#" &\r
+     "fifo_queuing#" &\r
+     "priority_queuing#" &\r
+     "fifo_within_priorities#" &\r
+     "access_check#" &\r
+     "accessibility_check#" &\r
+     "discriminant_check#" &\r
+     "division_check#" &\r
+     "elaboration_check#" &\r
+     "index_check#" &\r
+     "length_check#" &\r
+     "overflow_check#" &\r
+     "range_check#" &\r
+     "storage_check#" &\r
+     "tag_check#" &\r
+     "all_checks#" &\r
+     "abort#" &\r
+     "abs#" &\r
+     "accept#" &\r
+     "and#" &\r
+     "all#" &\r
+     "array#" &\r
+     "at#" &\r
+     "begin#" &\r
+     "body#" &\r
+     "case#" &\r
+     "constant#" &\r
+     "declare#" &\r
+     "delay#" &\r
+     "do#" &\r
+     "else#" &\r
+     "elsif#" &\r
+     "end#" &\r
+     "entry#" &\r
+     "exception#" &\r
+     "exit#" &\r
+     "for#" &\r
+     "function#" &\r
+     "generic#" &\r
+     "goto#" &\r
+     "if#" &\r
+     "in#" &\r
+     "is#" &\r
+     "limited#" &\r
+     "loop#" &\r
+     "new#" &\r
+     "not#" &\r
+     "null#" &\r
+     "of#" &\r
+     "or#" &\r
+     "others#" &\r
+     "out#" &\r
+     "package#" &\r
+     "pragma#" &\r
+     "private#" &\r
+     "procedure#" &\r
+     "raise#" &\r
+     "record#" &\r
+     "rem#" &\r
+     "renames#" &\r
+     "return#" &\r
+     "reverse#" &\r
+     "select#" &\r
+     "separate#" &\r
+     "subtype#" &\r
+     "task#" &\r
+     "terminate#" &\r
+     "then#" &\r
+     "type#" &\r
+     "use#" &\r
+     "when#" &\r
+     "while#" &\r
+     "with#" &\r
+     "xor#" &\r
+     "divide#" &\r
+     "enclosing_entity#" &\r
+     "exception_information#" &\r
+     "exception_message#" &\r
+     "exception_name#" &\r
+     "file#" &\r
+     "import_address#" &\r
+     "import_largest_value#" &\r
+     "import_value#" &\r
+     "is_negative#" &\r
+     "line#" &\r
+     "rotate_left#" &\r
+     "rotate_right#" &\r
+     "shift_left#" &\r
+     "shift_right#" &\r
+     "shift_right_arithmetic#" &\r
+     "source_location#" &\r
+     "unchecked_conversion#" &\r
+     "unchecked_deallocation#" &\r
+     "to_pointer#" &\r
+     "abstract#" &\r
+     "aliased#" &\r
+     "protected#" &\r
+     "until#" &\r
+     "requeue#" &\r
+     "tagged#" &\r
+     "raise_exception#" &\r
+     "ada_roots#" &\r
+     "binder#" &\r
+     "binder_driver#" &\r
+     "body_suffix#" &\r
+     "builder#" &\r
+     "compiler#" &\r
+     "compiler_driver#" &\r
+     "compiler_kind#" &\r
+     "compute_dependency#" &\r
+     "cross_reference#" &\r
+     "default_linker#" &\r
+     "default_switches#" &\r
+     "dependency_option#" &\r
+     "exec_dir#" &\r
+     "executable#" &\r
+     "executable_suffix#" &\r
+     "extends#" &\r
+     "externally_built#" &\r
+     "finder#" &\r
+     "global_configuration_pragmas#" &\r
+     "gnatls#" &\r
+     "gnatstub#" &\r
+     "implementation#" &\r
+     "implementation_exceptions#" &\r
+     "implementation_suffix#" &\r
+     "include_option#" &\r
+     "language_processing#" &\r
+     "languages#" &\r
+     "library_dir#" &\r
+     "library_auto_init#" &\r
+     "library_gcc#" &\r
+     "library_interface#" &\r
+     "library_kind#" &\r
+     "library_name#" &\r
+     "library_options#" &\r
+     "library_reference_symbol_file#" &\r
+     "library_src_dir#" &\r
+     "library_symbol_file#" &\r
+     "library_symbol_policy#" &\r
+     "library_version#" &\r
+     "linker#" &\r
+     "local_configuration_pragmas#" &\r
+     "locally_removed_files#" &\r
+     "metrics#" &\r
+     "naming#" &\r
+     "object_dir#" &\r
+     "pretty_printer#" &\r
+     "project#" &\r
+     "separate_suffix#" &\r
+     "source_dirs#" &\r
+     "source_files#" &\r
+     "source_list_file#" &\r
+     "spec#" &\r
+     "spec_suffix#" &\r
+     "specification#" &\r
+     "specification_exceptions#" &\r
+     "specification_suffix#" &\r
+     "switches#" &\r
+     "unaligned_valid#" &\r
+     "interface#" &\r
+     "overriding#" &\r
+     "synchronized#" &\r
+     "#";\r
+\r
+   ---------------------\r
+   -- Generated Names --\r
+   ---------------------\r
+\r
+   --  This section lists the various cases of generated names which are\r
+   --  built from existing names by adding unique leading and/or trailing\r
+   --  upper case letters. In some cases these names are built recursively,\r
+   --  in particular names built from types may be built from types which\r
+   --  themselves have generated names. In this list, xxx represents an\r
+   --  existing name to which identifying letters are prepended or appended,\r
+   --  and a trailing n represents a serial number in an external name that\r
+   --  has some semantic significance (e.g. the n'th index type of an array).\r
+\r
+   --    xxxA    access type for formal xxx in entry param record   (Exp_Ch9)\r
+   --    xxxB    tag table for tagged type xxx                      (Exp_Ch3)\r
+   --    xxxB    task body procedure for task xxx                   (Exp_Ch9)\r
+   --    xxxD    dispatch table for tagged type xxx                 (Exp_Ch3)\r
+   --    xxxD    discriminal for discriminant xxx                   (Sem_Ch3)\r
+   --    xxxDn   n'th discr check function for rec type xxx         (Exp_Ch3)\r
+   --    xxxE    elaboration boolean flag for task xxx              (Exp_Ch9)\r
+   --    xxxE    dispatch table pointer type for tagged type xxx    (Exp_Ch3)\r
+   --    xxxE    parameters for accept body for entry xxx           (Exp_Ch9)\r
+   --    xxxFn   n'th primitive of a tagged type (named xxx)        (Exp_Ch3)\r
+   --    xxxJ    tag table type index for tagged type xxx           (Exp_Ch3)\r
+   --    xxxM    master Id value for access type xxx                (Exp_Ch3)\r
+   --    xxxP    tag table pointer type for tagged type xxx         (Exp_Ch3)\r
+   --    xxxP    parameter record type for entry xxx                (Exp_Ch9)\r
+   --    xxxPA   access to parameter record type for entry xxx      (Exp_Ch9)\r
+   --    xxxPn   pointer type for n'th primitive of tagged type xxx (Exp_Ch3)\r
+   --    xxxR    dispatch table pointer for tagged type xxx         (Exp_Ch3)\r
+   --    xxxT    tag table type for tagged type xxx                 (Exp_Ch3)\r
+   --    xxxT    literal table for enumeration type xxx             (Sem_Ch3)\r
+   --    xxxV    type for task value record for task xxx            (Exp_Ch9)\r
+   --    xxxX    entry index constant                               (Exp_Ch9)\r
+   --    xxxY    dispatch table type for tagged type xxx            (Exp_Ch3)\r
+   --    xxxZ    size variable for task xxx                         (Exp_Ch9)\r
+\r
+   --  TSS names\r
+\r
+   --    xxxDA   deep adjust routine for type xxx                   (Exp_TSS)\r
+   --    xxxDF   deep finalize routine for type xxx                 (Exp_TSS)\r
+   --    xxxDI   deep initialize routine for type xxx               (Exp_TSS)\r
+   --    xxxEQ   composite equality routine for record type xxx     (Exp_TSS)\r
+   --    xxxIP   initialization procedure for type xxx              (Exp_TSS)\r
+   --    xxxRA   RAs type access routine for type xxx               (Exp_TSS)\r
+   --    xxxRD   RAs type dereference routine for type xxx          (Exp_TSS)\r
+   --    xxxRP   Rep to Pos conversion for enumeration type xxx     (Exp_TSS)\r
+   --    xxxSA   array/slice assignment for controlled comp. arrays (Exp_TSS)\r
+   --    xxxSI   stream input attribute subprogram for type xxx     (Exp_TSS)\r
+   --    xxxSO   stream output attribute subprogram for type xxx    (Exp_TSS)\r
+   --    xxxSR   stream read attribute subprogram for type xxx      (Exp_TSS)\r
+   --    xxxSW   stream write attribute subprogram for type xxx     (Exp_TSS)\r
+\r
+   --  Implicit type names\r
+\r
+   --    TxxxT   type of literal table for enumeration type xxx     (Sem_Ch3)\r
+\r
+   --  (Note: this list is not complete or accurate ???)\r
+\r
+   ----------------------\r
+   -- Get_Attribute_Id --\r
+   ----------------------\r
+\r
+   function Get_Attribute_Id (N : Name_Id) return Attribute_Id is\r
+   begin\r
+      return Attribute_Id'Val (N - First_Attribute_Name);\r
+   end Get_Attribute_Id;\r
+\r
+   ------------------\r
+   -- Get_Check_Id --\r
+   ------------------\r
+\r
+   function Get_Check_Id (N : Name_Id) return Check_Id is\r
+   begin\r
+      return Check_Id'Val (N - First_Check_Name);\r
+   end Get_Check_Id;\r
+\r
+   -----------------------\r
+   -- Get_Convention_Id --\r
+   -----------------------\r
+\r
+   function Get_Convention_Id (N : Name_Id) return Convention_Id is\r
+   begin\r
+      case N is\r
+         when Name_Ada        => return Convention_Ada;\r
+         when Name_Assembler  => return Convention_Assembler;\r
+         when Name_C          => return Convention_C;\r
+         when Name_COBOL      => return Convention_COBOL;\r
+         when Name_CPP        => return Convention_CPP;\r
+         when Name_Fortran    => return Convention_Fortran;\r
+         when Name_Intrinsic  => return Convention_Intrinsic;\r
+         when Name_Java       => return Convention_Java;\r
+         when Name_Stdcall    => return Convention_Stdcall;\r
+         when Name_Stubbed    => return Convention_Stubbed;\r
+\r
+         --  If no direct match, then we must have a convention\r
+         --  identifier pragma that has specified this name.\r
+\r
+         when others          =>\r
+            for J in 1 .. Convention_Identifiers.Last loop\r
+               if N = Convention_Identifiers.Table (J).Name then\r
+                  return Convention_Identifiers.Table (J).Convention;\r
+               end if;\r
+            end loop;\r
+\r
+            raise Program_Error;\r
+      end case;\r
+   end Get_Convention_Id;\r
+\r
+   ---------------------------\r
+   -- Get_Locking_Policy_Id --\r
+   ---------------------------\r
+\r
+   function Get_Locking_Policy_Id (N : Name_Id) return Locking_Policy_Id is\r
+   begin\r
+      return Locking_Policy_Id'Val (N - First_Locking_Policy_Name);\r
+   end Get_Locking_Policy_Id;\r
+\r
+   -------------------\r
+   -- Get_Pragma_Id --\r
+   -------------------\r
+\r
+   function Get_Pragma_Id (N : Name_Id) return Pragma_Id is\r
+   begin\r
+      if N = Name_AST_Entry then\r
+         return Pragma_AST_Entry;\r
+      elsif N = Name_Interface then\r
+         return Pragma_Interface;\r
+      elsif N = Name_Storage_Size then\r
+         return Pragma_Storage_Size;\r
+      elsif N = Name_Storage_Unit then\r
+         return Pragma_Storage_Unit;\r
+      elsif N not in First_Pragma_Name .. Last_Pragma_Name then\r
+         return Unknown_Pragma;\r
+      else\r
+         return Pragma_Id'Val (N - First_Pragma_Name);\r
+      end if;\r
+   end Get_Pragma_Id;\r
+\r
+   ---------------------------\r
+   -- Get_Queuing_Policy_Id --\r
+   ---------------------------\r
+\r
+   function Get_Queuing_Policy_Id (N : Name_Id) return Queuing_Policy_Id is\r
+   begin\r
+      return Queuing_Policy_Id'Val (N - First_Queuing_Policy_Name);\r
+   end Get_Queuing_Policy_Id;\r
+\r
+   ------------------------------------\r
+   -- Get_Task_Dispatching_Policy_Id --\r
+   ------------------------------------\r
+\r
+   function Get_Task_Dispatching_Policy_Id (N : Name_Id)\r
+     return Task_Dispatching_Policy_Id is\r
+   begin\r
+      return Task_Dispatching_Policy_Id'Val\r
+        (N - First_Task_Dispatching_Policy_Name);\r
+   end Get_Task_Dispatching_Policy_Id;\r
+\r
+   ----------------\r
+   -- Initialize --\r
+   ----------------\r
+\r
+   procedure Initialize is\r
+      P_Index      : Natural;\r
+      Discard_Name : Name_Id;\r
+\r
+   begin\r
+      P_Index := Preset_Names'First;\r
+\r
+      loop\r
+         Name_Len := 0;\r
+\r
+         while Preset_Names (P_Index) /= '#' loop\r
+            Name_Len := Name_Len + 1;\r
+            Name_Buffer (Name_Len) := Preset_Names (P_Index);\r
+            P_Index := P_Index + 1;\r
+         end loop;\r
+\r
+         --  We do the Name_Find call to enter the name into the table, but\r
+         --  we don't need to do anything with the result, since we already\r
+         --  initialized all the preset names to have the right value (we\r
+         --  are depending on the order of the names and Preset_Names).\r
+\r
+         Discard_Name := Name_Find;\r
+         P_Index := P_Index + 1;\r
+         exit when Preset_Names (P_Index) = '#';\r
+      end loop;\r
+\r
+      --  Make sure that number of names in standard table is correct. If\r
+      --  this check fails, run utility program XSNAMES to construct a new\r
+      --  properly matching version of the body.\r
+\r
+      pragma Assert (Discard_Name = Last_Predefined_Name);\r
+\r
+      --  Initialize the convention identifiers table with the standard\r
+      --  set of synonyms that we recognize for conventions.\r
+\r
+      Convention_Identifiers.Init;\r
+\r
+      Convention_Identifiers.Append ((Name_Asm,      Convention_Assembler));\r
+      Convention_Identifiers.Append ((Name_Assembly, Convention_Assembler));\r
+\r
+      Convention_Identifiers.Append ((Name_Default,  Convention_C));\r
+      Convention_Identifiers.Append ((Name_External, Convention_C));\r
+\r
+      Convention_Identifiers.Append ((Name_DLL,      Convention_Stdcall));\r
+      Convention_Identifiers.Append ((Name_Win32,    Convention_Stdcall));\r
+   end Initialize;\r
+\r
+   -----------------------\r
+   -- Is_Attribute_Name --\r
+   -----------------------\r
+\r
+   function Is_Attribute_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Attribute_Name .. Last_Attribute_Name;\r
+   end Is_Attribute_Name;\r
+\r
+   -------------------\r
+   -- Is_Check_Name --\r
+   -------------------\r
+\r
+   function Is_Check_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Check_Name .. Last_Check_Name;\r
+   end Is_Check_Name;\r
+\r
+   ------------------------\r
+   -- Is_Convention_Name --\r
+   ------------------------\r
+\r
+   function Is_Convention_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      --  Check if this is one of the standard conventions\r
+\r
+      if N in First_Convention_Name .. Last_Convention_Name\r
+        or else N = Name_C\r
+      then\r
+         return True;\r
+\r
+      --  Otherwise check if it is in convention identifier table\r
+\r
+      else\r
+         for J in 1 .. Convention_Identifiers.Last loop\r
+            if N = Convention_Identifiers.Table (J).Name then\r
+               return True;\r
+            end if;\r
+         end loop;\r
+\r
+         return False;\r
+      end if;\r
+   end Is_Convention_Name;\r
+\r
+   ------------------------------\r
+   -- Is_Entity_Attribute_Name --\r
+   ------------------------------\r
+\r
+   function Is_Entity_Attribute_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Entity_Attribute_Name .. Last_Entity_Attribute_Name;\r
+   end Is_Entity_Attribute_Name;\r
+\r
+   --------------------------------\r
+   -- Is_Function_Attribute_Name --\r
+   --------------------------------\r
+\r
+   function Is_Function_Attribute_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in\r
+        First_Renamable_Function_Attribute ..\r
+          Last_Renamable_Function_Attribute;\r
+   end Is_Function_Attribute_Name;\r
+\r
+   ----------------------------\r
+   -- Is_Locking_Policy_Name --\r
+   ----------------------------\r
+\r
+   function Is_Locking_Policy_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Locking_Policy_Name .. Last_Locking_Policy_Name;\r
+   end Is_Locking_Policy_Name;\r
+\r
+   -----------------------------\r
+   -- Is_Operator_Symbol_Name --\r
+   -----------------------------\r
+\r
+   function Is_Operator_Symbol_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Operator_Name .. Last_Operator_Name;\r
+   end Is_Operator_Symbol_Name;\r
+\r
+   --------------------\r
+   -- Is_Pragma_Name --\r
+   --------------------\r
+\r
+   function Is_Pragma_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Pragma_Name .. Last_Pragma_Name\r
+        or else N = Name_AST_Entry\r
+        or else N = Name_Interface\r
+        or else N = Name_Storage_Size\r
+        or else N = Name_Storage_Unit;\r
+   end Is_Pragma_Name;\r
+\r
+   ---------------------------------\r
+   -- Is_Procedure_Attribute_Name --\r
+   ---------------------------------\r
+\r
+   function Is_Procedure_Attribute_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Procedure_Attribute .. Last_Procedure_Attribute;\r
+   end Is_Procedure_Attribute_Name;\r
+\r
+   ----------------------------\r
+   -- Is_Queuing_Policy_Name --\r
+   ----------------------------\r
+\r
+   function Is_Queuing_Policy_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Queuing_Policy_Name .. Last_Queuing_Policy_Name;\r
+   end Is_Queuing_Policy_Name;\r
+\r
+   -------------------------------------\r
+   -- Is_Task_Dispatching_Policy_Name --\r
+   -------------------------------------\r
+\r
+   function Is_Task_Dispatching_Policy_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Task_Dispatching_Policy_Name ..\r
+                  Last_Task_Dispatching_Policy_Name;\r
+   end Is_Task_Dispatching_Policy_Name;\r
+\r
+   ----------------------------\r
+   -- Is_Type_Attribute_Name --\r
+   ----------------------------\r
+\r
+   function Is_Type_Attribute_Name (N : Name_Id) return Boolean is\r
+   begin\r
+      return N in First_Type_Attribute_Name .. Last_Type_Attribute_Name;\r
+   end Is_Type_Attribute_Name;\r
+\r
+   ----------------------------------\r
+   -- Record_Convention_Identifier --\r
+   ----------------------------------\r
+\r
+   procedure Record_Convention_Identifier\r
+     (Id         : Name_Id;\r
+      Convention : Convention_Id)\r
+   is\r
+   begin\r
+      Convention_Identifiers.Append ((Id, Convention));\r
+   end Record_Convention_Identifier;\r
+\r
+end Snames;\r