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

К.2 Атрибуты, определённые языком

Этот подраздел содержит сводку определений атрибутов, определённых языком. Атрибуты — это свойства сущностей, которые могут быть запрошены программой Ada.
P'Access
Для префикса P, обозначающего подпрограмму:
P'Access возвращает значение доступа, которое обозначает подпрограмму, обозначаемую P. Тип P'Access — это тип доступа к подпрограмме (S), определяемый ожидаемым типом. См. 3.10.2.
X'Access
Для префикса X, обозначающего алиасированный вид объекта:
X'Access возвращает значение доступа, которое обозначает объект, обозначаемый X. Тип X'Access — это тип доступа к объекту, определяемый ожидаемым типом. Ожидаемый тип должен быть общим типом доступа. См. 3.10.2.
X'Address
Для префикса X, обозначающего объект, программный блок или метку:
Обозначает адрес первого из элементов памяти, выделенных для X. Для программного блока или метки это значение относится к машинному коду, связанному с соответствующим телом или выражением. Значение этого атрибута имеет тип System.Address. См. 13.3.
S'Adjacent
Для каждого подтипа S типа с плавающей точкой T:
S'Adjacent обозначает функцию со следующим определением:
function S'Adjacent (X, Towards : T)
return T
Если Towards = X, функция возвращает X; в противном случае она возвращает машинное число типа T, смежное с X в направлении Towards, если такое число существует. Если результат выйдет за пределы базового диапазона S, возникает Constraint_Error. Когда T'Signed_Zeros равно True, нулевой результат имеет знак X. Когда Towards равно нулю, его знак не влияет на результат. См. A.5.3.
S'Aft
Для каждого подтипа с фиксированной точкой S:
S'Aft возвращает количество десятичных знаков после десятичной точки, необходимое для размещения delta подтипа S, если delta подтипа S больше 0.1, в противном случае атрибут возвращает значение один. (S'Aft — это наименьшее положительное целое число N, для которого (10**N)*S'Delta больше или равно одному.) Значение этого атрибута имеет тип universal_integer. См. 3.5.10.
S'Alignment
Для каждого подтипа S:
Значение этого атрибута имеет тип universal_integer и неотрицательно.
Для объекта X подтипа S, если S'Alignment не равен нулю, то X'Alignment — это ненулевое целое кратное S'Alignment, если не указано иное пунктом представления. См. 13.3.
X'Alignment
Для префикса X, обозначающего объект:
Значение этого атрибута имеет тип universal_integer и неотрицательно; ноль означает, что объект не обязательно выровнен по границе элемента хранения. Если X'Alignment не равен нулю, то X выровнен по границе единицы хранения, и X'Address является целым кратным X'Alignment (то есть, остаток от деления Address на Alignment равен нулю).
Этот абзац был удалён. См. 13.3.
S'Base
Для каждого скалярного подтипа S:
S'Base обозначает неявный подтип типа S. Этот неявный подтип называется базовым подтипом типа. См. 3.5.
S'Bit_Order
Для каждого конкретного подтипа записи S:
Обозначает порядок битов для типа S. Значение этого атрибута имеет тип System.Bit_Order. См. 13.5.3.
P'Body_Version

