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

13.7 Пакет System

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

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

Существует следующий языковой библиотечный пакет:
package System is
pragma Pure(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
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
Наименьший допустимый 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.
ПРИМЕЧАНИЯ
17 Существуют также некоторые определяемые языком дочерние пакеты пакета System, определенные в других местах.


Spec-Zone.ru

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