Справочник Ada 2012
K.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
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, в противном случае атрибут возвращает значение 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
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
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 в противном случае. См. 3.7.2.
S'Copy_Sign
Для каждого подтипа S плавающей точки типа T:
S'Copy_Sign обозначает функцию со следующим определением:
function S'Copy_Sign (Value, Sign : T)
return 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, если каждое значение, выразимое в виде
± мантисса · T'Machine_RadixT'Machine_Emin
где мантисса — ненулевая T'Machine_Mantissa-цифровая дробь в системе счисления T'Machine_Radix, первая цифра которой равна нулю, является машинным числом (см. 3.5.7) типа T; в противном случае возвращает значение False. Значение этого атрибута имеет предопределённый тип Boolean. См. A.5.3.
± мантисса · T'Machine_RadixT'Machine_Emin
где мантисса — ненулевая 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'Exponent
Для каждого подтипа S типа с плавающей точкой T:
S'Exponent обозначает функцию со следующим определением:
function S'Exponent (X : T)
return universal_integer
return universal_integer
Функция возвращает нормализованный показатель степени X. См. A.5.3.
S'External_Tag
Для каждого подтипа S помеченного типа T (конкретного или класса):
S'External_Tag обозначает внешнее строковое представление для S'Tag; оно имеет предопределенный тип String. External_Tag может быть задан для конкретного помеченного типа через определение атрибута; выражение такой клаузы должно быть статическим. По умолчанию внешнее представление тега определяется реализацией. См. 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:
Если для составного типа применяется порядок битов, отличный от стандартного, и если в клаузе компонента указано расположение C, обозначает значение, заданное для первого бита клаузы компонента; в противном случае обозначает смещение, от начала первого из элементов хранения, занимаемых 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
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
return T
Функция возвращает значение X · T'Machine_Radix–k, где k — нормализованный показатель степени X. Результат нуль, который может произойти только тогда, когда X равно нулю, имеет знак X. См. A.5.3.
X'Has_Same_Storage
Для префикса X, обозначающего объект:
X'Has_Same_Storage обозначает функцию со следующим определением:
function X'Has_Same_Storage (Arg : any_type)
return Boolean
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:
S'Image обозначает функцию со следующей спецификацией:
function S'Image(Arg : S'Base)
return String
return String
Функция возвращает изображение значения Arg в виде строки. См. 3.5.
X'Image
Для префикса X, обозначающего объект скалярного типа (после любого неявного разыменования):
X'Image обозначает результат вызова функции S'Image со значением Arg, равным X, где S — номинальный подтип X. См. 3.5.
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 : 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
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:
Если для составного типа используется порядок битов по умолчанию, и если компонентная_строка указывает позицию C, обозначает значение, заданное для last_bit компонентной_строки; в противном случае обозначает смещение от начала первого из элементов памяти, занимаемых 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
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 равном нулю, имеет знак 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
return T
Если X — число машины типа T, функция возвращает X; в противном случае она возвращает значение, полученное путем округления или усечения X до одного из соседних чисел машины типа T. Constraint_Error возникает, если округление или усечение X до точности чисел машины приводит к значению за пределами базового диапазона S. Нулевой результат имеет знак X, когда S'Signed_Zeros имеет значение True. См. A.5.3.
S'Machine_Emax
Для каждого подтипа S типа с плавающей точкой T:
Возвращает наибольшее (наибольшее положительное) значение exponent, такое что каждое значение, представимое в канонической форме (для типа T), имеющее mantissa из T'Machine_Mantissa цифр, является числом машины (см. 3.5.7) типа T. Этот атрибут возвращает значение типа universal_integer. См. A.5.3.
S'Machine_Emin
Для каждого подтипа S типа с плавающей точкой T:
Возвращает наименьшее (наименьшее отрицательное) значение exponent, такое что каждое значение, представимое в канонической форме (для типа T), имеющее mantissa из T'Machine_Mantissa цифр, является числом машины (см. 3.5.7) типа T. Этот атрибут возвращает значение типа universal_integer. См. A.5.3.
S'Machine_Mantissa
Для каждого подтипа S типа с плавающей точкой T:
Возвращает наибольшее значение p, такое что каждое значение, представимое в канонической форме (для типа T), имеющее p-значную мантиссу и exponent между 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
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
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
return S'Base
Функция возвращает меньшее из значений двух параметров. См. 3.5.
S'Mod
Для каждого модульного подтипа S:
S'Mod обозначает функцию со следующим спецификацией:
function S'Mod (Arg : universal_integer)
return S'Base
return S'Base
Эта функция возвращает Arg mod S'Modulus, как значение типа S. См. 3.5.4.
S'Model
Для каждого подтипа S типа с плавающей точкой T:
S'Model обозначает функцию со следующим спецификацией:
function S'Model (X : T)
return 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.
X'Old
Для префикса X, обозначающего объект неограниченного типа:
Каждый X'Old в пост-условии, который включен, обозначает константу, неявно объявленную в начале тела подпрограммы, тела входа или оператора accept. См. 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)
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)
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
return Boolean
Фактический параметр должен быть именем, обозначающим объект. Объект, обозначаемый фактическим параметром, может быть любого типа. Эта функция оценивает имена вовлечённых объектов и возвращает True, если представление объекта, обозначаемого фактическим параметром, имеет по крайней мере один бит общий с представлением объекта, обозначаемого X; в противном случае возвращает False. См. 13.3.
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
return universal_integer
Эта функция возвращает номер позиции значения Arg как значение типа universal_integer. См. 3.5.5.
R.C'Position
Для компонента C составного, не массива объекта R:
Если для составного типа применяется порядок битов по умолчанию, и если описание_компонента указывает размещение C, обозначает значение, заданное для позиции описания_компонента; в противном случае обозначает то же значение, что и R.C'Address – R'Address. Значение этого атрибута имеет тип universal_integer. См. 13.5.2.
S'Pred
Для каждого скалярного подтипа S:
S'Pred обозначает функцию со следующим описанием:
function S'Pred(Arg : S'Base)
return S'Base
return S'Base
Для типа перечисления функция возвращает значение, номер позиции которого на единицу меньше, чем номер позиции значения Arg; Constraint_Error поднимается, если нет такого значения типа. Для целочисленного типа функция возвращает результат вычитания единицы из значения Arg. Для типа с фиксированной точкой функция возвращает результат вычитания small из значения Arg. Для типа с плавающей точкой функция возвращает машинный номер (как определено в 3.5.7) непосредственно ниже значения Arg; Constraint_Error поднимается, если нет такого машинного номера. См. 3.5.
P'Priority
Для префикса P, обозначающего защищённый объект:
Обозначает не алиасовый компонент защищённого объекта P. Этот компонент имеет тип System.Any_Priority и его значение — приоритет P. P'Priority обозначает переменную тогда и только тогда, когда P обозначает переменную. Ссылка на этот атрибут должна появляться только в теле P. См. D.5.2.
A'Range
Для префикса A, который имеет тип массива (после любого неявного разыменования) или обозначает ограниченный подтип массива:
A'Range эквивалентно A'First .. A'Last, за исключением того, что префикс A оценивается только один раз. См. 3.6.2.
S'Range
Для каждого скалярного подтипа S:
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)
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)
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : out T)
S'Read считывает значение Item из Stream. См. 13.13.2.
S'Remainder
Для каждого подтипа S типа с плавающей точкой T:
S'Remainder обозначает функцию со следующим описанием:
function S'Remainder (X, Y : T)
return 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 постсловия для функции с управляющим результатом или с управляемым результатом доступа. Для управляемого результата тип атрибута — T'Class, где T — тип результата функции. Для управляемого результата доступа тип атрибута — анонимный тип доступа, назначенный тип которого — T'Class, где T — назначенный тип типа результата функции. См. 6.1.1.
S'Round
Для каждого десятичного подтипа с фиксированной точкой S:
S'Round обозначает функцию со следующим описанием:
function S'Round(X : universal_real)
return S'Base
return S'Base
Функция возвращает значение, полученное путём округления X (от 0, если X находится на середине между двумя значениями типа S). См. 3.5.10.
S'Rounding
Для каждого подтипа S типа с плавающей точкой T:
S'Rounding обозначает функцию со следующим описанием:
function S'Rounding (X : T)
return T
return T
Функция возвращает целое значение, ближайшее к X, округляя от нуля, если X лежит точно посередине между двумя целыми числами. Результат нуля имеет знак X, когда S'Signed_Zeros — True. См. A.5.3.
S'Safe_First
Для каждого подтипа S типа с плавающей точкой T:
Возвращает нижнюю границу безопасного диапазона (см. 3.5.7) типа T. Если дополнение Numerics не поддерживается, значение этого атрибута определяется реализацией; см. G.2.2 для определения, которое применяется к реализациям, поддерживающим дополнение Numerics. Значение этого атрибута имеет тип 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
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
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
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
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
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
return S'Base
Эта функция возвращает значение, заданное изображением значения в виде строки, игнорируя любые ведущие или хвостовые пробелы. См. 3.5.
P'Version
Для префикса P, статически обозначающего единицу программы:
Возвращает значение предопределённого типа String, которое идентифицирует версию единицы компиляции, содержащей объявление единицы программы. См. E.3.
S'Wide_Image
Для каждого скалярного подтипа S:
S'Wide_Image обозначает функцию со следующим определением:
function S'Wide_Image(Arg : S'Base)
return Wide_String
return Wide_String
Функция возвращает изображение значения Arg как Wide_String. См. 3.5.
X'Wide_Image
Для префикса X, обозначающего объект скалярного типа (после любого неявного разыменования):
X'Wide_Image обозначает результат вызова функции S'Wide_Image с Arg, являющимся X, где S — номинальный подтип X. См. 3.5.
S'Wide_Value
Для каждого скалярного подтипа S:
S'Wide_Value обозначает функцию со следующим определением:
function S'Wide_Value(Arg : Wide_String)
return S'Base
return S'Base
Эта функция возвращает значение, заданное изображением значения как Wide_String, игнорируя любые ведущие или хвостовые пробелы. См. 3.5.
S'Wide_Wide_Image
Для каждого скалярного подтипа S:
S'Wide_Wide_Image обозначает функцию со следующим определением:
function S'Wide_Wide_Image(Arg : S'Base)
return Wide_Wide_String
return Wide_Wide_String
Функция возвращает изображение значения Arg, т. е. последовательность символов, представляющую значение в формате отображения. См. 3.5.
X'Wide_Wide_Image
Для префикса X, обозначающего объект скалярного типа (после любого неявного разыменования):
X'Wide_Wide_Image обозначает результат вызова функции S'Wide_Wide_Image с Arg, являющимся X, где S — номинальный подтип X. См. 3.5.
S'Wide_Wide_Value
Для каждого скалярного подтипа S:
S'Wide_Wide_Value обозначает функцию со следующим определением:
function S'Wide_Wide_Value(Arg : Wide_Wide_String)
return S'Base
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. Обозначает ноль для подтипа с нулевым диапазоном. Его тип — universal_integer. См. 3.5.
S'Wide_Width
Для каждого скалярного подтипа S:
S'Wide_Width обозначает максимальную длину Wide_String, возвращаемую S'Wide_Image для всех значений подтипа S. Обозначает ноль для подтипа с нулевым диапазоном. Его тип — universal_integer. См. 3.5.
S'Width
Для каждого скалярного подтипа S:
S'Width обозначает максимальную длину String, возвращаемую S'Image для всех значений подтипа S. Обозначает ноль для подтипа с нулевым диапазоном. Его тип — 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)
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)
Stream : not null access Ada.Streams.Root_Stream_Type'Class;
Item : in T)
S'Write записывает значение Item в Stream. См. 13.13.2.