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

13.7 Пакет System

Для каждой реализации существует библиотечный пакет, называемый System, который включает определения определённых характеристик, зависящих от конфигурации.

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

Существует следующий определяемый языком библиотечный пакет:
package System
with Pure is
type Name is implementation-defined-enumeration-type;
System_Name : constant Name := implementation-defined;
-- Числовые значения, зависящие от системы:
Min_Int : constant := root_integer'First;
Max_Int : constant := root_integer'Last;
Max_Binary_Modulus : constant := implementation-defined;
Max_Nonbinary_Modulus : constant := implementation-defined;
Max_Base_Digits : constant := root_real'Digits;
Max_Digits : constant := implementation-defined;
Max_Mantissa : constant := implementation-defined;
Fine_Delta : constant := implementation-defined;
Tick : constant := implementation-defined;
-- Объявления, связанные с хранением:
type Address is implementation-defined;
Null_Address : constant Address;
Storage_Unit : constant := implementation-defined;
Word_Size : constant := implementation-defined * Storage_Unit;
Memory_Size : constant := implementation-defined;
-- Сравнение адресов:
function "<" (Left, Right : Address) return Boolean
with Convention => Intrinsic;
function "<="(Left, Right : Address) return Boolean
with Convention => Intrinsic;
function ">" (Left, Right : Address) return Boolean
with Convention => Intrinsic;
function ">="(Left, Right : Address) return Boolean
with Convention => Intrinsic;
function "=" (Left, Right : Address) return Boolean
with Convention => Intrinsic;
-- function "/=" (Left, Right : Address) return Boolean;
-- "/=" неявно определён
-- Другие объявления, зависящие от системы:
type Bit_Order is (High_Order_First, Low_Order_First);
Default_Bit_Order : constant Bit_Order := implementation-defined;
-- Объявления, связанные с приоритетом (см. D.1):
subtype Any_Priority is Integer range implementation-defined;
subtype Priority is Any_Priority range Any_Priority'First ..
implementation-defined;
subtype Interrupt_Priority is Any_Priority range Priority'Last+1 ..
Any_Priority'Last;
Default_Priority : constant Priority :=
(Priority'First + Priority'Last)/2;
private
... -- не определено языком
end System;
Name — это перечислимый подтип. Значения типа Name представляют имена альтернативных конфигураций машины, обрабатываемых реализацией. System_Name представляет текущую конфигурацию машины.
Названные числа Fine_Delta и Tick имеют тип universal_real; остальные имеют тип universal_integer.
Значения именованных чисел:
Min_Int
Наименьшее (наиболее отрицательное) значение, разрешённое для выражений типа signed_integer_type_definition.
Max_Int
Наибольшее (наиболее положительное) значение, разрешённое для выражений типа signed_integer_type_definition.
Max_Binary_Modulus

Степень двойки, такая, что она и все меньшие положительные степени двойки разрешены в качестве модуля modular_type_definition.
Max_Nonbinary_Modulus

Значение, такое, что оно и все меньшие положительные целые числа разрешены в качестве модуля modular_type_definition.
Max_Base_Digits

Наибольшее значение, разрешённое для запрошенной десятичной точности в floating_point_definition.
Max_Digits
Наибольшее значение, разрешённое для запрошенной десятичной точности в floating_point_definition, не имеющей real_range_specification. Max_Digits меньше или равно Max_Base_Digits.
Max_Mantissa
Максимальное возможное количество двоичных разрядов в мантиссе машинных чисел пользовательского обычного типа с плавающей точкой. (Мантисса определена в Приложении G.)
Fine_Delta
Наименьший разрешённый дельта в ordinary_fixed_point_definition, имеющем real_range_specification range –1.0 .. 1.0.
Tick
Период в секундах, приблизительно соответствующий реальному интервалу времени, в течение которого значение Calendar.Clock остаётся постоянным.
Storage_Unit
Количество бит на элемент хранения.
Word_Size
Количество бит на слово.
Memory_Size
Значение, определённое реализацией, которое призвано отразить размер памяти конфигурации в элементах хранения.
Address — это определённый, не ограниченный тип с предварительно вычисляемым инициализацией (см. 10.2.1). Address представляет машинные адреса, способные адресовать отдельные элементы хранения. Null_Address — это адрес, отличный от адреса любого объекта или программного блока.
Default_Bit_Order должен быть статической константой. См. 13.5.3 для объяснения Bit_Order и Default_Bit_Order.

Разрешения реализации

Реализация может добавить дополнительные объявления, зависящие от реализации, в пакет System и его дочерние пакеты. Однако для реализации обычно лучше предоставлять дополнительную функциональность через определяемые реализацией дочерние пакеты System.

Рекомендации для реализации

Address должен быть типом private.
ПРИМЕЧАНИЕ Существуют также некоторые определённые языком дочерние пакеты System, определённые в других местах.


Spec-Zone.ru

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