Для префикса P, статически обозначающего программный блок:
Возвращает значение предопределённого типа String, которое идентифицирует версию единицы компиляции, содержащей тело (но не любые подблоки) программного блока. См. E.3.
T'Callable
Для префикса T типа задачи (после любого неявного разыменования):
Возвращает значение True, когда задача, обозначаемая T, выполнима, и False в противном случае. См. 9.9.
E'Caller
Для префикса E, обозначающего объявление_входной_точки:
Возвращает значение типа Task_Id, которое идентифицирует задачу, вызов которой сейчас обрабатывается. Использование этого атрибута разрешено только внутри операции_приёма или тела_входной_точки после барьера_входной_точки, соответствующих объявлению_входной_точки, обозначаемой E. См. C.7.1.
S'Ceiling
Для каждого подтипа S типа с плавающей точкой T:
S'Ceiling обозначает функцию со следующим определением:
function S'Ceiling (X : T)
return T
Функция возвращает значение Ceiling(X), то есть наименьшее (наиболее отрицательное) целое значение, большее или равное X. Когда X равно нулю, результат имеет знак X; в противном случае нулевой результат имеет отрицательный знак, когда S'Signed_Zeros равно True. См. A.5.3.
S'Class
Для каждого подтипа S помеченного типа T (конкретного или класса-типа):
S'Class обозначает подтип типа класса (называемого T'Class в этом документе) для класса, укоренённого в T (или если S уже обозначает подтип класса-типа, то S'Class совпадает с S).
S'Class не ограничен. Однако, если S ограничен, то значениями S'Class являются только те, которые, при преобразовании к типу T, относятся к S. См. 3.9.
S'Class
Для каждого подтипа S не помеченного частного типа, полный вид которого помечен:
Обозначает подтип класса-типа, соответствующий полному виду S. Этот атрибут разрешён только с начала частной части, в которой объявлен полный вид, до объявления полного вида. После полного вида можно использовать атрибут Class полного вида. См. 7.3.1.
X'Component_Size

Для префикса X, обозначающего подтип массива или объект массива (после любого неявного разыменования):
Обозначает размер в битах компонентов типа X. Значение этого атрибута имеет тип universal_integer. См. 13.3.
S'Compose
Для каждого подтипа S типа с плавающей точкой T:
S'Compose обозначает функцию со следующим определением:
function S'Compose (Fraction : T;
Exponent : universal_integer)
return T
Пусть v — значение Fraction · T'Machine_RadixExponent–k, где k — нормализованный показатель степени Fraction. Если v — машинное число типа T или |v| ≥ T'Model_Small, функция возвращает v; в противном случае она возвращает одно из машинных чисел типа T, смежных с v. Constraint_Error может быть вызван, если v выходит за пределы базового диапазона S. Нулевой результат имеет знак Fraction, когда S'Signed_Zeros равно True. См. A.5.3.
A'Constrained
Для префикса A, являющегося типом с различением (после любого неявного приведения):
Возвращает значение True, если A обозначает константу, значение, помеченный объект или ограниченную переменную, и False в противном случае. Значение этого атрибута имеет предопределённый тип Boolean. См. 3.7.2.
S'Copy_Sign
Для каждого подтипа S вещественного типа T:
S'Copy_Sign обозначает функцию со следующим описанием:
function S'Copy_Sign (Value, Sign : T)
return T
Если значение Value отлично от нуля, функция возвращает результат, модуль которого равен модулю Value, а знак — знаку Sign; в противном случае она возвращает ноль. Ошибка Constraint_Error может быть поднята, если результат выходит за пределы базового диапазона S. Результат равен нулю, и знак равен знаку Sign, когда S'Signed_Zeros равен True. См. A.5.3.
E'Count
Для префикса E, обозначающего вход задачи или защищённого блока:
Возвращает количество вызовов, в настоящее время ожидающих обработки на входе E текущего экземпляра блока. Значение этого атрибута имеет тип universal_integer. См. 9.9.
S'Definite
Для префикса S, обозначающего формальный неопределённый подтип:
S'Definite возвращает True, если фактический подтип, соответствующий S, является определённым; в противном случае возвращает False. Значение этого атрибута имеет предопределённый тип Boolean. См. 12.5.1.
S'Delta
Для каждого подтипа фиксированной точки S:
S'Delta обозначает дельта подтипа фиксированной точки S. Значение этого атрибута имеет тип universal_real. См. 3.5.10.
S'Denorm
Для каждого подтипа S вещественного типа T:
Возвращает значение True, если каждое значение, представимое в форме
± mantissa · T'Machine_RadixT'Machine_Emin
где mantissa — ненулевая T'Machine_Mantissa-разрядная дробь в системе счисления T'Machine_Radix, первая цифра которой равна нулю, является машинным числом (см. 3.5.7) типа T; в противном случае возвращает значение False. Значение этого атрибута имеет предопределённый тип Boolean. См. A.5.3.
S'Digits
Для каждого подтипа вещественного типа S:
S'Digits обозначает требуемую десятичную точность для подтипа S. Значение этого атрибута имеет тип universal_integer. См. 3.5.8.
S'Digits
Для каждого подтипа десятичной фиксированной точки S:
S'Digits обозначает количество разрядов десятичной фиксированной точки S, что соответствует количеству десятичных разрядов, которые могут быть представлены в объектах подтипа. Значение этого атрибута имеет тип universal_integer. См. 3.5.10.
S'Enum_Rep
Для каждого дискретного подтипа S:
S'Enum_Rep обозначает функцию со следующим описанием:
function S'Enum_Rep (Arg : S'Base) return universal_integer
Эта функция возвращает значение представления значения Arg как значение типа universal_integer. Значение представления — это внутренний код, указанный в пункте представления перечисления, если таковой имеется, для типа, соответствующего значению Arg, и в противном случае это порядковый номер значения. См. 13.4.
S'Enum_Val
Для каждого дискретного подтипа S:
S'Enum_Val обозначает функцию со следующим описанием:
function S'Enum_Val (Arg : universal_integer) return S'Base
Эта функция возвращает значение типа S, значение представления которого равно значению Arg. При вычислении вызова S'Enum_Val, если нет значения в базовом диапазоне его типа с заданным значением представления, поднимается ошибка Constraint_Error. См. 13.4.
S'Exponent
Для каждого подтипа S вещественного типа T:
S'Exponent обозначает функцию со следующим описанием:
function S'Exponent (X : T)
return universal_integer
Функция возвращает нормализованный показатель степени X. См. A.5.3.
S'External_Tag

Для каждого подтипа S помеченного типа T (специфического или универсального):
S'External_Tag обозначает внешнее строковое представление для S'Tag; оно имеет предопределённый тип String. External_Tag может быть указан для конкретного помеченного типа с помощью attribute_definition_clause; выражение такого пункта должно быть статическим. По умолчанию внешнее представление тега определяется реализацией. См. 13.13.2. См. 13.3.
A'First
Для префикса A, являющегося массивом (после любого неявного приведения), или обозначает ограниченный подтип массива:
A'First обозначает нижнюю границу первого диапазона индексов; его тип — соответствующий тип индекса. См. 3.6.2.
S'First
Для каждого скалярного подтипа S:
S'First обозначает нижнюю границу диапазона S. Значение этого атрибута имеет тип S. См. 3.5.
A'First(N)
Для префикса A, являющегося массивом (после любого неявного приведения), или обозначает ограниченный подтип массива:
A'First(N) обозначает нижнюю границу N-го диапазона индексов; его тип — соответствующий тип индекса. См. 3.6.2.
R.C'First_Bit

Для компонента C составного объекта R, не являющегося массивом:
Если для составного типа применяется порядок битов, отличный от стандартного, и если component_clause указывает расположение C, обозначает значение, заданное для first_bit component_clause; в противном случае обозначает смещение, от начала первого из элементов хранения, занимаемых C, первого бита, занимаемого C. Это смещение измеряется в битах. Первый бит элемента хранения имеет номер ноль. Значение этого атрибута имеет тип universal_integer. См. 13.5.2.
S'First_Valid

