Справочник Ada 2012
A.16.1 Пакеты каталогов.Имена_файлов_иерархической_структуры
Библиотечный пакет Directories.Hierarchical_File_Names — это необязательный пакет, предоставляющий операции для построения и разложения имён файлов для целей с иерархическими именами файлов.
Статическая семантика
Если предоставлен, библиотечный пакет Directories.Hierarchical_File_Names имеет следующее объявление:
package Ada.Directories.Hierarchical_File_Names is
function Is_Simple_Name (Name : in String) return Boolean;
function Is_Root_Directory_Name (Name : in String) return Boolean;
function Is_Parent_Directory_Name (Name : in String) return Boolean;
function Is_Current_Directory_Name (Name : in String) return Boolean;
function Is_Full_Name (Name : in String) return Boolean;
function Is_Relative_Name (Name : in String) return Boolean;
function Simple_Name (Name : in String) return String
renames Ada.Directories.Simple_Name;
renames Ada.Directories.Simple_Name;
function Containing_Directory (Name : in String) return String
renames Ada.Directories.Containing_Directory;
renames Ada.Directories.Containing_Directory;
function Initial_Directory (Name : in String) return String;
function Relative_Name (Name : in String) return String;
function Compose (Directory : in String := "";
Relative_Name : in String;
Extension : in String := "") return String;
Relative_Name : in String;
Extension : in String := "") return String;
end Ada.Directories.Hierarchical_File_Names;
В дополнение к операциям, предоставляемым пакетом Directories.Hierarchical_File_Names, могут быть использованы операции пакета Directories с иерархическими именами файлов. В частности, функции Full_Name, Base_Name и Extension предоставляют дополнительные возможности для иерархических имён файлов.
function Is_Simple_Name (Name : in String) return Boolean;
Возвращает True, если Name — простое имя, и False в противном случае.
function Is_Root_Directory_Name (Name : in String) return Boolean;
Возвращает True, если Name синтаксически является корневым (каталогом, который не может быть далее разложен), и False в противном случае.
function Is_Parent_Directory_Name (Name : in String) return Boolean;
Возвращает True, если Name может быть использовано для символического обозначения родительского каталога любого каталога, и False в противном случае.
function Is_Current_Directory_Name (Name : in String) return Boolean;
Возвращает True, если Name может быть использовано для символического обозначения самого каталога для любого каталога, и False в противном случае.
function Is_Full_Name (Name : in String) return Boolean;
Возвращает True, если левая часть каталога имени Name является корневой, и False в противном случае.
function Is_Relative_Name (Name : in String) return Boolean;
Возвращает True, если Name позволяет идентифицировать внешний файл (включая каталоги и специальные файлы), но не является полным именем, и False в противном случае.
function Initial_Directory (Name : in String) return String;
Возвращает левую часть каталога в Name. То есть, возвращает имя корневого каталога (для полного имени) или имя родительского каталога, текущего каталога или простого имени (для относительного имени). Исключение Name_Error распространяется, если строка, заданная как Name, не позволяет идентифицировать внешний файл (включая каталоги и специальные файлы).
function Relative_Name (Name : in String) return String;
Возвращает всё имя файла, за исключением части Initial_Directory. Исключение Name_Error распространяется, если строка, заданная как Name, не позволяет идентифицировать внешний файл (включая каталоги и специальные файлы), или если Name имеет одну часть (это включает в себя, если любой из Is_Simple_Name, Is_Root_Directory_Name, Is_Parent_Directory_Name или Is_Current_Directory_Name являются True).
function Compose (Directory : in String := "";
Relative_Name : in String;
Extension : in String := "") return String;
Relative_Name : in String;
Extension : in String := "") return String;
Возвращает имя внешнего файла с указанным Directory, Relative_Name и Extension. Исключение Name_Error распространяется, если заданная строка Directory не является пустой строкой и не позволяет идентифицировать каталог, или если Is_Relative_Name (Relative_Name) является False, или если заданная строка Extension не является пустой строкой и не является возможным расширением, или если Extension не является пустой строкой и Simple_Name (Relative_Name) не является базовым именем.
Результат Compose является полным именем, если Is_Full_Name (Directory) равно True; в противном случае — относительное имя.
Рекомендации по реализации
Directories.Hierarchical_File_Names должны предоставляться для систем с иерархическим именованием файлов и не должны предоставляться для других систем.
ПРИМЕЧАНИЯ
46 Эти операции работают с именами файлов, а не с внешними файлами. Файлы, идентифицируемые этими операциями, не обязательно должны существовать. Name_Error генерируется только как указано или если имя файла имеет неправильный формат и не может идентифицировать файл. Результат этих операций зависит только от их параметров.
47 Containing_Directory вызывает Use_Error, если Name не имеет содержащего каталога, включая случаи, когда любой из Is_Simple_Name, Is_Root_Directory_Name, Is_Parent_Directory_Name или Is_Current_Directory_Name верны.