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

13.7 Пакет System

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

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

Существует следующий пакет библиотеки, определяемый языком:

package System is
pragma Preelaborate(System);
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;
function "<="(Left, Right : Address) return Boolean;
function ">" (Left, Right : Address) return Boolean;
function ">="(Left, Right : Address) return Boolean;
function "=" (Left, Right : Address) return Boolean;
-- function "/=" (Left, Right : Address) return Boolean;
-- "/=" неявно определен
pragma Convention(Intrinsic, "<");
... -- и так далее для всех подпрограмм, определённых языком в этом пакете
-- Другие объявления, зависящие от системы:
type Bit_Order is (High_Order_First, Low_Order_First);
Default_Bit_Order : constant Bit_Order;
-- Объявления, связанные с приоритетами (см. 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 — определённого, не ограниченного типа. Address представляет машинные адреса, способные адресовать отдельные элементы хранения. Null_Address — это адрес, отличный от адреса любого объекта или программной единицы.
См. 13.5.3 для объяснения Bit_Order и Default_Bit_Order.

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

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

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

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


Spec-Zone.ru

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