Для каждого статического дискретного подтипа S, для которого существует хотя бы одно значение, принадлежащее S, удовлетворяющее предиката S:
S'First_Valid обозначает наименьшее значение, которое принадлежит S и удовлетворяет предикатам S. Значение этого атрибута имеет тип S. См. 3.5.5.
S'Floor
Для каждого подтипа S вещественного типа T:
S'Floor обозначает функцию со следующим описанием:
function S'Floor (X : T)
return T
Функция возвращает значение Floor(X), то есть наибольшее (наибольшее положительное) целое значение, меньшее или равное X. Когда X равно нулю, результат имеет знак X; результат равен нулю в противном случае имеет положительный знак. См. A.5.3.
S'Fore
Для каждого подтипа фиксированной точки S:
S'Fore возвращает минимальное количество символов, необходимых перед десятичной точкой для десятичного представления любого значения подтипа S, предполагая, что представление не включает показатель степени, но включает префикс длиной в один символ, который является либо знаком минус, либо пробелом. (Это минимальное количество не включает излишние нули или подчёркивания и составляет не менее 2.) Значение этого атрибута имеет тип universal_integer. См. 3.5.10.
S'Fraction
Для каждого подтипа S вещественного типа T:
S'Fraction обозначает функцию со следующим описанием:
function S'Fraction (X : T)
return T
Функция возвращает значение X · T'Machine_Radix–k, где k — нормированный порядок X. Результат равен нулю, что может произойти только при X = 0, и имеет знак X. См. A.5.3.
X'Has_Same_Storage

Для префикса X, обозначающего объект:
X'Has_Same_Storage обозначает функцию со следующим описанием:
function X'Has_Same_Storage (Arg : any_type)
return Boolean
Фактический параметр должен быть именем, обозначающим объект. Объект, обозначаемый фактическим параметром, может быть любого типа. Эта функция оценивает имена вовлечённых объектов. Она возвращает True, если представление объекта, обозначаемого фактическим параметром, занимает ровно те же биты, что и представление объекта, обозначаемого X, и объекты занимают как минимум один бит; в противном случае возвращает False. См. 13.3.
E'Identity
Для префикса E, обозначающего исключение:
E'Identity возвращает уникальную идентификацию исключения. Тип этого атрибута — Exception_Id. См. 11.4.1.
T'Identity
Для префикса T, являющегося типом задачи (после любого неявного разыменования):
Возвращает значение типа Task_Id, которое идентифицирует задачу, обозначаемую T. См. C.7.1.
S'Image
Для каждого подтипа S типа T:
S'Image обозначает функцию со следующим описанием:
function S'Image(Arg : S'Base)
return String
S'Image вызывает S'Put_Image, передавая Arg (который обычно хранит последовательность значений символов в буфере текста), а затем возвращает результат извлечения содержимого этого буфера с помощью функции Get. См. 4.10.
X'Image
Для префикса X типа T, отличного от universal_real или universal_fixed:
X'Image обозначает результат вызова функции S'Image с Arg, являющимся X, где S — номинальный подтип X. См. 4.10.
E'Index
Для префикса E, обозначающего объявление записи семейства записей:
В выражении предопределения или постусловия для семейства записей E обозначает значение индекса записи для вызова E. Номинальный подтип этого атрибута — подтип индекса записи. См. 6.1.1.
S'Class'Input
Для каждого подтипа S'Class класса-типа T'Class:
S'Class'Input обозначает функцию со следующим описанием:
function S'Class'Input(
Stream : not null access Ada.Streams.Root_Stream_Type'Class)
return T'Class
Сначала считывает внешний тег из Stream и определяет соответствующий внутренний тег (вызывая Tags.Descendant_Tag(String'Input(Stream), S'Tag), что может вызвать Tag_Error — см. 3.9), а затем переходит к подпрограмме, обозначаемой атрибутом Input соответствующего типа, идентифицированного внутренним тегом; возвращает этот результат. Если тип, идентифицированный внутренним тегом, абстрактен, то поднимается Constraint_Error. См. 13.13.2.
S'Input
Для каждого подтипа S конкретного типа T:
S'Input обозначает функцию со следующим описанием:
function S'Input(
Stream : not null access Ada.Streams.Root_Stream_Type'Class)
return T
S'Input считывает и возвращает одно значение из Stream, используя любые границы или дискриминанты, записанные соответствующим S'Output, чтобы определить, сколько считывать. См. 13.13.2.
A'Last
Для префикса A типа массива (после любого неявного разыменования) или обозначающего ограниченный подтип массива:
A'Last обозначает верхнюю границу первого диапазона индексов; его тип — соответствующий тип индекса. См. 3.6.2.
S'Last
Для каждого скалярного подтипа S:
S'Last обозначает верхнюю границу диапазона S. Значение этого атрибута — типа S. См. 3.5.
A'Last(N)
Для префикса A типа массива (после любого неявного разыменования) или обозначающего ограниченный подтип массива:
A'Last(N) обозначает верхнюю границу N-го диапазона индексов; его тип — соответствующий тип индекса. См. 3.6.2.
R.C'Last_Bit
Для компонента C составного, не массива, объекта R:
Если для составного типа применяется нестандартный порядок бит и если component_clause указывает положение C, обозначает значение, заданное для last_bit component_clause; в противном случае обозначает смещение от начала первого из элементов хранения, занимаемых C, до последнего бита, занимаемого C. Это смещение измеряется в битах. Значение этого атрибута имеет тип universal_integer. См. 13.5.2.
S'Last_Valid

Для каждого статического дискретного подтипа S, для которого существует как минимум одно значение, принадлежащее S, удовлетворяющее предикат S:
S'Last_Valid обозначает наибольшее значение, принадлежащее S и удовлетворяющее предикатам S. Значение этого атрибута — типа S. См. 3.5.5.
S'Leading_Part

Для каждого подтипа S типа с плавающей запятой T:
S'Leading_Part обозначает функцию со следующим описанием:
function S'Leading_Part (X : T;
Radix_Digits : universal_integer)
return T
Пусть v — значение T'Machine_Radixk–Radix_Digits, где k — нормированный порядок X. Функция возвращает значение
Floor(X/v) · v, если X неотрицательно и Radix_Digits положительно;
Ceiling(X/v) · v, если X отрицательно и Radix_Digits положительно.
Constraint_Error поднимается, когда Radix_Digits равно нулю или отрицательно. Результат равен нулю, что может произойти только при X = 0, и имеет знак X. См. A.5.3.
A'Length
Для префикса A типа массива (после любого неявного разыменования) или обозначающего ограниченный подтип массива:
A'Length обозначает количество значений первого диапазона индексов (ноль для пустого диапазона); его тип — universal_integer. См. 3.6.2.
A'Length(N)
Для префикса A типа массива (после любого неявного разыменования) или обозначающего ограниченный подтип массива:
A'Length(N) обозначает количество значений N-го диапазона индексов (ноль для пустого диапазона); его тип — universal_integer. См. 3.6.2.
S'Machine
Для каждого подтипа S типа с плавающей запятой T:
S'Machine обозначает функцию со следующим описанием:
function S'Machine (X : T)
return T
Если X — это число типа T, функция возвращает X; в противном случае она возвращает значение, полученное путем округления или усечения X до одного из смежных машинных чисел типа T. Ошибка Constraint_Error возникает, если округление или усечение X до точности машинных чисел приводит к значению, выходящему за пределы базового диапазона S. Результат нуля имеет знак X, если S'Signed_Zeros равно True. См. A.5.3.
S'Machine_Emax

