File names are stored in the names table and this type is used to
indicate that a Name_Id value is being used to hold a simple file name
(which does not include any directory information).
Path names are stored in the names table and this type is used to
indicate that a Name_Id value is being used to hold a path name (that
may contain directory information).
Unit_Name_Type
typeUnit_Name_TypeisnewName_Id;
Unit names are stored in the names table and this type is used to
indicate that a Name_Id value is being used to hold a unit name, which
terminates in %b for a body or %s for a spec.
The special File_Name_Type value Error_File_Name is used to indicate
a unit name where some previous processing has found an error.
Error_Name
Error_Name:constantName_Id:=Names_Low_Bound+1;
The special Name_Id value Error_Name is used in the parser to
indicate that some kind of error was encountered in scanning out
the relevant name, so it does not have a representable label.
This buffer is used to set the name to be stored in the table for the
Name_Find call, and to retrieve the name for the Get_Name_String call.
The limit here is intended to be an infinite value that ensures that we
never overflow the buffer (names this long are too absurd to worry).
Name_Len
Name_Len:Natural:=0;
Length of name stored in Name_Buffer. Used as an input parameter for
Name_Find, and as an output value by Get_Name_String, or Write_Name.
Note: in normal usage, all users of Name_Buffer/Name_Len are expected
to initialize Name_Len appropriately. The reason we preinitialize to
zero here is that some circuitry (e.g. Osint.Write_Program_Name) does
a save/restore on Name_Len and Name_Buffer (1 .. Name_Len), and we do
not want some arbitrary junk value to result in saving an arbitrarily
long slice which would waste time and blow the stack.