===================================================================
@@ -2521,8 +2521,9 @@
Add_Str_To_Name_Buffer ("has dimension ");
end if;
- Add_String_To_Name_Buffer
- (From_Dim_To_Str_Of_Dim_Symbols (Dims_Of_N, System, True));
+ Append
+ (Global_Name_Buffer,
+ From_Dim_To_Str_Of_Dim_Symbols (Dims_Of_N, System, True));
-- N is dimensionless
@@ -2562,12 +2563,12 @@
Name_Len := 0;
- Add_String_To_Name_Buffer (String_From_Numeric_Literal (N));
+ Append (Global_Name_Buffer, String_From_Numeric_Literal (N));
-- Insert a blank between the literal and the symbol
Add_Str_To_Name_Buffer (" ");
- Add_String_To_Name_Buffer (Symbol_Of (Typ));
+ Append (Global_Name_Buffer, Symbol_Of (Typ));
Error_Msg_Name_1 := Name_Find;
Error_Msg_N ("assumed to be%%??", N);
===================================================================
@@ -75,15 +75,10 @@
-- Release to get a snapshot of the tables and to restore them to their
-- previous situation.
- -------------------------------
- -- Add_String_To_Name_Buffer --
- -------------------------------
+ ------------
+ -- Append --
+ ------------
- procedure Add_String_To_Name_Buffer (S : String_Id) is
- begin
- Append (Global_Name_Buffer, S);
- end Add_String_To_Name_Buffer;
-
procedure Append (Buf : in out Bounded_String; S : String_Id) is
begin
for X in 1 .. String_Length (S) loop
@@ -324,6 +319,17 @@
return Strings.Table (Id).Length;
end String_Length;
+ --------------------
+ -- String_To_Name --
+ --------------------
+
+ function String_To_Name (S : String_Id) return Name_Id is
+ Buf : Bounded_String;
+ begin
+ Append (Buf, S);
+ return Name_Find (Buf);
+ end String_To_Name;
+
---------------------------
-- String_To_Name_Buffer --
---------------------------
===================================================================
@@ -47,9 +47,9 @@
-- is implemented in the scanner.
-- There is no guarantee that hashing is used in the implementation, although
+-- it may be. This means that the caller cannot count on having the same Id
-- value for two identical strings stored separately and also cannot count on
+-- the two such Id values being different.
Null_String_Id : String_Id;
-- Gets set to a null string with length zero
@@ -119,18 +119,18 @@
function String_Equal (L, R : String_Id) return Boolean;
-- Determines if two string literals represent the same string
- procedure String_To_Name_Buffer (S : String_Id);
- -- Place characters of given string in Name_Buffer, setting Name_Len.
- -- Error if any characters are out of Character range. Does not attempt
- -- to do any encoding of any characters.
+ function String_To_Name (S : String_Id) return Name_Id;
+ -- Convert String_Id to Name_Id
procedure Append (Buf : in out Bounded_String; S : String_Id);
-- Append characters of given string to Buf. Error if any characters are
- -- out of Character range. Does not attempt to do any encoding of any
+ -- out of Character range. Does not attempt to do any encoding of
-- characters.
- procedure Add_String_To_Name_Buffer (S : String_Id);
- -- Same as Append (Global_Name_Buffer, S)
+ procedure String_To_Name_Buffer (S : String_Id);
+ -- Place characters of given string in Name_Buffer, setting Name_Len.
+ -- Error if any characters are out of Character range. Does not attempt
+ -- to do any encoding of any characters.
function String_Chars_Address return System.Address;
-- Return address of String_Chars table (used by Back_End call to Gigi)
===================================================================
@@ -5941,9 +5941,7 @@
procedure Check_Optional_Identifier (Arg : Node_Id; Id : String) is
begin
- Name_Buffer (1 .. Id'Length) := Id;
- Name_Len := Id'Length;
- Check_Optional_Identifier (Arg, Name_Find);
+ Check_Optional_Identifier (Arg, Name_Find (Id));
end Check_Optional_Identifier;
-------------------------------------
@@ -8300,8 +8298,7 @@
Nam : Name_Id;
begin
- String_To_Name_Buffer (Strval (Expression (Arg3)));
- Nam := Name_Find;
+ Nam := String_To_Name (Strval (Expression (Arg3)));
Elmt := First_Elmt (Predefined_Float_Types);
while Present (Elmt) and then Chars (Node (Elmt)) /= Nam loop
@@ -9223,8 +9220,7 @@
begin
if Prag_Id = Pragma_Import then
- String_To_Name_Buffer (Strval (Expr_Value_S (Ext_Nam)));
- Nam := Name_Find;
+ Nam := String_To_Name (Strval (Expr_Value_S (Ext_Nam)));
E := Entity_Id (Get_Name_Table_Int (Nam));
if Nam /= Chars (Subprogram_Def)
@@ -10273,32 +10269,18 @@
-- No_Dependence => Ada.Execution_Time.Group_Budget
-- No_Dependence => Ada.Execution_Time.Timers
- -- ??? The use of Name_Buffer here is suspicious. The names should
- -- be registered in snames.ads-tmpl and used to build the qualified
- -- names of units.
-
if Ada_Version >= Ada_2005 then
- Name_Buffer (1 .. 3) := "ada";
- Name_Len := 3;
+ Pref_Id := Make_Identifier (Loc, Name_Find ("ada"));
+ Sel_Id := Make_Identifier (Loc, Name_Find ("execution_time"));
- Pref_Id := Make_Identifier (Loc, Name_Find);
-
- Name_Buffer (1 .. 14) := "execution_time";
- Name_Len := 14;
-
- Sel_Id := Make_Identifier (Loc, Name_Find);
-
Pref :=
Make_Selected_Component
(Sloc => Loc,
Prefix => Pref_Id,
Selector_Name => Sel_Id);
- Name_Buffer (1 .. 13) := "group_budgets";
- Name_Len := 13;
+ Sel_Id := Make_Identifier (Loc, Name_Find ("group_budgets"));
- Sel_Id := Make_Identifier (Loc, Name_Find);
-
Nod :=
Make_Selected_Component
(Sloc => Loc,
@@ -10310,11 +10292,8 @@
Warn => Treat_Restrictions_As_Warnings,
Profile => Ravenscar);
- Name_Buffer (1 .. 6) := "timers";
- Name_Len := 6;
+ Sel_Id := Make_Identifier (Loc, Name_Find ("timers"));
- Sel_Id := Make_Identifier (Loc, Name_Find);
-
Nod :=
Make_Selected_Component
(Sloc => Loc,
@@ -10332,27 +10311,17 @@
-- No_Dependence => System.Multiprocessors.Dispatching_Domains
if Ada_Version >= Ada_2012 then
- Name_Buffer (1 .. 6) := "system";
- Name_Len := 6;
+ Pref_Id := Make_Identifier (Loc, Name_Find ("system"));
+ Sel_Id := Make_Identifier (Loc, Name_Find ("multiprocessors"));
- Pref_Id := Make_Identifier (Loc, Name_Find);
-
- Name_Buffer (1 .. 15) := "multiprocessors";
- Name_Len := 15;
-
- Sel_Id := Make_Identifier (Loc, Name_Find);
-
Pref :=
Make_Selected_Component
(Sloc => Loc,
Prefix => Pref_Id,
Selector_Name => Sel_Id);
- Name_Buffer (1 .. 19) := "dispatching_domains";
- Name_Len := 19;
+ Sel_Id := Make_Identifier (Loc, Name_Find ("dispatching_domains"));
- Sel_Id := Make_Identifier (Loc, Name_Find);
-
Nod :=
Make_Selected_Component
(Sloc => Loc,
===================================================================
@@ -800,7 +800,7 @@
and then No (Address_Clause (E))
and then not Has_Suffix
then
- Add_String_To_Name_Buffer (Strval (Interface_Name (E)));
+ Append (Global_Name_Buffer, Strval (Interface_Name (E)));
-- All other cases besides the interface name case