Для каждого подтипа S плавающего типа T:
Возвращает наибольшее (наибольшее положительное) значение экспоненты, такое, что каждое значение, выразимое в канонической форме (для типа T), имеющее мантиссу из T'Machine_Mantissa цифр, является машинным числом (см. 3.5.7) типа T. Этот атрибут возвращает значение типа universal_integer. См. A.5.3.
S'Machine_Emin

Для каждого подтипа S плавающего типа T:
Возвращает наименьшее (наименьшее отрицательное) значение экспоненты, такое, что каждое значение, выразимое в канонической форме (для типа T), имеющее мантиссу из T'Machine_Mantissa цифр, является машинным числом (см. 3.5.7) типа T. Этот атрибут возвращает значение типа universal_integer. См. A.5.3.
S'Machine_Mantissa

Для каждого подтипа S плавающего типа T:
Возвращает наибольшее значение p, такое, что каждое значение, выразимое в канонической форме (для типа T), имеющее p-значную мантиссу и экспоненту между T'Machine_Emin и T'Machine_Emax, является машинным числом (см. 3.5.7) типа T. Этот атрибут возвращает значение типа universal_integer. См. A.5.3.
S'Machine_Overflows

Для каждого подтипа S плавающего типа T:
Возвращает значение True, если переполнение и деление на ноль обнаружены и сообщаются путём повышения Constraint_Error для каждой предопределённой операции, которая возвращает результат типа T; в противном случае возвращает False. Значение этого атрибута имеет тип Boolean. См. A.5.3.
S'Machine_Overflows

Для каждого подтипа S фиксированного типа T:
Возвращает значение True, если переполнение и деление на ноль обнаружены и сообщаются путём повышения Constraint_Error для каждой предопределённой операции, которая возвращает результат типа T; в противном случае возвращает False. Значение этого атрибута имеет тип Boolean. См. A.5.4.
S'Machine_Radix

Для каждого подтипа S плавающего типа T:
Возвращает основание аппаратного представления типа T. Значение этого атрибута имеет тип universal_integer. См. A.5.3.
S'Machine_Radix

Для каждого подтипа S фиксированного типа T:
Возвращает основание аппаратного представления типа T. Значение этого атрибута имеет тип universal_integer. См. A.5.4.
S'Machine_Rounding

Для каждого подтипа S плавающего типа T:
S'Machine_Rounding обозначает функцию со следующим описанием:
function S'Machine_Rounding (X : T)
return T
Функция возвращает целое значение, ближайшее к X. Если X лежит точно посередине между двумя целыми числами, возвращается одно из этих целых чисел, но какое из них — не определено. Результат нуля имеет знак X, если S'Signed_Zeros равно True. Эта функция предоставляет доступ к поведению округления, которое наиболее эффективно на целевом процессоре. См. A.5.3.
S'Machine_Rounds

Для каждого подтипа S плавающего типа T:
Возвращает значение True, если округление выполняется для неточных результатов каждой предопределённой операции, которая возвращает результат типа T; в противном случае возвращает False. Значение этого атрибута имеет тип Boolean. См. A.5.3.
S'Machine_Rounds

Для каждого подтипа S фиксированного типа T:
Возвращает значение True, если округление выполняется для неточных результатов каждой предопределённой операции, которая возвращает результат типа T; в противном случае возвращает False. Значение этого атрибута имеет тип Boolean. См. A.5.4.
S'Max
Для каждого скалярного подтипа S:
S'Max обозначает функцию со следующим описанием:
function S'Max(Left, Right : S'Base)
return S'Base
Функция возвращает большее из значений двух параметров. См. 3.5.
S'Max_Alignment_For_Allocation

Для каждого подтипа S:
Обозначает максимальное значение для Alignment, которое может быть запрошено реализацией посредством Allocate для типа доступа, чьим назначенным подтипом является S. Значение этого атрибута имеет тип universal_integer. См. 13.11.1.
S'Max_Size_In_Storage_Elements

