Spec-Zone.ru › Ada 2022
Справочник по Ada (Ada 2022)

A.16.1 Пакеты каталогов. Имена файлов с иерархической структурой

Библиотечный пакет Directories.Hierarchical_File_Names — это необязательный пакет, предоставляющий операции для построения и разложения имён файлов для целей с иерархической системой имён файлов.

Статическая семантика

При наличии библиотечный пакет Directories.Hierarchical_File_Names имеет следующее объявление:
package Ada.Directories.Hierarchical_File_Names
with Nonblocking, Global => in out synchronized 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;
function Containing_Directory (Name : in String) return String
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;
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;
Возвращает имя внешнего файла с указанным 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 должны предоставляться для систем с иерархическими именами файлов и не должны предоставляться для других систем.
ПРИМЕЧАНИЕ 1 Эти операции работают с именами файлов, а не с внешними файлами. Файлы, идентифицированные этими операциями, не обязательно существуют. Name_Error возбуждается только как указано или если имя файла имеет неправильный формат и не может идентифицировать файл. Результат этих операций зависит только от их параметров.
ПРИМЕЧАНИЕ 2 Containing_Directory возбуждает Use_Error, если Name не имеет содержащего каталога, включая случаи, когда любой из Is_Simple_Name, Is_Root_Directory_Name, Is_Parent_Directory_Name или Is_Current_Directory_Name вернёт True.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API