Для каждого подтипа S:
Обозначает максимальное значение для Size_In_Storage_Elements, которое может быть запрошено реализацией посредством Allocate для типа доступа, чьим назначенным подтипом является S. Значение этого атрибута имеет тип universal_integer. См. 13.11.1.
S'Min
Для каждого скалярного подтипа S:
S'Min обозначает функцию со следующим описанием:
function S'Min(Left, Right : S'Base)
return S'Base
Функция возвращает меньшее из значений двух параметров. См. 3.5.
S'Mod
Для каждого модульного подтипа S:
S'Mod обозначает функцию со следующим описанием:
function S'Mod (Arg : universal_integer)
return S'Base
Эта функция возвращает Arg mod S'Modulus, как значение типа S. См. 3.5.4.
S'Model
Для каждого подтипа S плавающего типа T:
S'Model обозначает функцию со следующим описанием:
function S'Model (X : T)
return T
Если Приложение о числовых типах не поддерживается, значение этого атрибута определено реализацией; см. G.2.2 для определения, применимого к реализациям, поддерживающим Приложение о числовых типах. См. A.5.3.
S'Model_Emin
Для каждого подтипа S плавающего типа T:
Если Приложение о числовых типах не поддерживается, этот атрибут возвращает значение, определённое реализацией, которое больше или равно значению T'Machine_Emin. См. G.2.2 для дополнительных требований, применимых к реализациям, поддерживающим Приложение о числовых типах. Значение этого атрибута имеет тип universal_integer. См. A.5.3.
S'Model_Epsilon

Для каждого подтипа S плавающего типа T:
Возвращает значение T'Machine_Radix1 – T'Model_Mantissa. Значение этого атрибута имеет тип universal_real. См. A.5.3.
S'Model_Mantissa

Для каждого подтипа S вещественного типа T:
Если Приложение по числовым типам не поддерживается, этот атрибут возвращает значение, определённое реализацией, которое больше или равно Ceiling(d · log(10) / log(T'Machine_Radix)) + 1, где d — требуемая десятичная точность T, и меньше или равно значению T'Machine_Mantissa. Дополнительные требования, которые применяются к реализациям, поддерживающим Приложение по числовым типам, см. в G.2.2. Значение этого атрибута имеет тип universal_integer. См. A.5.3.
S'Model_Small

Для каждого подтипа S вещественного типа T:
Возвращает значение T'Machine_RadixT'Model_Emin – 1. Значение этого атрибута имеет тип universal_real. См. A.5.3.
S'Modulus
Для каждого модульного подтипа S:
S'Modulus возвращает модуль типа S в виде значения типа universal_integer. См. 3.5.4.
S'Object_Size

Для каждого подтипа S:
Если S определён, обозначает размер (в битах) самостоятельного алиасированного объекта или компонента подтипа S в отсутствие aspect_specification или элемента представления, который задаёт размер объекта или компонента. Если S неопределён, значение определяется реализацией. Значение этого атрибута имеет тип universal_integer. См. 13.3.
X'Old
Для префикса X, обозначающего объект неограниченного типа:
Каждый X'Old в постусловии выражения, которое активизировано, за исключением тех, которые встречаются в подвыражениях, которые определены как невычисляемые, обозначает константу, неявно объявленную в начале тела подпрограммы, тела входа или оператора принятия. См. 6.1.1.
S'Class'Output

Для каждого подтипа S'Class типа с классом T'Class:
S'Class'Output обозначает процедуру со следующей спецификацией:
procedure S'Class'Output(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T'Class)
Сначала записывает внешний тег Item в Stream (вызывая String'Output(Stream, Tags.External_Tag(Item'Tag)) — см. 3.9), а затем переходит к подпрограмме, обозначенной атрибутом Output для конкретного типа, идентифицированного тегом. Tag_Error возникает, если тег Item идентифицирует тип, объявленный на уровне доступности глубже, чем у S. См. 13.13.2.
S'Output
Для каждого подтипа S конкретного типа T:
S'Output обозначает процедуру со следующей спецификацией:
procedure S'Output(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
S'Output записывает значение Item в Stream, включая любые границы или дискриминанты. См. 13.13.2.
X'Overlaps_Storage

Для префикса X, обозначающего объект:
X'Overlaps_Storage обозначает функцию со следующей спецификацией:
function X'Overlaps_Storage (Arg : any_type)
return Boolean
Фактический параметр должен быть именем, обозначающим объект. Объект, обозначаемый фактическим параметром, может быть любого типа. Эта функция оценивает имена вовлечённых объектов и возвращает True, если представление объекта, обозначаемого фактическим параметром, использует по крайней мере один бит с представлением объекта, обозначаемого X; в противном случае возвращает False. См. 13.3.
X'Parallel_Reduce(Reducer, Initial_Value)

Для префикса X типа массива (после любого неявного разыменования) или обозначающего итерируемый контейнерный объект (см. 5.5.1):
X'Parallel_Reduce — это выражение сокращения, которое даёт результат, эквивалентный замене атрибута идентификатор на Reduce и префикс атрибута на последовательность_значений:
[parallel for Item of X => Item]
См. 4.5.10.
D'Partition_Id

Для префикса D, обозначающего объявление на уровне библиотеки, за исключением объявления в или внутри объявленного чистого библиотечного модуля:
Обозначает значение типа universal_integer, которое идентифицирует партицию, в которой D был обработан. Если D обозначает объявление интерфейса удалённого вызова библиотечного модуля (см. E.2.3), заданная партиция — это та, где тело D было обработано. См. E.1.
S'Pos
Для каждого дискретного подтипа S:
S'Pos обозначает функцию со следующей спецификацией:
function S'Pos(Arg : S'Base)
return universal_integer
Эта функция возвращает номер позиции значения Arg в виде значения типа universal_integer. См. 3.5.5.
R.C'Position
Для компонента C составного, не массивног объекта R:
Если для составного типа применяется нестандартный порядок битов и если component_clause указывает расположение C, обозначает значение, заданное для position component_clause; в противном случае обозначает то же значение, что и R.C'Address – R'Address. Значение этого атрибута имеет тип universal_integer. См. 13.5.2.
S'Pred
Для каждого скалярного подтипа S:
S'Pred обозначает функцию со следующей спецификацией:
function S'Pred(Arg : S'Base)
return S'Base
Для типа перечисления функция возвращает значение, номер позиции которого на единицу меньше, чем у значения Arg; Constraint_Error возникает, если такого значения типа нет. Для целочисленного типа функция возвращает результат вычитания единицы из значения Arg. Для фиксированного типа функция возвращает результат вычитания small из значения Arg. Для вещественного типа функция возвращает машинный номер (как определено в 3.5.7), непосредственно ниже значения Arg; Constraint_Error возникает, если такого машинного числа нет. См. 3.5.
S'Preelaborable_Initialization

Для неформального составного подтипа S, объявленного в видимой части пакета или обобщённого пакета, или обобщённого формального частного подтипа или формального производного подтипа:
Этот атрибут имеет тип Boolean и его значение отражает, имеет ли тип S предварительную инициализацию. См. 10.2.1.
P'Priority
Для префикса P, обозначающего защищённый объект:
Обозначает неалиасированный компонент защищённого объекта P. Этот компонент имеет тип System.Any_Priority и его значение — приоритет P. P'Priority обозначает переменную тогда и только тогда, когда P обозначает переменную. Ссылка на этот атрибут должна появляться только в теле P. См. D.5.2.
S'Put_Image

Для каждого подтипа S типа T, отличного от universal_real или universal_fixed:
S'Put_Image обозначает процедуру со следующим описанием:
procedure S'Put_Image
(Buffer : in out
Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
Arg : in T);
По умолчанию, S'Put_Image записывает (с помощью Wide_Wide_Put) изображение значения Arg. См. 4.10.
A'Range
Для префикса A, являющегося массивом (после всех неявных разыменований) или обозначающего ограниченный подтип массива:
A'Range эквивалентно A'First .. A'Last, за исключением того, что префикс A оценивается только один раз. См. 3.6.2.
S'Range
Для каждого скалярного подтипа S:
S'Range эквивалентно диапазону S'First .. S'Last. См. 3.5.
A'Range(N)
Для префикса A, являющегося массивом (после всех неявных разыменований) или обозначающего ограниченный подтип массива:
A'Range(N) эквивалентно A'First(N) .. A'Last(N), за исключением того, что префикс A оценивается только один раз. См. 3.6.2.
S'Class'Read
Для каждого подтипа S'Class универсального типа T'Class:
S'Class'Read обозначает процедуру со следующим описанием:
procedure S'Class'Read(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : out T'Class)
Вызывает подпрограмму, обозначаемую атрибутом Read специфического типа, идентифицированного тегом Item. См. 13.13.2.
S'Read
Для каждого подтипа S конкретного типа T:
S'Read обозначает процедуру со следующим описанием:
procedure S'Read(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : out T)
S'Read считывает значение Item из Stream. См. 13.13.2.
V'Reduce(Reducer, Initial_Value)

Для последовательности значений V:
Этот атрибут представляет выражение сокращения и имеет вид ссылка_на_атрибут_сокращения. См. 4.5.10.
X'Reduce(Reducer, Initial_Value)

Для префикса X типа массива (после всех неявных разыменований) или обозначающего итерируемый контейнерный объект (см. 5.5.1):
X'Reduce – это выражение сокращения, результат которого эквивалентен замене префикса атрибута на последовательность значений:
[for Item of X => Item]
См. 4.5.10.
P'Relative_Deadline

Для префикса P, обозначающего защищённый объект:
Обозначает неалиасовый компонент защищённого объекта P. Этот компонент типа Ada.Real_Time.Time_Span и его значение – относительный срок завершения P. P'Relative_Deadline обозначает переменную тогда и только тогда, когда P обозначает переменную. Ссылка на этот атрибут должна появляться только внутри тела P. См. D.5.2.
S'Remainder
Для каждого подтипа S плавающего типа T:
S'Remainder обозначает функцию со следующим описанием:
function S'Remainder (X, Y : T)
return T
Для ненулевого Y, пусть v – значение X – n · Y, где n – целое число, ближайшее к точному значению X/Y; если |n – X/Y| = 1/2, то n выбирается чётным. Если v – машинный номер типа T, функция возвращает v; в противном случае – ноль. Constraint_Error возникает, если Y равно нулю. Результат с нулём имеет знак X, когда S'Signed_Zeros равен True. См. A.5.3.
F'Result
Для префикса F, обозначающего объявление функции или тип указателя на функцию:
Внутри пост условия для F обозначает возвращаемый объект вызова функции, для которого оценивается пост условие. Тип этого атрибута – тип результата подтипа функции или типа указателя на функцию, за исключением пост условия Post'Class для функции с управляемым результатом или управляемым результатом указателя; в этих случаях тип атрибута описан выше в рамках Правил Разрешения Имен для Post'Class. См. 6.1.1.
S'Round
Для каждого десятичного подтипа с фиксированной точкой S:
S'Round обозначает функцию со следующим описанием:
function S'Round(X : universal_real)
return S'Base
Функция возвращает значение, полученное путем округления X (от 0, если X находится посредине между двумя значениями типа S). См. 3.5.10.
S'Rounding
Для каждого подтипа S плавающего типа T:
S'Rounding обозначает функцию со следующим описанием:
function S'Rounding (X : T)
return T
Функция возвращает целое значение, ближайшее к X, округляя от нуля, если X лежит точно посередине между двумя целыми числами. Результат с нулём имеет знак X, если S'Signed_Zeros равен True. См. A.5.3.
S'Safe_First
Для каждого подтипа S плавающего типа T:
Возвращает нижнюю границу безопасного диапазона (см. 3.5.7) типа T. Если Приложение по Арифметике с плавающей точкой не поддерживается, значение этого атрибута определяется реализацией; см. G.2.2 для определения, применимого для реализаций, поддерживающих Приложение по Арифметике с плавающей точкой. Значение этого атрибута типа universal_real. См. A.5.3.
S'Safe_Last
Для каждого подтипа S плавающего типа T:
Возвращает верхнюю границу безопасного диапазона (см. 3.5.7) типа T. Если Приложение по Арифметике с плавающей точкой не поддерживается, значение этого атрибута определяется реализацией; см. G.2.2 для определения, применимого для реализаций, поддерживающих Приложение по Арифметике с плавающей точкой. Значение этого атрибута типа universal_real. См. A.5.3.
S'Scale
Для каждого десятичного подтипа с фиксированной точкой S:
S'Scale обозначает масштаб подтипа S, определённый как значение N такое, что S'Delta = 10.0**(–N). Масштаб указывает положение точки относительно наиболее значимых разрядов значений подтипа S. Значение этого атрибута типа universal_integer. См. 3.5.10.
S'Scaling
Для каждого подтипа S плавающего типа T:
S'Scaling обозначает функцию со следующим описанием:
function S'Scaling (X : T;
Adjustment : universal_integer)
return T
Пусть v будет значением X · T'Machine_RadixAdjustment. Если v является машинным числом типа T, или если |v| ≥ T'Model_Small, функция возвращает v; в противном случае она возвращает одно из машинных чисел типа T, прилегающих к v. Ошибка Constraint_Error может быть вызвана, если v находится за пределами базового диапазона S. Результат с нулевым значением имеет знак X, когда S'Signed_Zeros имеет значение True. См. A.5.3.
S'Signed_Zeros

Для каждого подтипа S типа с плавающей запятой T:
Возвращает значение True, если аппаратное представление типа T способно представлять как положительные, так и отрицательные нули, которые генерируются и используются предопределёнными операциями типа T, как указано в IEC 559:1989; в противном случае возвращает значение False. Значение этого атрибута имеет предопределённый тип Boolean. См. A.5.3.
S'Size
Для каждого подтипа S:
Если S является определённым, обозначает размер (в битах), который реализация выберет для следующих объектов подтипа S:
Компонент записи подтипа S, когда тип записи является упакованным.
Формальный параметр экземпляра Unchecked_Conversion, который преобразует из подтипа S в какой-либо другой подтип.
Если S неопределён, значение определяется реализацией. Значение этого атрибута имеет тип universal_integer. См. 13.3.
X'Size
Для префикса X, обозначающего объект:
Обозначает размер представления объекта в битах. Значение этого атрибута имеет тип universal_integer. См. 13.3.
S'Small
Для каждого подтипа с фиксированной точкой S:
S'Small обозначает small типа S. Значение этого атрибута имеет тип universal_real. См. 3.5.10.
S'Storage_Pool

Для каждого подтипа S, имеющего доступ к объекту:
Обозначает пул памяти типа S. Тип этого атрибута — Root_Storage_Pool'Class. См. 13.11.
S'Storage_Size

Для каждого подтипа S, имеющего доступ к объекту:
Возвращает результат вызова Storage_Size(S'Storage_Pool), который предназначен для измерения количества элементов памяти, зарезервированных для пула. Тип этого атрибута — universal_integer. См. 13.11.
T'Storage_Size

Для префикса T, обозначающего объект задачи (после любого неявного разыменования):
Обозначает количество элементов памяти, зарезервированных для задачи. Значение этого атрибута имеет тип universal_integer. Размер Storage_Size включает размер стека задачи, если таковой имеется. Язык не указывает, включает ли он другой объём памяти, связанной с задачей (например, «блок управления задачей», используемый некоторыми реализациями). См. 13.3.
S'Stream_Size

Для каждого подтипа S элементарного типа T:
Обозначает количество битов, считываемых или записываемых в поток, по умолчанию реализациями S'Read и S'Write. Таким образом, количество элементов потока, необходимых на элемент элементарного типа T, равно:
T'Stream_Size / Ada.Streams.Stream_Element'Size
Значение этого атрибута имеет тип universal_integer и является кратным Stream_Element'Size. См. 13.13.2.
S'Succ
Для каждого скалярного подтипа S:
S'Succ обозначает функцию со следующим определением:
function S'Succ(Arg : S'Base)
return S'Base
Для перечислимого типа функция возвращает значение, позиционный номер которого на единицу больше, чем у значения Arg; Ошибка Constraint_Error возникает, если такого значения нет. Для целочисленного типа функция возвращает результат прибавления единицы к значению Arg. Для типа с фиксированной точкой функция возвращает результат прибавления small к значению Arg. Для типа с плавающей запятой функция возвращает машинное число (как определено в 3.5.7) непосредственно выше значения Arg; Ошибка Constraint_Error возникает, если такого машинного числа нет. См. 3.5.
S'Tag
Для каждого подтипа S помеченного типа T (конкретного или общеклассового):
S'Tag обозначает метку типа T (или, если T общеклассового типа, метку корневого типа соответствующего класса). Значение этого атрибута имеет тип Tag. См. 3.9.
X'Tag
Для префикса X, являющегося объекта помеченного типа общеклассового типа (после любого неявного разыменования):
X'Tag обозначает метку X. Значение этого атрибута имеет тип Tag. См. 3.9.
T'Terminated
Для префикса T, являющегося объекта типа задачи (после любого неявного разыменования):
Возвращает значение True, если задача, обозначенная T, завершена, и False в противном случае. Значение этого атрибута имеет предопределенный тип Boolean. См. 9.9.
S'Truncation
Для каждого подтипа S типа с плавающей запятой T:
S'Truncation обозначает функцию со следующим определением:
function S'Truncation (X : T)
return T
Функция возвращает значение Ceiling(X) если X отрицательно, и Floor(X) в противном случае. Результат с нулевым значением имеет знак X, если S'Signed_Zeros имеет значение True. См. A.5.3.
S'Unbiased_Rounding

Для каждого подтипа S типа с плавающей запятой T:
S'Unbiased_Rounding обозначает функцию со следующим определением:
function S'Unbiased_Rounding (X : T)
return T
Функция возвращает целое значение, ближайшее к X, округляя к чётному целому, если X находится точно посередине между двумя целыми числами. Результат с нулевым значением имеет знак X, когда S'Signed_Zeros имеет значение True. См. A.5.3.
X'Unchecked_Access

Для префикса X, обозначающего алиасированное представление объекта:
Все правила и семантика, применяемые к X'Access (см. 3.10.2), также применяются к X'Unchecked_Access, за исключением того, что для целей правил и проверок доступности, как если бы X был объявлен непосредственно внутри пакета библиотеки. См. 13.10.
S'Val
Для каждого дискретного подтипа S:
S'Val обозначает функцию со следующим определением:
function S'Val(Arg : universal_integer)
return S'Base
Эта функция возвращает значение типа S, позиционный номер которого равен значению Arg. См. 3.5.5.
X'Valid
Для префикса X, обозначающего скалярный объект (после любого неявного разыменования):
Возвращает True тогда и только тогда, когда объект, обозначаемый X, является нормальным, имеет допустимое представление, и при выполнении предыдущих условий значение X также удовлетворяет предикатам номинального подтипа X. Значение этого атрибута имеет предопределённый тип Boolean. См. 13.9.2.
S'Value
Для каждого скалярного подтипа S:
S'Value обозначает функцию со следующим определением:
function S'Value(Arg : String)
return S'Base
Эта функция возвращает значение, заданное изображением значения в виде строки, игнорируя любые ведущие или хвостовые пробелы. См. 3.5.
P'Version
Для префикса P, статически обозначающего единицу программы:
Возвращает значение предопределенного типа String, идентифицирующего версию единицы компиляции, содержащей объявление единицы программы. См. E.3.
S'Wide_Image
Для каждого подтипа S типа T:
S'Wide_Image обозначает функцию со следующим описанием:
function S'Wide_Image(Arg : S'Base)
return Wide_String
S'Wide_Image вызывает S'Put_Image, передавая Arg (который обычно хранит последовательность значений символов в буфере текста), а затем возвращает результат извлечения содержимого этого буфера с помощью функции Wide_Get. См. 4.10.
X'Wide_Image

Для префикса X типа T, отличного от universal_real или universal_fixed:
X'Wide_Image обозначает результат вызова функции S'Wide_Image со значением Arg, равным X, где S — номинальный подтип X. См. 4.10.
S'Wide_Value
Для каждого скалярного подтипа S:
S'Wide_Value обозначает функцию со следующим описанием:
function S'Wide_Value(Arg : Wide_String)
return S'Base
Эта функция возвращает значение, заданное изображением значения в виде Wide_String, игнорируя любые начальные или конечные пробелы. См. 3.5.
S'Wide_Wide_Image

Для каждого подтипа S типа T:
S'Wide_Wide_Image обозначает функцию со следующим описанием:
function S'Wide_Wide_Image(Arg : S'Base)
return Wide_Wide_String
S'Wide_Wide_Image вызывает S'Put_Image, передавая Arg (который обычно хранит последовательность значений символов в буфере текста), а затем возвращает результат извлечения содержимого этого буфера с помощью функции Wide_Wide_Get. См. 4.10.
X'Wide_Wide_Image

Для префикса X типа T, отличного от universal_real или universal_fixed:
X'Wide_Wide_Image обозначает результат вызова функции S'Wide_Wide_Image со значением Arg, равным X, где S — номинальный подтип X. См. 4.10.
S'Wide_Wide_Value

Для каждого скалярного подтипа S:
S'Wide_Wide_Value обозначает функцию со следующим описанием:
function S'Wide_Wide_Value(Arg : Wide_Wide_String)
return S'Base
Эта функция возвращает значение, заданное изображением значения в виде Wide_Wide_String, игнорируя любые начальные или конечные пробелы. См. 3.5.
S'Wide_Wide_Width

Для каждого скалярного подтипа S:
S'Wide_Wide_Width обозначает максимальную длину Wide_Wide_String, возвращаемую S'Wide_Wide_Image для всех значений подтипа S, предполагая стандартную реализацию S'Put_Image. Для подтипов с пустым диапазоном она обозначает ноль. Её тип — universal_integer. См. 3.5.
S'Wide_Width
Для каждого скалярного подтипа S:
S'Wide_Width обозначает максимальную длину Wide_String, возвращаемую S'Wide_Image для всех значений подтипа S, предполагая стандартную реализацию S'Put_Image. Для подтипов с пустым диапазоном она обозначает ноль. Её тип — universal_integer. См. 3.5.
S'Width
Для каждого скалярного подтипа S:
S'Width обозначает максимальную длину String, возвращаемую S'Image для всех значений подтипа S, предполагая стандартную реализацию S'Put_Image. Для подтипов с пустым диапазоном она обозначает ноль. Её тип — universal_integer. См. 3.5.
S'Class'Write
Для каждого подтипа S'Class класса типа T'Class:
S'Class'Write обозначает процедуру со следующим описанием:
procedure S'Class'Write(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T'Class)
Выполняет диспетчеризацию к подпрограмме, обозначенной атрибутом Write соответствующего типа, определенного меткой Item. См. 13.13.2.
S'Write
Для каждого подтипа S конкретного типа T:
S'Write обозначает процедуру со следующим описанием:
procedure S'Write(
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
S'Write записывает значение Item в Stream. См. 13.13.2.


Spec-Zone.ru

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