Атрибуты типов
В данном приложении перечислены атрибуты типов Ады, и дано их краткое описание. Следует заметить, что при описании атрибутов типов, терминология несколько упрощена. В частности, вместо термина "подтип" используется термин "тип", что не всегда правильно (например, для вещественных типов с плавающей точкой).
Атрибуты типов определенные в реализации компилятора GNAT
Список атрибутов типов определенных .
где Standard - единственно возможный префикс.
Предусматривает сущность для специального исключения, которая используется при принудительном завершении задачи или асинхронной передаче управления.
Обычно, этот атрибут должен использоваться только в окружении задачи
(атрибут достаточно специфичен и выходит за пределы нормальной семантики Ады; он предназначен для пользовательских программ перехватывающих исключение принудительного завершения).
где Standard - единственно возможный префикс.
Статическая константа представляющая количество битов в представлении адреса ('Address). Ее первичное предназначение - построение описания Memory_Size
в пакете Standard, однако она может быть свободно использована в программах пользователя.
Определяет функцию которая принимает два параметра. Первый параметр - это строка, а второй параметр - это выражение типа определяемое префиксом. Первый параметр (строка) должен быть статическим выражением и является ограничением для параметра (например, указывает требуемый регистр процессора). Второй аргумент это значение которое будет использоваться как аргумент ввода. Допустимые значения для констант будут такими же как и используемые в RTL, и они зависят от файла конфигурации который был использован для построения генератора кода GCC (GCC back end).
Определяет функцию которая принимает два параметра. Первый параметр - это строка, а второй параметр - это имя переменной определяемое префиксом. Первый параметр (строка) должен быть статическим выражением и является ограничением для параметра (например, указывает требуемый тип регистра процессора). Второй аргумент это переменная в которой будет сохранен результат.
Допустимые значения для констант будут такими же как и используемые в RTL, и они зависят от файла конфигурации который был использован для построения генератора кода GCC (GCC back end).
'AST_Entry | - | Этот атрибут реализован только для работы с OpenVMS версией GNAT. |
obj'Bit | - | где obj: любой объект. Возвращает битовое смещение в элементе памяти (как правило байте) в котором находится первый бит пространства размещенного для объекта obj. Возвращаемое этим атрибутом значение имеет тип Universal_Integer, величина которого всегда не отрицательна и не достигает величины System.Storage_Unit. Для объектов, которые являются переменными или константами размещаемыми в регистре возвращаемое значение - нуль (использование этого атрибута не обязывает размещать переменные в памяти). Для объектов, которые являются формальными параметрами, этот атрибут применяется как для совпадающего фактического параметра, так и для копии совпадающего фактического параметра. Для ссылочных объектов, возвращаемое значение - нуль. Примечательно, что obj.all'Bit является объектом проверки Access_Check для обозначенного объекта. Подобным образом, этот атрибут для компонента записи X.C'Bit является объектом проверки дискриминанта, а в случае массива X(I)'Bit или X(I1..I2)'Bit - объектом проверки индекса. Этот атрибут был разработан для совместимости с описанием и реализацией атрибута 'Bit в DEC Ada 83. |
'Bit_Position | - | R.C'Bit где R - это запись, а C - это одно из полей типа записи, возвращает битовое смещение внутри записи, которое содержит первый бит пространства размещенного для объекта. Возвращаемое этим атрибутом значение имеет тип Universal_Integer. Величина значения зависит только от указанного поля типа записи C и не зависит от выравнивания. |
'Code_Address | - |
Standard'Default_Bit_Order | - | где Standard - единственно возможный префикс. Предусматривает значение System.Default_Bit_Order как значение 'Pos (0 для High_Order_First, и 1 для Low_Order_First). Это используется для построения описания Default_Bit_Order в пакете System. |
U'Elaborated | - | где U: имя модуля. Возвращаемое значение имеет тип Boolean и индицирует была ли выполнена элаборация указанного модуля. Этот атрибут первоначально был предназначен для внутреннего использования генерируемым кодом для проверки динамической элаборации, но он также может быть использован в программах пользователя. Возвращаемое значение всегда будет True, как только выполнена элаборация всех модулей. |
P'Elab_Body | - |
Возвращает объекты для соответствующей процедуры элаборации для выполнения элаборации тела указанного модуля.
Атрибут используется в главной процедуре элаборации редактора связей (binder) и, обычно, не должен использоваться в любом другом контексте.
P'Elab_Spec | - | где P: имя программного модуля. Возвращает объекты для соответствующей процедуры элаборации для выполнения элаборации спецификации указанного модуля. Атрибут используется в главной процедуре элаборации редактора связей (binder) и, обычно, не должен использоваться в любом другом контексте. Однако, могут возникнуть какие-либо особенные ситуации в которых использование этого атрибута может оказаться полезным для получения возможности вызвать процедуру элаборации из кода Ады (например, в случае необходимости выполнения выборочной переэлаборации для исправления какой-либо ошибки). |
'Emax | - | Этот атрибут предусмотрен для совместимости с Ada 83. |
S'Enum_Rep | - |
Для перечислимого типа обозначает функцию, которая имеет следующую спецификацию:
function S'Enum_Rep (Arg : S'Base) return Universal_Integer;
Для объекта перечислимого типа или несовмещенного перечислимого литерала S'Enum_Rep эквивалентен T'Enum_Rep(S) где T - это тип перечислимого литерала или объекта S.
Функция возвращает значение внутреннего представления для указанного перечислимого значения, которое будет равно значению возвращаемому атрибутом 'Pos
если отсутствует спецификация представления.
Этот атрибут статический (то есть, результат статический, если аргумент статический).
Атрибут S'Enum_Rep также может быть использован для целочисленных типов и объектов.
В таких случаях, он просто возвращает целочисленное значение.
Смысл этого в том, чтобы разрешить его использование для дискретных формальных аргументов (<>) в настраиваемых модулях, которые могут быть конкретизированы как с перечислимыми типами, так и с целочисленными типами.
'Epsilon | - | Предусмотрен для обеспечения совместимости с Ada 83. |
S'Fixed_Value | - | где S: вещественный тип с фиксированной точкой. Обозначает функцию, которая имеет следующую спецификацию: function S'Fixed_Value (Arg : Universal_Integer) return S; Возвращаемое значение V - это вещественное значение с фиксированной точкой, подобное: V = Arg * S'Small Таким образом, это эквивалентно: сначала, преобразованию аргумента в значение целочисленного типа, используемого для представления S, а затем, выполнению непроверяемого преобразования в вещественный тип с фиксированной точкой. Первоначально, этот атрибут был предназначен для реализации функций ввода/вывода для значений вещественного типа с фиксированной точкой. |
T'Has_Discriminants | - | где T: тип. Возвращенное значение типа Boolean будет True в случае когда тип T имеет дискриминант, и False - в обратном случае. Предполагается использование этого атрибута совместно с описаниями настраиваемых модулей. Если атрибут используется с приватным настраиваемым типом, то он индицирует имеет ли фактический тип дискриминант. |
'Img | - | Этот атрибут отличается от стандартного атрибута 'Image тем, что он может быть использован как с объектами, так и с типами. В обоих случаях он возвращает 'Image для подтипа объекта. Это удобно для отладки: Put_Line ("X = " & X'Img); будет иметь такой же смысл, что и более "многословная" запись: Put_Line ("X = " & type'Image (X)); где type - это подтип объекта X. |
S'Integer_Value | - |
Обозначает функцию, которая имеет следующую спецификацию:
function S'Integer_Value
(Arg : Universal_Fixed) return S;
Возвращаемое значение V подобно:
Arg = V * type'Small
Таким образом, это эквивалентно: сначала, выполнению непроверяемого преобразования из вещественного типа с фиксированной точкой в соответствующий ему тип реализации, а затем, преобразование результата в целочисленный тип назначения.
'Large | - | Предусмотрен для обеспечения совместимости с Ada 83. |
'Machine_Size | - | Этот атрибут идентичен атрибуту 'Object_Size и предусмотрен для совместимости с одноименным атрибутом компилятора DEC Ada 83. |
'Mantissa | - | Предусмотрен для обеспечения совместимости с Ada 83. |
Standard'Max_Interrupt_Priority | - | где Standard - единственно возможный префикс. Предоставляет значение System.Max_Interrupt_Priority и первоначально предназначен для построения этого описания в пакете System. |
Standard'Max_Priority | - | где Standard - единственно возможный префикс. Предоставляет значение System.Max_Priority и первоначально предназначен для построения этого описания в пакете System. |
Standard'Maximum_Alignment | - | где Standard - единственно возможный префикс. Предоставляет максимальное пригодное значение выравнивания для целевой платформы. Это статическое значение которое может быть использовано для указания требуемого выравнивания объектов. При этом во всех случаях будет гарантироваться правильность выравнивания объектов Это может быть полезно при импортировании внешних объектов, когда требования для их выравнивания не известны. |
'Mechanism_Code | - |
возвращает целочисленный код, который определяет используемый механизм для передачи результата вызова функции function, а subprogram'Mechanism_Code(n)
возвращает целочисленный код, который определяет используемый механизм для передачи формального параметра с порядковым номером n
(статическое целочисленное значение, 1 - подразумевает первый параметр) подпрограммы subprogram.
Смысл возвращаемых кодов следующий:
1 | - | по значению (by copy / value) |
2 | - | по ссылке (by reference) |
3 | - | по дескриптору (by descriptor / default descriptor class) |
4 | - | по дескриптору (by descriptor / UBS: unaligned bit string) |
5 | - | по дескриптору (by descriptor / UBSB: aligned bit string with arbitrary bounds) |
6 | - | по дескриптору (by descriptor / UBA: unaligned bit array) |
7 | - | по дескриптору (by descriptor / S: string, also scalar access type parameter) |
8 | - | по дескриптору (by descriptor / SB: string with arbitrary bounds) |
9 | - | по дескриптору (by descriptor / A: contiguous array) |
10 | - | по дескриптору (by descriptor / NCA: non-contiguous array) |
обозначает воображаемый объект типа T который размещается по нулевому машинному адресу. Этот атрибут допустим только для выражений в формальных параметрах по умолчанию или как фактическое выражение вызова подпрограммы. В обоих случаях подпрограмма должна быть импортированной.
Идентичность объекта представляется нулевым адресом в списке аргументов, вне зависимости от механизма передачи (явного или используемого по умолчанию).
Такая возможность необходима для спецификации того, что нулевой адрес должен быть передан для записи или другого составного объекта передаваемого по ссылке. Другого способа такой индикации, без использования атрибута 'Null_Parameter, не существует.
Например, Natural'Object_Size
равен 31 бит, а размер объекта типа Natural по умолчанию будет иметь размер 32 бита. Подобным образом, запись которая содержит Integer и Character:
type Rec is record
I : Integer; C : Character; end record;
будет иметь размер 40 бит (Rec'Size будет 40 бит; выравнивание будет 4, из-за поля типа Integer; таким образом размер записи этого типа по умолчанию будет 64 бита или 8 байт).
Атрибут T'Object_Size был добавлен к реализации GNAT, чтобы обеспечить легкое определение размера объекта типа T по умолчанию.
Например Natural'Object_Size равен 32 бита, а Rec'Object_Size (для записи из примера) будет 64.
Примечательно также то, что в отличие от ситуации с атрибутом 'Size
который описан в руководстве по языку, атрибут 'Object_Size может быть определен индивидуально для различных подтипов. Например:
type R is new Integer; subtype R1 is R range 1 .. 10; subtype R2 is R range 1 .. 10; for R2'Object_Size use 8;
В этом примере R'Object_Size и R1'Object_Size, оба равны 32, поскольку размер объекта по умолчанию для подтипа такой же как и размер для подтипа-предка.
Это подразумевает, что размер по умолчанию для объектов с типами R и R1
будет 32 бита (4 байта).
Но объекты типа R2 будут иметь только 8 бит (1 байт), поскольку R2'Object_Size был установлен в 8.
Возвращает значение типа Boolean которое равно True если тип T
может быть нормально передан по ссылке и False если тип T
может быть нормально передан по значению при вызове. Для скалярных типов результат всегда будет False и является статическим. Для не скалярных типов, результат - не статический.
Возвращает число значений представляемых типом (нуль, в случае пустого диапазона значений). Результат статический для статических типов. Этот атрибут применяется для типов индекса одномерных массивов и дает те же результаты, что и атрибут 'Range
для того же массива.
Предоставляет значение System.Storage_Unit
и первоначально предназначен для построения этого описания в пакете System.
Предоставляет значение System.Tick
и первоначально предназначен для построения этого описания в пакете System.
Обозначает функцию которая идентична System.Storage_Elements.To_Address
с тем исключением, что это статический атрибут.
Это подразумевает, что подобное выражение может быть использовано в контексте (например, при преэлаборации пакета) который требует использования статических выражений и где не может быть использован вызов функции (поскольку вызов функции всегда является не статическим, даже при статических аргументах).
Возвращает значение класса типа для типа T.
Если тип T является настраиваемым типом, то возвращаемое значение будет значением соответствующего фактического типа.
Значение этого атрибута имеет тип System.Aux_DEC.Type_Class, который имеет следующее описание:
type Type_Class is
(Type_Class_Enumeration, Type_Class_Integer, Type_Class_Fixed_Point, Type_Class_Floating_Point, Type_Class_Array, Type_Class_Record, Type_Class_Access, Type_Class_Task, Type_Class_Address);
Защищенные типы возвращают значение Type_Class_Task, которое, таким образом, подходит для всех многозадачных типов. Этот атрибут был разработан для обеспечения совместимости с одноименным атрибутом компилятора DEC Ada 83.
Возвращает адрес таблицы исключений модуля при использовании обработки исключений без потерь производительности.
Этот атрибут предназначен для использования только с реализацией GNAT.
См. модуль Ada.Exceptions в файлах "a-except.ads" и "a-except.adb" для получения более полной информации о том как эти атрибуты используются в реализации.
Возвращает статический результат, которым является строка символов представляющая число так, как оно было описано в оригинальном исходном тексте.
Это позволяет пользователю программы получить доступ к фактическому тексту описания именованных чисел без промежуточного преобразования и без необходимости заключения строк в кавычки (которые препятствуют использование строк как чисел).
Это имеет внутреннее использование для построения значений вещественных атрибутов с плавающей точкой из файла "ttypef.ads", но может быть также использовано в программах пользователя.
Ответственность за правильность использования полностью возлагается на пользователя.
Это подобно атрибуту 'Addess, для которого необходима замена в тех случаях, когда требуемое значение должно иметь ссылочный тип.
Другими словами, эффект действия этого атрибута идентичен первоначальному получению атрибута 'Addess
с последующим непроверяемым преобразованием в требуемое значение ссылочного типа.
В GNAT, но не обязательно в других реализациях, использование статической цепочки для подпрограмм внутреннего уровня подразумевает, что 'Unrestricted_Access, примененный для подпрограммы, возвращает значение, которое может быть вызвано пока подпрограмма находится в области действия (видимости).
Нормальные правила доступа/видимости в Ada 95 ограничивают такое использование.
Возвращает число бит, которое требуется для представления значений указанного типа T.
Это то же самое, что и T'Size, но в отличие от 'Size, может быть установлено для не первого подтипа.
Предоставляет битовый размер типа wchar_t языка C
и первоначально предназначен для построения этого типа в пакете Interfaces.C.
Примечание: отсутствует в реализации GNAT V 3.13p.
Предоставляет значение System.Word_Size
и первоначально предназначен для построения этого описания в пакете System.
Директивы компилятора (pragma)
В данном приложении приводится краткое описание директив компилятора. Более подробное описание использования этих директив содержится в справочных руководствах по языку программирования Ада и по реализации компилятора GNAT.
Директивы определенные в реализации компилятора GNAT
Abort_Defer; | - | откладывает принудительное завершение до конца блока инструкций (должна быть помещена в начале блока инструкций) | ||
Ada_83; | - | использовать при компиляции исходного текста соглашения стандарта Ada83, даже если переключатели опций компилятора указывают обратное | ||
Ada_95; | - | использовать при компиляции исходного текста соглашения стандарта Ada95, даже если переключатели опций компилятора указывают обратное | ||
Annotate( identifier{, name|expression}); |
- | Добавить дополнительную информацию для внешних инструментальных средств | ||
Assert( boolean_expression [, static_string_expression]); |
- | Вставить условие контрольной проверки | ||
Ast_Entry(entry_identifier); | - | Реализована только для OpenVMS | ||
C_Pass_By_Copy( [Max_Size =>] static_integer_expression); |
- | При вызове функции Си, использовать передачу параметра по значению (не по ссылке), если это возможно | ||
Comment(static_string_expression); | - | То же самое, что и Ident | ||
Common_Object( [Internal =>] local_name, [, [External =>] external_symbol] [, [Size =>] external_symbol] ) |
- | Для Фортрана. Создать переменную, которая использует общее пространство | ||
Complex_Representation( [Entity =>] local_name); |
- | Использовать формат комплексных чисел gcc (для повышения скорости вычислений) | ||
Component_Alignment( [Form =>] alignment_choice [, [Name =>] type_local_name]); |
- | Указывает как должно осуществляться выравнивание компонентов записи | ||
CPP_Class([Entity =>] local_name); | - | Трактовать запись или тэговую запись как класс Си++ | ||
CPP_Constructor( [Entity =>] local_name); |
- | Трактовать импортируемую функцию как конструктор класса Си++ | ||
CPP_Destructor( [Entity =>] local_name); |
- | Трактовать импортируемую функцию как деструктор класса Си++ | ||
CPP_Virtual( [Entity =>] entity, [, [Vtable_Ptr =>] vtable_entity,] [, [Position =>] static_integer_expression]); |
- | Импортировать виртуальную функцию Си++ | ||
CPP_Vtable( [Entity =>] entity, [, [Vtable_Ptr =>] vtable_entity,] [, [Entry_Count =>] static_integer_expression]); |
- | Определить таблицу виртуальных функций | ||
Debug(procedure_call_statement); | - | Определить вызов отладочной процедуры | ||
Eliminate([Unit_Name =>] identifier); | - | Указать объект который не используется программой. Создается утлитой gnatelim | ||
Export_Exception( [Internal =>] local_name, [, [External =>] external_symbol,] [, [Form =>] Ada | VMS] [, [Code =>] static_integer_expression]); |
- | Реализована только для OpenVMS | ||
Export_Function( [Internal =>] local_name, [, [External =>] external_symbol] [, [Parameter_Types =>] parameter_types] [, [Result_Type =>] result_subtype_mark] [, [Mechanism =>] mechanism] [, [Result_Mechanism =>] mechanism_name]); |
- | Экспортировать Ада-функцию с указанием дополнительной информации по отношению к информации представленной директивой Export | ||
Export_Object( [Internal =>] local_name, [, [External =>] external_symbol] [, [Size =>] external_symbol]); |
- | Экспортировать тэговую запись Ады с указанием дополнительной информации по отношению к информации представленной директивой Export | ||
Export_Procedure( [Internal =>] local_name, [, [External =>] external_symbol] [, [Parameter_Types =>] parameter_types] [, [Result_Type =>] result_subtype_mark] [, [Mechanism =>] mechanism]); |
- | Экспортировать Ада-процедуру с указанием дополнительной информации по отношению к информации представленной директивой Export | ||
Export_Valued_Procedure( [Internal =>] local_name, [, [External =>] external_symbol] [, [Parameter_Types =>] parameter_types] [, [Result_Type =>] result_subtype_mark] [, [Mechanism =>] mechanism]); |
- | Экспортировать Ада-функцию обладающую побочными эффектами с указанием дополнительной информации по отношению к информации представленной директивой Export | ||
Extend_System([Name =>] identifier); | - | устарела | ||
External_Name_Casing( Uppercase | Lowercase [, Uppercase | Lowercase | As_Is]); |
- | Установить режим перевода в символы верхнего регистра для импорта в регистрозависимый язык. Может быть установлено в Uppercase, Lowercase или As_Is
(по-умолчанию для gnst). |
||
Finalize_Storage_Only( first_subtype_local_name); |
- | Не выполнять очистку (Finalize) для объектов описанных на уровне библиотеки. Изначально предназначено для внутреннего использования в реализации компилятора gnat. | ||
Float_Representation(float_rep); | - | Реализована только для OpenVMS | ||
Ident(static_string_expression); | - | Строка идентификации объектного файла (в Linux, значения не имеет) | ||
Import_Exception( [Internal =>] local_name, [, [External =>] external_symbol,] [, [Form =>] Ada | VMS] [, [Code =>] static_integer_expression]); |
- | Реализована только для OpenVMS | ||
Import_Function( [Internal =>] local_name, [, [External =>] external_symbol] [, [Parameter_Types =>] parameter_types] [, [Result_Type =>] result_subtype_mark] [, [Mechanism =>] mechanism] [, [Result_Mechanism =>] mechanism_name] [, [First_Optional_Parameter =>] identifier]); |
- | Импортирует функцию, описанную средствами другого языка программирования, для использования ее в Ада-программе. При этом указывает дополнительную информацию по отношению к информации представленной директивой Import. | ||
Import_Object( [Internal =>] local_name, [, [External =>] external_symbol] [, [Size =>] external_symbol]); |
- | Импортирует объект, описанный средствами другого языка программирования, для использования его в Ада-программе. При этом указывает дополнительную информацию по отношению к информации представленной директивой Import. | ||
Import_Procedure( [Internal =>] local_name, [, [External =>] external_symbol] [, [Parameter_Types =>] parameter_types] [, [Mechanism =>] mechanism] [, [First_Optional_Parameter =>] identifier]); |
- | Импортирует процедуру, описанную средствами другого языка программирования, для использования ее в Ада-программе. При этом указывает дополнительную информацию по отношению к информации представленной директивой Import. | ||
Import_Valued_Procedure( [Internal =>] local_name, [, [External =>] external_symbol] [, [Parameter_Types =>] parameter_types] [, [Mechanism =>] mechanism] [, [First_Optional_Parameter =>] identifier]); |
- | Импортирует функцию обладающую побочными эффектами, которая описана средствами другого языка программирования, для использования ее в Ада-программе. При этом указывает дополнительную информацию по отношению к информации представленной директивой Import. | ||
Inline_Always(name[, name]); | - | Указывает, на необходимость выполнения межмодульной inline-подстановки не зависимо от состояния переключателей опций компилятора. | ||
Inline_Generic(generic_package_name); | - | Введена для совместимости с другими Ада-компиляторами | ||
Interface( [Convention =>] convention_identifier, [Entity =>] local_name [, [External_Name =>] static_string_expression], [, [Link_Name =>] static_string_expression]); |
- | Введена для совместимости с другими Ада-компиляторами | ||
Interface_Name( [Entity =>] local_name [, [External_Name =>] static_string_expression] [, [Link_Name =>] static_string_expression]); |
- | Введена для совместимости с другими Ада-компиляторами | ||
Linker_Alias( [Entity =>] local_name [Alias =>] static_string_expression); |
- | Определяет альтернативный компоновщик (linker) для указанного пакета (или другого компонуемого модуля). | ||
Linker_Section( [Entity =>] local_name [Section =>] static_string_expression); |
- | Указание компоновщику gcc использовать соответствующую секцию для указанного имени | ||
Long_Float(float_format); | - | Реализована только для OpenVMS | ||
Machine_Attribute( [Attribute_Name =>] string_expression, [Entity =>] local_name); |
- | Определяет атрибуты машины для gcc. | ||
Main_Storage( main_storage_option [, main_storage_option]); |
- | Реализована только для OpenVMS | ||
No_Run_Time; | - | Указать компилятору gnat не использовать библиотеку времени выполнения (например, в случае написания драйвера устройства). | ||
No_Return(procedure_local_name); | - | Указывает процедуру, которая преднамеренно не возвращает управление. Предназначена для подавления предупреждающих сообщений компилятора. | ||
Passive([Semaphore | No]); | - | Введена для совместимости с другими Ада-компиляторами | ||
Polling(On | Off); | - | Если включена, то разрешает опрос исключений | ||
Propagate_Exceptions(subprogram_local_name); | - | Определяет импортированную подпрограмму, которая будет обрабатывать исключения Ады (без потерь производительности). | ||
Psect_Object( [Internal =>] local_name, [, [External =>] external_symbol] [, [Size =>] external_symbol]); |
- | То же самое, что и Common_Object. | ||
Pure_Function([Entity =>] function_local_name); | - | Указывает, что функция не имеет побочных эффектов. | ||
Ravenscar; | - | Устанавливает политику реального времени RAVENSCAR | ||
Restricted_Run_Time; | - | Подобно директиве Ravenscar, устанавливает некоторые ограничения на программирование задач реального времени | ||
Share_Generic(name {, name}); | - | Введена для совместимости с другими Ада-компиляторами | ||
Source_File_Name( [Unit_Name =>] unit_name, [FNAME_DESIG =>] string_literal); |
- | Переопределяет традиционные для реализации компилятора gnat правила именования файлов. | ||
Source_Reference( integer_literal, string_literal); |
- | Применяется для совместного использования с утилитой gnatchop. | ||
Stream_Convert( [Entity =>] type_local_name, [Read =>] function_name, [Write =>] function name); |
- | Упрощает создание подпрограмм потокового ввода/вывода для указанного типа данных | ||
Style_Checks( string_literal | ALL_CHECKS | On | Off [, local_name]); |
- | Указывает реализации компилятора gnat выполнять проверку стиля оформления исходных текстов (если включено в процессе компиляции). | ||
Subtitle([Subtitle =>] string_literal); | - | Введена для совместимости с другими Ада-компиляторами | ||
Suppress_All; | - | Введена для совместимости с другими Ада-компиляторами | ||
Suppress_Initialization([Entity =>] type_name); | - | Запретить инициализацию переменных указанного типа данных | ||
Task_Info(expression); | - | Определяет информацию о задаче. | ||
Task_Name(string_expression); | - | Определяет имя задачи.
Примечание: отсутствует в реализации GNAT V 3.13p. |
||
Task_Storage( [Task_Type =>] local_name, [Top_Guard =>] static_integer_expression); |
- | Определяет "охранное" пространство для задачи. | ||
Time_Slice(static_duration_expression); | - | Определяет квант времени задачи (tasking time slice) для главной программы | ||
Title(titling_option [, titling option]); | - | Введена для совместимости с другими Ада-компиляторами | ||
Unchecked_Union(first_subtype_local_name); | - | Трактовать запись как тип объединения (union) языка Си. | ||
Unimplemented_Unit; | - | Предназначена для использования в не законченных модулях. Порождает генерацию ошибки при компиляции такого модуля. | ||
Unreserve_All_Interrupts; | - | Позволяет переназначение прерываний, которые обычно обрабатываются реализацией компилятора gnat (например SIGINT). | ||
Unsuppress(identifier [, [On =>] name]); | - | Обладает эффектом, противоположным директиве Suppress. | ||
Use_VADS_Size | - | Для старого Ада-кода. атрибут 'Size
эквивалентен атрибуту 'VADS_Size. |
||
Warnings(On | Off [, local_name]); | - | Включает или выключает генерацию предупредительных сообщений компилятором. | ||
Weak_External([Entity =>] local_name); | - | Определяет объект, который не должен распознаваться компоновщиком. |
Copyright (C) А.Гавва | V-0.4w май 2004 |
Глоссарий
Это дополнение содержит пояснение терминов и понятий используемых в стандарте Ada-95, и соответствует информации представленной в дополнении N (Annex N) стандарта Ada-95.
1 | Access type | Ссылочный тип | Ссылочный тип определяет значения которые указывают на объекты с косвенным доступом. Ссылочные типы соответствуют "указателям" или "ссылкам" в некоторых других языках программирования. | ||||
2 | Aliased | Объект с косвенным доступом | Косвенный доступ к представлению объекта может быть получен с помощью значения ссылочного типа. Динамические объекты, которые размещаются с помощью аллокаторов, являются объектами с косвенным доступом. Статический объект может быть также явно описан как объект с косвенным доступом путем использования зарезервированного слова aliased в описании объекта. В этом случае, для получения значения ссылочного типа, указывающего на объект с косвенным доступом, может быть использован атрибут 'Access. | ||||
3 | Array type | Тип массива | Составной тип, который состоит из компонентов одного и того же типа. Выбор индивидуальных компонентов осуществляется путем индексирования. | ||||
4 | Character type | Символьный тип | Символьный тип - это перечислимый тип значениями которого являются символы. | ||||
5 | Class | Класс | Класс - это набор типов которые объединены одной иерархией наследования. Это подразумевает, что если указанный тип принадлежит классу, то все типы, производные от этого типа, также принадлежат этому классу. Множество типов одного класса обладает одинаковыми свойствами, такими как одинаковые примитивные операции. | ||||
6 | Compilation unit | Компилируемый модуль | Текст программы может быть представлен компилятору для одной или более компиляций. Каждая компиляция - это последовательность компилируемых модулей. Компилируемый модуль содержит или описания, или тело, или переименование программного модуля. | ||||
7 | Composite type | Составной тип | Составной тип имеет компоненты. | ||||
8 | Construct | Конструкция | Конструкция - это кусок текста (явный или неявный), являющийся экземпляром синтаксической категории, которая определена в разделе синтаксиса. | ||||
9 | Controlled type | Контролируемый тип | Контролируемый тип поддерживает определяемые пользователем подпрограммы присваивания (инициализации) и очистки. Такие объекты всегда перед разрушением выполняют очистку. | ||||
10 | Declaration | Описание | Описание - это языковая конструкция, которая ассоциирует имя с сущностью (с представлением сущности). Описание в тексте программы может присутствовать явно (явное описание), или может подразумеваться как присутствующее в данном месте текста программы как семантический результат других конструкций (неявное описание). | ||||
11 | Definition | Определение | Все определения содержат определения для представления какой-либо сущности. Представление состоит из какой-либо идентификации сущности (сущность представления), плюс специфических для представления характеристик которые влияют на использование сущности посредством такого представления (например, режим доступа к объекту, имена формальных параметров и их значения по умолчанию для подпрограммы, или видимость/доступность компонентов типа). В большинстве случаев, определение также содержит определение для самой сущности (определение_переименования является примером определения которое не определяет новую сущность, но определяет представление существующей сущности, см. RM-95 8.5). | ||||
12 | Derived type | Производный тип | Производный тип - это тип объявленный в терминах другого типа, который является типом-предком для производного типа. Каждый класс содержащий тип-предок также содержит производный тип. Производный тип наследует свойства, такие как компоненты и примиривные операции типа-предка. Любой тип вместе с производными от него типами (прямо или косвенно) формируют образование класса. | ||||
13 | Discrete type | Дискретный тип | Любой дискретный тип это или любой целочисленный тип, или любой перечислимый тип. Например, дискретные типы могут быть использованы в инструкциях выбора (case) или как индексы массивов. | ||||
14 | Discriminant | Дискриминант | Дискриминант - это параметр составного типа. Например, он может управлять границами компонента типа если такой тип - это тип массива. Дискриминант задачного типа может быть использован для передачи данных во время создания фактического объекта задачного типа (иначе, задаче). | ||||
15 | Elementary type | Элементарный тип | Любой элементарный тип не содержит компоненты. | ||||
16 | Enumeration type | Перечислимый тип | Любой перечислимый тип - это тип который определен перечислением его значений, которые могут быть именованы идентификаторами или символьными литералами. | ||||
17 | Exception | Исключение | Любое исключение представляет какую-либо исключительную ситуацию, а возникновение такой ситуации (во время выполнения программы) называют возникновением исключения. Возбуждение исключения используется для прекращения нормальной последовательности исполнения программы для предупреждения о факте наличия соответствующей ситуации. Выполнение некоторых действий, в ответ на возникшее исключение, называют обработкой исключения. | ||||
18 | Execution | Исполнение | Процесс при котором проявляется действие какой-либо конструкции языка, во время выполнения программы, называют исполнением. Исполнение описаний называют элаборацией. Исполнение выражений называют вычислением. | ||||
19 | Generic unit | Настраиваемый модуль | Настраиваемый модуль - это шаблон для построения (ненастраиваемого) программного модуля. Такой шаблон может быть параметризован объектами, типами, подпрограммами и пакетами. Экземпляр настроенного модуля может быть получен путем конкретизации настраиваемого модуля. Правила языка, при компиляции настраиваемого модуля, требуют использования контрактной модели настройки. При конкретизации настраиваемого модуля выполняются дополнительные проверки соблюдения контрактной модели. Таким образом, описание настраиваемого модуля представляет контракт между телом настраиваемого модуля и экземпляром настроенного модуля. Настраиваемые модули могут быть использованы в качестве макросов, используемых другими языками программирования. | ||||
20 | Integer type | Целочисленный тип | Целочисленные типы включают целочисленные типы со знаком и модульные типы. Целочисленный тип со знаком имеет базовый диапазон, который содержит положительные и отрицательные числа, и имеет операции, которые могут возбуждать исключения когда результат операции выходит за пределы базового диапазона значений. Модульные типы имеют базовый диапазон значений нижняя граница которого - нуль, и используют операции с "кольцевой" семантикой. Модульные типы можно отнести к целочисленным типам без знака, используемым другими языками программирования. | ||||
21 | Library unit | Библиотечный модуль | Библиотечный модуль - это отдельно компилируемый программный модуль, которым может быть пакет, подпрограмма или настраиваемый модуль. Библиотечные модули могут иметь другие (логически находящиеся внутри) библиотечные модули как дочерние модули, а также могут иметь другие программные модули, которые размещаются внутри них физически. Любой корневой библиотечный модуль, вместе со своими дочерними модулями, формирует подсистему. | ||||
22 | Limited type | Лимитированный тип | Лимитированный тип - это тип (представление типа) для которого не допускается использование операции присваивания. Нелимитированный тип - это тип (представление типа) для которого использование операции присваивания допускается. | ||||
23 | Object | Объект | Объектом является константа или переменная. Любой объект содержит значение. Любой объект может быть создан при помощи описания_объекта или при помощи аллокатора. Любой формальный параметр - это объект (представление объекта). Компонент объекта - это также объект. | ||||
24 | Package | Пакет | Пакеты - это программные модули, которые позволяют объединять группы логически связанных между собой сущностей. Обычно пакет содержит описание типа (часто приватного типа или приватного расширения типа) в совокупности с описаниями примитивных подпрограмм для этого типа, которые могут быть вызваны извне этого пакета. При этом внутренняя работа таких подпрограмм будет скрыта от внешних пользователей. | ||||
25 | Partition | Раздел | Раздел - это часть программы. Каждый раздел состоит из набора библиотечных модулей. Каждый раздел может выполняться в собственном адресном пространстве, возможно на отдельном компьютере. Программа может содержать один раздел. Распределенная программа обычно содержит множество разделов, которые могут выполняться одновременно. | ||||
26 | Pragma | Директива компилятора | Директивы компилятора предоставляют дополнительную информацию для оптимизации, управления листингом трансляции и т.д. Существуют директивы компилятора определенные стандартом языка. Конкретная реализация может поддерживать дополнительные директивы компилятора. | ||||
27 | Primitive operations | Примитивные операции | Примитивные операции типа - это операции (такие как подпрограммы) описанные вместе с описанием типа. Они наследуются другими типами того же класса типов. Для тэговых типов, примитивные подпрограммы являются диспетчеризуемыми (перенаправляемыми) подпрограммами, предусматривающими полиморфизм во время выполнения. Диспетчеризуемая подпрограмма может быть вызвана со статическими тэговыми операндами, в таком случае тело вызываемой подпрограммы определяется во время компиляции. Дополнительно, диспетчеризуемая подпрограмма может быть вызвана используя способ диспетчеризованного (перенаправленного) вызова, в таком случае, тело вызываемой подпрограммы определяется во время выполнения. | ||||
28 | Private extension | Приватное расширение | Приватное расширение подобно расширению записи. Отличительной особенностью является то, что компоненты такого расширения не видимы для клиентов. | ||||
29 | Private type | Приватный тип | Приватный тип - это частичное представление типа, полное представление которого скрыто от клиентов. | ||||
30 | Program unit | Программный модуль | Программный модуль это пакет, задачный модуль, защищенный модуль, защищенная точка входа, настраиваемый модуль или явно описанная подпрограмма отличная от перечислимого литерала. Определенные программные модули могут быть откомпилированы отдельно. Дополнительно, они могут быть физически размещены внутри других программных модулей. | ||||
31 | Program | Программа | Программа - это множество разделов, каждый из которых может исполняться в отдельном адресном пространстве, возможно на разных компьютерах. Раздел состоит из набора библиотечных модулей. | ||||
32 | Protected type | Защищенный тип | Защищенный тип - это составной тип, чьи компоненты защащены от одновременного доступа множества задач. | ||||
33 | Real type | Вещественный тип | Вещественный тип имеет значения, которые являются приближенными значениями вещественных чисел. Типы с плавающей точкои и типы с фиксированной точкой являются вещественными типами. | ||||
34 | Record extension | Расширение записи | Расширение записи - это тип, который расширяет другой тип путем добавления дополнительных компонентов. | ||||
35 | Record type | Тип записи | Тип записи - это составной тип, состоящий из ни одного или более именованных компонентов, тип которых может быть разным. | ||||
36 | Scalar type | Скалярный тип | Скалярный тип - это или дискретный тип, или вещественный тип. | ||||
37 | Subtype | Подтип | Подтип - это тип с ограничением, которое ограничивает значения подтипа с целью удовлетворения некоторых условий. Значения подтипа являются подмножеством значений его типа. | ||||
38 | Tagged type | Тэговый тип | Объекты тэгового типа характеризуются наличием тэга типа времени выполнения. Такой тэг однозначно определяет тип созданного объекта. Операнд надклассового тэгового типа может быть использован для формирования диспетчеризуемого (перенаправляемого) вызова. В таком случае, тэг индицирует тело подпрограммы которую необходимо вызвать. Допустимы также недиспетчеризуемые вызовы, в которых тело подпрограммы, которую необходимо вызвать, определяется во время компиляции. Тэговые типы могут быть расширены дополнительными компонентами. | ||||
39 | Task type | Тип задачи Задачный тип |
Тип задачи - это составной тип значениями которого являются задачи. Задачи являются активными сущностями, которые могут выполняться одновременно с другими задачами. Задачу раздела программы верхнего уровня называют задачей окружения. | ||||
40 | Type | Тип | Каждый объект имеет тип. Тип обладает ассоциированным с ним множеством значений и множеством примитивных операций, которые реализуют фундаментальный аспект его семантики. Типы группируются в классы. Типы определенного класса используют общее множество примитивных операций. Классы объединяются в иерархию наследования. Таким образом, если тип принадлежит определенному классу, то все производные от него типы будут принадлежать этому же классу. | ||||
41 | View | Представление | см. Definition |
Copyright (C) А.Гавва | V-0.4w май 2004 |
Литература
Ada 95 Language Reference Manual ANSI/ISO/IEC 8652:1995
http://www.adapower.com/rm95/index.html
Ada 95 Rationale, The Language and Standard Libraries
http://www.adapower.com/rationale/index.html
Ada 95 Quality and Style: Guidelines for Professional Programmers
http://www.informatik.uni-stuttgart.de/ifi/ps/ada-doc/style_guide/cover.html
GNAT Reference Manual
GNAT User Guide
Smith, Michael A., Object-Oriented Software in Ada 95
http://burks.bton.ac.uk/burks/language/ada/ada95.pdf
English, John, Ada 95 The Craft of Object-Oriented Programming
http://www.it.bton.ac.uk/staff/je/adacraft/
Feldman, M.B. and Koffman E.B., Ada 95 Problem Solving and Program Design
Richard Riehle, Ada Distilled
http://www.adapower.com/learn/adadistilled.pdf
Ken O. Burtch, The Big Online Book of Linux Ada programming
http://www.vaxxine.com/pegasoft/homes/book.html
Dale Stanbrough, Quick Ada
http://goanna.cs.rmit.edu.au/~dale/ada/aln.html
Copyright (C) А.Гавва | V-0.4w май 2004 |
Пакет AdaDirect_IO
with Ada.IO_Exceptions;
generic type Element_Type is private; -- параметр настройки модуля package Ada.Direct_IO is type File_Type is limited private; type File_Mode is (In_File, Inout_File, Out_File); type Count is range 0 .. System.Direct_IO.Count'Last; subtype Positive_Count is Count range 1 .. Count'Last; -- Подпрограммы управления файлами procedure Create (File : in out File_Type; Mode : in File_Mode := Inout_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open (File : in File_Type) return Boolean; -- Подпрограммы ввода/вывода procedure Read (File : in File_Type; Item : out Element_Type; From : in Positive_Count); procedure Read (File : in File_Type; Item : out Element_Type); procedure Write (File : in File_Type; Item : in Element_Type; To : in Positive_Count); procedure Write (File : in File_Type; Item : in Element_Type); procedure Set_Index (File : in File_Type; To : in Positive_Count); function Index (File : in File_Type) return Positive_Count; function Size (File : in File_Type) return Count; function End_Of_File (File : in File_Type) return Boolean; -- Исключения Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; private . . . -- стандартом языка не определено end Ada.Direct_IO; |
Пакет AdaSequential_IO
with Ada.IO_Exceptions;
generic type Element_Type (<>) is private; -- параметр настройки модуля package Ada.Sequential_IO is type File_Type is limited private; type File_Mode is (In_File, Out_File, Append_File); -- Подпрограммы управления файлами procedure Create (File : in out File_Type; Mode : in File_Mode := Out_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open (File : in File_Type) return Boolean; -- Подпрограммы ввода/вывода procedure Read (File : in File_Type; Item : out Element_Type); procedure Write (File : in File_Type; Item : in Element_Type); function End_Of_File (File : in File_Type) return Boolean; -- Исключения Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; private . . . -- стандартом языка не определено end Ada.Sequential_IO; |
Пакет AdaStreamsStream_IO
with Ada.IO_Exceptions;
package Ada.Streams.Stream_IO is type Stream_Access is access all Root_Stream_Type'Class; type File_Type is limited private; type File_Mode is (In_File, Out_File, Append_File); type Count is range 0 .. Определяется_Реализацией; subtype Positive_Count is Count range 1 .. Count'Last; -- индекс в файле, -- в потоковых -- элементах -- Подпрограммы управления файлами procedure Create (File : in out File_Type; Mode : in File_Mode := Out_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open (File : in File_Type) return Boolean; function End_Of_File (File : in File_Type) return Boolean; function Stream (File : in File_Type) return Stream_Access; -- Подпрограммы ввода/вывода procedure Read (File : in File_Type; Item : out Stream_Element_Array; Last : out Stream_Element_Offset; From : in Positive_Count); procedure Read (File : in File_Type; Item : out Stream_Element_Array; Last : out Stream_Element_Offset); procedure Write (File : in File_Type; Item : in Stream_Element_Array; To : in Positive_Count); procedure Write (File : in File_Type; Item : in Stream_Element_Array); -- Подпрограммы управления позиционированием внутри файла procedure Set_Index (File : in File_Type; To : in Positive_Count); function Index (File : in File_Type) return Positive_Count; function Size (File : in File_Type) return Count; procedure Set_Mode (File : in out File_Type; Mode : in File_Mode); procedure Flush (File : in out File_Type); -- Исключения Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; private . . . -- стандартом языка не определено end Ada.Streams.Stream_IO; |
Copyright (C) А.Гавва | V-0.4w май 2004 |
Пакет AdaText_IO
with Ada.IO_Exceptions; -- описано в приложении A (Annex A) -- руководства по языку (RM-95)
package Ada.Text_IO is pragma Elaborate_Body (Text_IO); type File_Type is limited private; -- внутреннее представление -- файла для программы type File_Mode is (In_File, Out_File, Append_File); -- управляет направлением -- передачи данных -- (в/из файла) type Count is range 0 .. Определяется_Реализацией; subtype Positive_Count is Count range 1 .. Count'Last; Unbounded : constant Count := 0; -- длина строки и страницы subtype Field is Integer range 0 .. Определяется_Реализацией; subtype Number_Base is Integer range 2 .. 16; -- используются только: -- 2, 8, 10 и 16 type Type_Set is (Lower_Case, Upper_Case); -- для перечислимых типов -- Подпрограммы управления файлами procedure Create (File : in out File_Type; -- ассоциируемая с внешним файлом -- переменная в программе Mode : in File_Mode := Out_File; -- по умолчанию - файл для вывода данных Name : in String := ""; -- имя внешнего файла Form : in String := ""); -- использование, не определено стандартом procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); -- меняет режим -- доступа -- к файлу procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; -- режим доступа к файлу function Name (File : in File_Type) return String; -- имя внешнего файла function Form (File : in File_Type) return String; -- зависит от реализации function Is_Open (File : in File_Type) return Boolean; -- Подпрограммы управления файлами ввода, вывода и вывода ошибок -- устанавливаемыми по умолчанию procedure Set_Input (File : in File_Type); -- установить как файл ввода procedure Set_Output (File : in File_Type); -- установить как файл вывода procedure Set_Error (File : in File_Type); -- установить как файл вывода ошибок -- ПРИМЕЧАНИЕ: перед вызовом подпрограмм Set_Input, -- Set_Output и/или Set_Error, -- файл File должен быть открыт function Standard_Input return File_Type; -- обычно, клавиатура function Standard_Output return File_Type; -- обычно, видеодисплей function Standard_Error return File_Type; function Current_Input return File_Type; -- обычно, то же что и Standard_Input function Current_Output return File_Type; function Current_Error return File_Type; type File_Access is access constant File_Type; -- ссылочный тип (указатель) -- позволяющий ссылаться -- на переменные внутреннего -- представления файла, что -- во многих случаях удобно -- (введен стандартом Ada-95) function Standard_Input return File_Access; function Standard_Output return File_Access; function Standard_Error return File_Access; function Current_Input return File_Access; function Current_Output return File_Access; function Current_Error return File_Access; -- Подпрограммы управления буферами procedure Flush (File : in out File_Type); procedure Flush; -- Подпрограммы спецификации длин строк и страниц для ввода/вывода procedure Set_Line_Length (File : in File_Type; To : in Count); procedure Set_Line_Length (To : in Count); procedure Set_Page_Length (File : in File_Type; To : in Count); procedure Set_Page_Length (To : in Count); function Line_Length (File : in File_Type) return Count; function Line_Length return Count; function Page_Length (File : in File_Type) return Count; function Page_Length return Count; -- Подпрограммы спецификации Column, Line и Page (колонка, строка и страница) procedure New_Line (File : in File_Type; -- вывод терминатора строки Spacing : in Positive_Count := 1); -- по умолчанию, один раз procedure New_Line (Spacing : in Positive_Count := 1); procedure Skip_Line (File : in File_Type; -- отбросить ввод символов Spacing : in Positive_Count := 1); -- по умолчанию, для одной procedure Skip_Line (Spacing : in Positive_Count := 1);-- строки function End_Of_Line (File : in File_Type) return Boolean; function End_Of_Line return Boolean; procedure New_Page (File : in File_Type); -- завершить текущую страницу procedure New_Page; -- выводом терминатора страницы procedure Skip_Page (File : in File_Type); -- отбросить ввод символов procedure Skip_Page; -- вплоть до терминатора страницы function End_Of_Page (File : in File_Type) return Boolean; function End_Of_Page return Boolean; function End_Of_File (File : in File_Type) return Boolean; function End_Of_File return Boolean; procedure Set_Col (File : in File_Type; To : in Positive_Count); procedure Set_Col (To : in Positive_Count); procedure Set_Line (File : in File_Type; To : in Positive_Count); procedure Set_Line (To : in Positive_Count); function Col (File : in File_Type) return Positive_Count; function Col return Positive_Count; function Line (File : in File_Type) return Positive_Count; function Line return Positive_Count; function Page (File : in File_Type) return Positive_Count; function Page return Positive_Count; -- Посимвольный ввод/вывод procedure Get (File : in File_Type; Item : out Character); procedure Get (Item : out Character); procedure Put (File : in File_Type; Item : in Character); procedure Put (Item : in Character); procedure Look_Ahead (File : in File_Type; Item : out Character; End_Of_Line : out Boolean); procedure Look_Ahead (Item : out Character; End_Of_Line : out Boolean); procedure Get_Immediate (File : in File_Type; Item : out Character); procedure Get_Immediate (Item : out Character); procedure Get_Immediate (File : in File_Type; Item : out Character; Available : out Boolean); procedure Get_Immediate (Item : out Character; Available : out Boolean); -- Построчный ввод/вывод procedure Get (File : in File_Type; Item : out String); procedure Get (Item : out String); procedure Put (File : in File_Type; Item : in String); procedure Put (Item : int String); procedure Get_Line (File : in File_Type; Item : out String; Last : out Natural); procedure Get_Line (Item : out String; Last : out Natural); procedure Put_Line (File : in File_Type; Item : in String); procedure Put_Line (Item : in String); -- Исключения Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; Layout_Error : exception renames IO_Exceptions.Layout_Error; private . . . -- стандартом языка не определено end Ada.Text_IO; |
Пакет AdaText_IODecimal_IO
generic
type Num is delta <> digits <>; -- параметр настройки модуля package Ada.Text_IO.Decimal_IO is -- децимальные типы, как правило, используются -- в финансовых приложениях Default_Fore : Field := Num'Fore; -- количество символов слева -- от десятичной точки Default_Aft : Field := Num'Aft; -- количество символов справа -- от десятичной точки Default_Exp : Field := 0; -- для нотации используемой -- в научных рассчетах procedure Get -- ввод числа из указанного файла (File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get -- ввод числа из файла стандартного ввода (Item : out Num; Width : in Field := 0); procedure Put -- вывод числа в указанный файл (File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put -- вывод числа в файл стандартного вывода (Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get -- ввод числа из строки -- (преобразование из строкового представления) (From : in String; Item : out Num; Last : out Positive); procedure Put -- вывод числа в строку -- (преобразование в строковое представление) (To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Ada.Text_IO.Decimal_IO; |
Пакет AdaText_IOEnumeration_IO
generic
type Enum is (<>); -- параметр настройки модуля package Ada.Text_IO.Enumeration_IO is Default_Width : Field := 0; Default_Setting : Type_Set := Upper_Case; procedure Get -- ввод значения перечислимого типа из указанного файла (File : in File_Type; Item : out Enum); procedure Get -- ввод значения перечислимого типа из файла стандартного ввода (Item : out Enum); procedure Put -- вывод значения перечислимого типа в указанный файл (File : in File_Type; Item : in Enum; Width : in Field := Default_Width; Set : in Type_Set := Default_Setting); procedure Put -- вывод значения перечислимого типа в файл стандартного вывода (Item : in Enum; Width : in Field := Default_Width; Set : in Type_Set := Default_Setting); procedure Get -- ввод значения перечислимого типа из строки -- (преобразование из строкового представления) (From : in String; Item : out Enum; Last : out Positive); procedure Put -- вывод значения перечислимого типа в строку -- (преобразование в строковое представление) (To : out String; Item : in Enum; Set : in Type_Set := Default_Setting); end Ada.Text_IO.Enumeration_IO; |
Пакет AdaText_IOFixed_IO
generic
type Num is delta <>; -- параметр настройки модуля package Ada.Text_IO.Fixed_IO is Default_Fore : Field := Num'Fore; -- количество символов слева -- от десятичной точки Default_Aft : Field := Num'Aft; -- количество символов справа -- от десятичной точки Default_Exp : Field := 0; -- для нотации используемой -- в научных рассчетах procedure Get -- ввод числа из указанного файла (File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get -- ввод числа из файла стандартного ввода (Item : out Num; Width : in Field := 0); procedure Put -- вывод числа в указанный файл (File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put -- вывод числа в файл стандартного вывода (Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get -- ввод числа из строки -- (преобразование из строкового представления) (From : in String; Item : out Num; Last : out Positive); procedure Put -- вывод числа в строку -- (преобразование в строковое представление) (To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Ada.Text_IO.Fixed_IO; |
Пакет AdaText_IOFloat_IO
generic
type Num is digits <>; -- параметр настройки модуля package Ada.Text_IO.Float_IO is Default_Fore : Field := 2; -- количество символов слева -- от десятичной точки Default_Aft : Field := Num'Digits - 1; -- количество символов справа -- от десятичной точки Default_Exp : Field := 3; -- для нотации используемой -- в научных рассчетах procedure Get -- ввод числа из указанного файла (File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get -- ввод числа из файла стандартного ввода (Item : out Num; Width : in Field := 0); procedure Put -- вывод числа в указанный файл (File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put -- вывод числа в файл стандартного вывода (Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get -- ввод числа из строки -- (преобразование из строкового представления) (From : in String; Item : out Num; Last : out Positive); procedure Put -- вывод числа в строку -- (преобразование в строковое представление) (To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Ada.Text_IO.Float_IO; |
Пакет AdaText_IOInteger_IO
generic
type Num is range <>; -- параметр настройки модуля package Ada.Text_IO.Integer_IO is Default_Width : Field := Num'Width; -- ширина числа в символах Default_Base : Number_Base := 10; -- устанавливает основание системы счисления -- принимаемое по умолчанию для всех -- операций ввода/вывода procedure Get -- ввод числа из указанного файла (File : in File_Type; Item : out Num; -- тип соответствует формальному параметру настройки Width : in Field := 0); -- может быть использовано для точного указания -- количества вводимых символов procedure Get -- ввод числа из файла стандартного ввода (Item : out Num; Width : in Field := 0); procedure Put -- вывод числа в указанный файл (File : in File_Type; Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Put -- вывод числа в файл стандартного вывода (Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Get -- ввод числа из строки -- (преобразование из строкового представления) (From : in String; Item : out Num; Last : out Positive); -- индекс последнего преобразуемого символа в From procedure Put -- вывод числа в строку -- (преобразование в строковое представление) (To : out String; Item : in Num; Base : in Number_Base := Default_Base); end Ada.Text_IO.Integer_IO; |
Пакет AdaText_IOModular_IO
generic
type Num is mod <>; -- параметр настройки модуля package Ada.Text_IO.Modular_IO is Default_Width : Field := Num'Width; -- ширина числа в символах Default_Base : Number_Base := 10; -- устанавливает основание системы счисления -- принимаемое по умолчанию для всех -- операций ввода/вывода procedure Get -- ввод числа из указанного файла (File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get -- ввод числа из файла стандартного ввода (Item : out Num; Width : in Field := 0); procedure Put -- вывод числа в указанный файл (File : in File_Type; Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Put -- вывод числа в файл стандартного вывода (Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Get -- ввод числа из строки -- (преобразование из строкового представления) (From : in String; Item : out Num; Last : out Positive); procedure Put -- вывод числа в строку -- (преобразование в строковое представление) (To : out String; Item : in Num; Base : in Number_Base := Default_Base); end Ada.Text_IO.Modular_IO; |
Спецификация пакета Standard
Пакет Standard всегда находится в области видимости, поэтому все описания этого пакета всегда непосредственно доступны.
package Standard is
pragma Pure(Standard); type Boolean is (False, True); -- предопределенные знаки операций сравнения для этого типа следующие: -- function "=" (Left, Right : Boolean) return Boolean; -- function "/=" (Left, Right : Boolean) return Boolean; -- function "<" (Left, Right : Boolean) return Boolean; -- function "<=" (Left, Right : Boolean) return Boolean; -- function ">" (Left, Right : Boolean) return Boolean; -- function ">=" (Left, Right : Boolean) return Boolean; -- -- предопределенные знаки логических операций для этого типа следующие: -- function "and" (Left, Right : Boolean) return Boolean; -- function "or" (Left, Right : Boolean) return Boolean; -- function "xor" (Left, Right : Boolean) return Boolean; -- function "not" (Right : Boolean) return Boolean; type Integer is range Определяется_Реализацией; subtype Natural is Integer range 0 .. Integer'Last; subtype Positive is Integer range 1 .. Integer'Last; -- предопределенные знаки операций для этого типа следующие: -- function "=" (Left, Right : Integer'Base) return Boolean; -- function "/=" (Left, Right : Integer'Base) return Boolean; -- function "<" (Left, Right : Integer'Base) return Boolean; -- function "<=" (Left, Right : Integer'Base) return Boolean; -- function ">=" (Left, Right : Integer'Base) return Boolean; -- function ">" (Left, Right : Integer'Base) return Boolean; -- -- function "+" (Right : Integer'Base) return Integer'Base; -- function "-" (Right : Integer'Base) return Integer'Base; -- function "abs" (Right : Integer'Base) return Integer'Base; -- -- function "+" (Left, Right : Integer'Base) return Integer'Base; -- function "-" (Left, Right : Integer'Base) return Integer'Base; -- function "*" (Left, Right : Integer'Base) return Integer'Base; -- function "/" (Left, Right : Integer'Base) return Integer'Base; -- function "rem" (Left, Right : Integer'Base) return Integer'Base; -- function "mod" (Left, Right : Integer'Base) return Integer'Base; -- -- function "**" (Left: Integer'Base; Right: Natural) return Integer'Base; type Float is digits Определяется_Реализацией; -- предопределенные знаки операций для этого типа следующие: -- function "=" (Left, Right : Float) return Boolean; -- function "/=" (Left, Right : Float) return Boolean; -- function "<" (Left, Right : Float) return Boolean; -- function "<=" (Left, Right : Float) return Boolean; -- function ">=" (Left, Right : Float) return Boolean; -- function ">" (Left, Right : Float) return Boolean; -- -- function "+" (Right : Float) return Float; -- function "-" (Right : Float) return Float; -- function "abs" (Right : Float) return Float; -- -- function "+" (Left, Right : Float) return Float; -- function "-" (Left, Right : Float) return Float; -- function "*" (Left, Right : Float) return Float; -- function "/" (Left, Right : Float) return Float; -- -- function "**" (Left: Float; Right: Integer'Base) return Float; -- -- -- дополнительные знаки операций предопределены для корневых численных типов -- Root_Integer и Root_Real -- -- function "*" (Left : Root_Integer; Right : Root_Real) return Root_Real; -- function "*" (Left : Root_Real; Right : Root_Integer) return Root_Real; -- function "/" (Left : Root_Real; Right : Root_Integer) return Root_Real; -- -- -- тип Universal_Fixed - является предопределенным -- для него предопределены только следующие знаки операций: -- -- function "*" (Left : Universal_Fixed; Right : Universal_Fixed) -- return Universal_Fixed; -- function "/" (Left : Universal_Fixed; Right : Universal_Fixed) -- return Universal_Fixed; -- Описание символьного типа Character основано -- на множестве символов описанных стандартом ISO 8859-1. -- -- Символьные литералы которые соответствуют -- позициям управляющих символов отсутствуют. -- Они описываются идентификаторами -- которые записаны в нижнем регистре. type Character is (nul, soh, stx, etx, eot, enq, ack, bel, -- 0 (16#00#) .. (16#07#) bs, ht, lf, vt, ff, cr, so, si, -- 8 (16#08#) .. (16#0F#) dle, dc1, dc2, dc3, dc4, nak, syn, etb, -- 16 (16#10#) .. (16#17#) can, em, sub, esc, fs, gs, rs, us, -- 24 (16#18#) .. (16#1F#) ' ', '!', '"', '#', '$', '%', '&', ''', -- 32 (16#20#) .. (16#27#) '(', ')', '*', '+', ',', '-', '.', '/', -- 40 (16#28#) .. (16#2F#) '0', '1', '2', '3', '4', '5', '6', '7', -- 48 (16#30#) .. (16#37#) '8', '9', ':', ';', '<', '=', '>', '?', -- 56 (16#38#) .. (16#3F#) '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', -- 64 (16#40#) .. (16#47#) 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', -- 72 (16#48#) .. (16#4F#) 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', -- 80 (16#50#) .. (16#57#) 'X', 'Y', 'Z', '[', '\', ']', '^', '_', -- 88 (16#58#) .. (16#5F#) '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', -- 96 (16#60#) .. (16#67#) 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', -- 104 (16#68#) .. (16#6F#) 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', -- 112 (16#70#) .. (16#77#) 'x', 'y', 'z', '{', '|', '}', '~', del, -- 120 (16#78#) .. (16#7F#) reserved_128, reserved_129, bph, nbh, -- 128 (16#80#) .. (16#83#) reserved_132, nel, ssa, esa, -- 132 (16#84#) .. (16#87#) hts, htj, vts, pld, plu, ri, ss2, ss3, -- 136 (16#88#) .. (16#8F#) dcs, pu1, pu2, sts, cch, mw, spa, epa, -- 144 (16#90#) .. (16#97#) sos, reserved_153, sci, csi, -- 152 (16#98#) .. (16#9B#) st, osc, pm, apc, -- 156 (16#9C#) .. (16#9F#) ... ); -- Описание символьного типа Wide_Character основано -- на множестве символов описанных стандартом ISO 10646 BMP. -- -- Первые 256 символьных позиций соответствуют содержимому -- символьного типа Character type Wide_Character is (nul, soh ... FFFE, FFFF); -- Пакет ASCII считается устаревшим package ASCII is -- Управляющие символы: NUL : constant Character := Character'Val (16#00#); SOH : constant Character := Character'Val (16#01#); STX : constant Character := Character'Val (16#02#); ETX : constant Character := Character'Val (16#03#); EOT : constant Character := Character'Val (16#04#); ENQ : constant Character := Character'Val (16#05#); ACK : constant Character := Character'Val (16#06#); BEL : constant Character := Character'Val (16#07#); BS : constant Character := Character'Val (16#08#); HT : constant Character := Character'Val (16#09#); LF : constant Character := Character'Val (16#0A#); VT : constant Character := Character'Val (16#0B#); FF : constant Character := Character'Val (16#0C#); CR : constant Character := Character'Val (16#0D#); SO : constant Character := Character'Val (16#0E#); SI : constant Character := Character'Val (16#0F#); DLE : constant Character := Character'Val (16#10#); DC1 : constant Character := Character'Val (16#11#); DC2 : constant Character := Character'Val (16#12#); DC3 : constant Character := Character'Val (16#13#); DC4 : constant Character := Character'Val (16#14#); NAK : constant Character := Character'Val (16#15#); SYN : constant Character := Character'Val (16#16#); ETB : constant Character := Character'Val (16#17#); CAN : constant Character := Character'Val (16#18#); EM : constant Character := Character'Val (16#19#); SUB : constant Character := Character'Val (16#1A#); ESC : constant Character := Character'Val (16#1B#); FS : constant Character := Character'Val (16#1C#); GS : constant Character := Character'Val (16#1D#); RS : constant Character := Character'Val (16#1E#); US : constant Character := Character'Val (16#1F#); DEL : constant Character := Character'Val (16#7F#); -- Остальные символы: Exclam : constant Character := '!'; Quotation : constant Character := '"'; Sharp : constant Character := '#'; Dollar : constant Character := '$'; Percent : constant Character := '%'; Ampersand : constant Character := '&'; Colon : constant Character := ':'; Semicolon : constant Character := ';'; Query : constant Character := '?'; At_Sign : constant Character := '@'; L_Bracket : constant Character := '['; Back_Slash : constant Character := '\'; R_Bracket : constant Character := ']'; Circumflex : constant Character := '^'; Underline : constant Character := '_'; Grave : constant Character := '`'; L_Brace : constant Character := '{'; Bar : constant Character := '|'; R_Brace : constant Character := '}'; Tilde : constant Character := '~'; -- Буквы нижнего регистра: LC_A : constant Character := 'a'; LC_B : constant Character := 'b'; LC_C : constant Character := 'c'; LC_D : constant Character := 'd'; LC_E : constant Character := 'e'; LC_F : constant Character := 'f'; LC_G : constant Character := 'g'; LC_H : constant Character := 'h'; LC_I : constant Character := 'i'; LC_J : constant Character := 'j'; LC_K : constant Character := 'k'; LC_L : constant Character := 'l'; LC_M : constant Character := 'm'; LC_N : constant Character := 'n'; LC_O : constant Character := 'o'; LC_P : constant Character := 'p'; LC_Q : constant Character := 'q'; LC_R : constant Character := 'r'; LC_S : constant Character := 's'; LC_T : constant Character := 't'; LC_U : constant Character := 'u'; LC_V : constant Character := 'v'; LC_W : constant Character := 'w'; LC_X : constant Character := 'x'; LC_Y : constant Character := 'y'; LC_Z : constant Character := 'z'; end ASCII; -- Предопределенные строковые типы: type String is array (Positive range <>) of Character; pragma Pack (String); -- предопределенные знаки операций для этого типа следующие: -- function "=" (Left, Right : String) return Boolean; -- function "/=" (Left, Right : String) return Boolean; -- function "<" (Left, Right : String) return Boolean; -- function "<=" (Left, Right : String) return Boolean; -- function ">" (Left, Right : String) return Boolean; -- function ">=" (Left, Right : String) return Boolean; -- -- function "&" (Left : String, Right : String) return String; -- function "&" (Left : Character, Right : String) return String; -- function "&" (Left : String, Right : Character) return String; -- function "&" (Left : Character, Right : Character) return String; type Wide_String is array (Positive range <>) of Wide_Character; pragma Pack (Wide_String); -- для типа Wide_String предопределены такие же знаки операций -- что и для типа String type Duration is delta Определяется_Реализацией range Определяется_Реализацией; -- для типа Duration предопределены такие же знаки операций -- что и для любого вещественного типа с фиксированной точкой. -- Предопределенные исключения: Constraint_Error : exception; Program_Error : exception; Storage_Error : exception; Tasking_Error : exception; end Standard; |
Copyright (C) А.Гавва | V-0.4w май 2004 |
Спецификация пакета System
package System is
pragma Pure (System); type Name is Определяемый_Реализацией_Перечислимый_Тип; System_Name : constant Name := Определяется_Реализацией; -- Системно-зависимые именованные числа Min_Int : constant := Root_Integer'First; Max_Int : constant := Root_Integer'Last; Max_Binary_Modulus : constant := Определяется_Реализацией; Max_Nonbinary_Modulus : constant := Определяется_Реализацией; Max_Base_Digits : constant := Root_Real'Digits; Max_Digits : constant := Определяется_Реализацией; Max_Mantissa : constant := Определяется_Реализацией; Fine_Delta : constant := Определяется_Реализацией; Tick : constant := Определяется_Реализацией; -- Описания относящиеся к хранению информации в памяти type Address is Определяется_Реализацией; -- обычно, приватный тип Null_Address : constant Address; Storage_Unit : constant := Определяется_Реализацией; Word_Size : constant := Определяется_Реализацией * Storage_Unit; Memory_Size : constant := Определяется_Реализацией; -- Сравнение адресов function "<" (Left, Right : Address) return Boolean; function "<=" (Left, Right : Address) return Boolean; function ">" (Left, Right : Address) return Boolean; function ">=" (Left, Right : Address) return Boolean; function "=" (Left, Right : Address) return Boolean; -- Другие системно-зависимые описания type Bit_Order is (High_Order_First, Low_Order_First); Default_Bit_Order : constant Bit_Order; -- Описания относящиеся к приоритетам (RM D.1) subtype Any_Priority is Integer range Определяется_Реализацией; subtype Priority is Any_Priority range Any_Priority'First..Определяется_Реализацией; 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; |
Copyright (C) А.Гавва | V-0.4w май 2004 |
Стандартно определенные атрибуты типов
Список стандартно определенных атрибутов типов Ады приводится в приложении K (Annex K) руководства по языку программирования Ада (RM-95).
P'Access | - | где P - любая подпрограмма. Возвращает значение ссылочного типа, которое указывает на подпрограмму P. |
|
X'Access | - | где X: любой объект с косвенным доступом. Возвращает значение ссылочного типа, которое указывает на X. |
|
X'Address | - | где X: любой объект или программный модуль. Возвращает адрес первого распределенного для хранения X элемента памяти как значение типа System.Address. |
|
S'Adjacent | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает смежное по отношению к первому параметру машинное число, в указанном вторым параметром направлении. |
|
S'Aft | - | где S: любой вещественный тип с фиксированной точкой. Возвращает значение типа Universal_Integer, которое показывает требуемое число десятичных цифр после десятичной точки для обеспечения величины delta при представлении S. |
|
X'Alignment | - | где X: любой тип или объект. Возвращает значение типа Universal_Integer, указывающее выравнивание X в памяти. |
|
S'Base | - | где S: любой скалярный тип. Возвращает неограниченный базовый тип для S. |
|
S'Bit_Order | - | где S: любой тип записи. Возвращает битовый порядок для S как значение типа System.Bit_Order. |
|
P'Body_Version | - | где P: любой программный модуль. Возвращает строку которая идентифицирует версию тела компилируемого модуля P. |
|
T'Callable | - | где T: любая задача. Возвращает значение True, если T может быть вызвана. |
|
E'Caller | - | где E: имя любой точки входа. Возвращает значение типа Task_ID, которое идентифицирует обрабатываемую в текущий момент задачу, обратившуюся к точке входа задачи E. Использование этого атрибута допустимо только внутри инструкции принятия (для задачи-сервера) или внутри тела входа (для защищенного модуля). |
|
S'Ceiling | - | где S: любой вещественный тип с плавающей точкой. Функция возвращающая наименьшее целочисленное значение, которое больше или равно ее параметру. |
|
S'Class | - | где S: любой тэговый тип. Возвращает надклассовый тип для класса корнем иерархии которого будет тип S. |
|
X'Component_Size | - | где X: любой объект или тип массива. Возвращает значение типа Universal_Integer которое представляет битовый размер компонентов X. |
|
S'Compose | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает значение вещественного типа с плавающей точкой, комбинируя дробную часть, которая представлена первым параметром, и порядок, который представлен вторым параметром. |
|
A'Constrained | - | где A: любой тип с дискриминантом. Возвращает True когда A является ограниченным. |
|
S'Copy_Sign | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает значение величина которого определяется первым параметром, а знак - вторым параметром. |
|
E'Count | - | где E: имя любой точки входа. Возвращает значение типа Universal_Integer, показывающее число обращений к точке входа E которые находятся в очереди. |
|
S'Definite | - | где S: любой формально неопределенный тип. Возвращает True если фактический тип S определен. |
|
S'Delta | - | где S: любой вещественный тип с плавающей точкой. Возвращает значение типа Universal_Real, показывающее величину значения delta для S | |
S'Denorm | - | где S: любой вещественный тип с плавающей точкой. Возвращает True если ненормализованные значения S являются машинными числами. |
|
S'Digits | - | где S: любой тип decimal или вещественный тип с плавающей точкой. Возвращает значение типа Universal_Integer, показывающее число цифр для S. |
|
S'Exponent | - | где S: любой вещественный тип с плавающей точкой. Функция возвращающая значение типа Universal_Integer, которое представляет нормализованный порядок ее параметра. |
|
S'External_Tag | - | где S: любой тэговый тип. Возвращает представление S'Tag как значение типа String. |
|
A'First(N) | - | где A: любой массив. Возвращает нижнюю границу диапазона N-го индекса массива A. |
|
A'First | - | где A: любой массив. Возвращает нижнюю границу диапазона первого индекса массива A. |
|
S'First | - | где S: любой скалярный тип. Возвращает нижнюю границу диапазона значений типа S. |
|
R.C'First_Bit | - | где R.C: любой компонент C записи типа R. Возвращает значение типа Universal_Integer, которое представляет число битов до первого бита C внутри записи типа R. |
|
S'Floor | - | где S: любой вещественный тип с плавающей точкой. Функция возвращающая наибольшее целочисленное значение, которое больше или равно ее параметру. |
|
S'Fore | - | где S: любой вещественный тип с плавающей точкой. Возвращает значение типа Universal_Integer которое показывает минимально необходимое для представления значения S число символов до десятичной точки. |
|
S'Fraction | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает дробную часть ее параметра. |
|
E'Identity | - | где E: любое исключение. Возвращает значение типа Exception_ID которое уникально идентифицирует E. |
|
T'Identity | - | где T: любая задача. Возвращает значение типа Task_ID которое уникально идентифицирует T. | |
S'Image | - | где S: любой скалярный тип. Функция которая возвращает представление ее параметра как значение типа String. |
|
S'Input | - | где S: любой тип. Функция которая читает и возвращает значение типа S из потока, который указывается ее параметром. |
|
S'Class'Input | - | где S'Class: любой надклассовый тип. Функция которая читает из указанного как параметр потока тэг, затем, выполняет диспетчеризацию (перенаправление) вызова к подпрограмме указываемой атрибутом 'Input для типа, который идентифицируется значением прочитанного тэга, после чего, возвращает значение этого типа. |
|
A'Last(N) | - | где A: любой массив. Возвращает верхнюю границу диапазона N-го индекса массива A. |
|
A'Last | - | где A: любой массив. Возвращает верхнюю границу диапазона первого индекса массива A. |
|
S'Last | - | где S: любой скалярный тип. Возвращает верхнюю границу диапазона значений типа S. |
|
R.C'Last_Bit | - | где R.C: любой компонент C записи типа R. Возвращает значение типа Universal_Integer, которое представляет число битов до последнего бита C внутри записи типа R. |
|
S'Leading_Part | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает главную часть ее первого параметра как число системы исчисления указанной как второй параметр. |
|
A'Length(N) | - | где A: любой массив. Возвращает длину N-го измерения массива A как значение типа Universal_Integer. |
|
A'Length | - | где A: любой массив. Возвращает длину первого измерения массива A как значение типа Universal_Integer. |
|
S'Machine | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает ближайшее к ее параметру машинно-представляемое число. |
|
S'Machine_Emax | - | где S: любой вещественный тип с плавающей точкой. Возвращает наибольший порядок для S как значение типа Universal_Integer. |
|
S'Machine_Emin | - | где S: любой вещественный тип с плавающей точкой. Возвращает наименьший порядок для S как значение типа Universal_Integer. |
|
S'Machine_Mantissa | - | где S: любой вещественный тип с плавающей точкой. Возвращает для машинного представления S число цифр в мантиссе как значение типа Universal_Integer. |
|
S'Machine_Overflows | - | где S: любой вещественный тип. Возвращает True если было обнаружено переполнение или деление на ноль и возбуждено исключение Constraint_Error для каждой предопределенной операции возвращающей результат типа S. |
|
S'Machine_Radix | - | где S: любой вещественный тип. Возвращает основание системы счисления для машинного представления S как значение типа Universal_Integer. |
|
S'Machine_Rounds | - | где S: любой вещественный тип. Возвращает True если было выполнено округление неточного результата для каждой предопределенной операции возвращающей результат типа S. |
|
S'Max | - | где S: любой скалярный тип. Функция которая возвращает большее значение из двух переданных ей параметров. |
|
S'Max_Size_In_Storage_Elements | - | где S: любой тип. Возвращает значение типа Universal_Integer показывающее максимальное число элементов памяти занимаемых значением типа S, которое требуется при обращении к подпрограмме System.Storage_Pools.Allocate как параметр Size_In_Storage_Elements для получения значения ссылающегося на S типа. |
|
S'Min | - | где S: любой скалярный тип. Функция которая возвращает меньшее значение из двух переданных ей параметров. |
|
S'Model | - | где S: любой вещественный тип с плавающей точкой. Функция возвращающая образец числа значение которого будет смежным значением ее параметра. |
|
S'Model_Emin | - | где S: любой вещественный тип с плавающей точкой. Возвращает образец числа соответствующий S'Model_Emin. |
|
S'Model_Epsilon | - | где S: любой вещественный тип с плавающей точкой. Возвращает абсолютную разницу между 1.0 и следующим наибольшим образцом числа S как значение типа Universal_Real. |
|
S'Model_Mantissa | - | где S: любой вещественный тип с плавающей точкой. Возвращает образец числа соответствующий S'Machine_Mantissa. |
|
S'Model_Small | - | где S: любой вещественный тип с плавающей точкой. Возвращает наименьший положительный образец числа S как значение типа Universal_Real. |
|
S'Modulus | - | где S: любой модульный тип. Возвращает основание системы счисления S как значение типа Universal_Integer. |
|
S'Output | - | где S: любой тип. Процедура записывающая ее второй параметр в поток, который представлен ее первым параметром, включая любые границы или дискриминанты. |
|
S'Class'Output | - | где S'Class: любой надклассовый тип. Процедура записывающая тэг ее второго параметра в поток, который указан как первый параметр, затем, выполняет диспетчеризацию (перенаправление) вызова к подпрограмме указываемой атрибутом 'Output для типа, который идентифицируется значением тэга ее второго параметра. |
|
D'Partition_ID | - | где D: любое описание уровня библиотеки. Возвращает значение типа Universal_Integer которое идентифицирует раздел (partition) распределенной программы в которой выполнена элаборация D. |
|
S'Pos | - | где S: любой дискретный тип. Функция которая возвращает номер позиции ее параметра как значение типа Universal_Integer. |
|
R.C'Position | - | где R.C: любой компонент C записи типа R. То же самое, что и R.C'Address - R'Address. |
|
S'Pred | - | где S: любой дискретный тип. Функция возвращающая значение у которого величина номера позиции на единицу меньше чем номер позиции ее параметра. |
|
A'Range(N) | - | где A: любой тип массива. Эквивалентно A'First(N) .. A'Last(N), кроме случая когда вычисление A было выполнено один раз. |
|
A'Range | - | где A: любой тип массива. Эквивалентно A'First .. A'Last, кроме случая когда вычисление A было выполнено один раз. |
|
S'Range | - | где S: любой скалярный тип. Эквивалентно S'First .. S'Last. |
|
S'Read | - | где S: любой тип. Процедура читающая ее второй параметр из потока, который указан ее первым параметром. |
|
S'Class'Read | - | где S'Class: любой надклассовый тип. Процедура выполняющая диспетчеризацию (перенаправление) вызова к подпрограмме указываемой атрибутом Read для типа, который идентифицируется значением тэга ее второго параметра. |
|
S'Remainder | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает остаток от деления ее первого параметра на ее второй параметр. |
|
S'Round | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает округленное значение ее параметра. |
|
S'Rounding | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает ближайшее к ее параметру целое значение. |
|
S'Safe_First | - | где S: любой вещественный тип с плавающей точкой. Возвращает нижнюю границу сохранного диапазона S как значение типа Universal_Real. |
|
S'Safe_Last | - | где S: любой вещественный тип с плавающей точкой. Возвращает верхнюю границу сохранного диапазона S как значение типа Universal_Real. |
|
S'Scale | - | где S: любой вещественный тип с плавающей точкой. Возвращает для значения S позицию точки относительно крайней правой значащей цифры как значение типа Universal_Integer. |
|
S'Scaling | - | где S: любой вещественный тип с плавающей точкой. Функция которая масштабирует ее первый параметр согласно основания машинной системы исчисления возведенной в степень ее второго параметра. |
|
S'Signed_Zeros | - | где S: любой вещественный тип с плавающей точкой. Возвращает True если аппаратное представление для S обладает возможностью представления и положительного, и отрицательного нуля. |
|
X'Size | - | где X: любой тип или объект. Возвращает размер X в битах как значение типа Universal_Integer. |
|
S'Small | - | где S: любой вещественный тип с плавающей точкой. Возвращает наименьшее используемое внутри типа значение для представления S как значение типа Universal_Real. |
|
S'Storage_Pool | - | где S: любой ссылочный тип. Возвращает пул пространства памяти который используется для S как значение типа Root_Storage_Pool'Class. |
|
S'Storage_Size | - | где S: любой ссылочный тип. Возвращает результат вызова Storage_Size(S'Storage_Pool). |
|
T'Storage_Size | - | где T: любая задача. Возвращает число элементов памяти зарезервированных для T как значение типа Universal_Integer. |
|
S'Succ | - | где S: любой скалярный тип. Функция возвращающая значение у которого величина номера позиции на единицу больше чем номер позиции ее параметра. |
|
X'Tag | - | где X: любой тэговый тип или объект надклассового типа. Возвращает тэг X как значение типа Ada.Tags.Tag. |
|
T'Terminated | - | где T: любая задача. Возвращает True если выполнение T завершено. |
|
S'Truncation | - | где S: любой вещественный тип с плавающей точкой. Функция которая округляет ее параметр в направлении нуля. |
|
S'Unbiased_Rounding | - | где S: любой вещественный тип с плавающей точкой. Функция которая возвращает ближайшее к ее параметру целочисленное значение, выполняя округление в направлении четного целого если значение параметра располагается точно между двумя целыми. |
|
X'Unchecked_Access | - | где X: любой объект с косвенным доступом. Возвращает то же самое значение, что и X'Access, однако при этом не осуществляется проверка правильности обращения. |
|
S'Val | - | где S: любой дискретный тип. Функция возвращающая значение типа S номера позиции которого равен величине ее параметра. |
|
X'Valid | - | где X: любой скалярный объект. Возвращает True если X - это нормальный стандартный объект имеющий допустимое представление. |
|
S'Value | - | где S: любой скалярный тип. Функция возвращающая значение типа S представление которого задано в виде значения типа String, игнорируя ведущие и завершающие пробелы. |
|
P'Version | - | где P: любой программный модуль. Возвращает строку (значение типа String) идентифицирующую версию компилируемого модуля который содержит описание P. |
|
S'Wide_Image | - | где S: любой скалярный тип. Функция которая возвращает представление ее параметра как значение типа Wide_String. |
|
S'Wide_Value | - | где S: любой скалярный тип. Функция возвращающая значение типа S представление которого задано в виде значения типа Wide_String, игнорируя ведущие и завершающие пробелы. |
|
S'Wide_Width | - | где S: любой скалярный тип. Возвращает максимальную длину значения типа Wide_String, возвращенного при обращении к S'Wide_Image, как значение типа Universal_Integer. |
|
S'Width | - | где S: любой скалярный тип. Возвращает максимальную длину значения типа String, возвращенного при обращении к S'Image, как значение типа Universal_Integer. |
|
S'Write | - | где S: любой тип. Процедура записывающая значение ее второго параметра в поток, который указан ее первым параметром. | |
S'Class'Write | - | где S'Class: любой надклассовый тип. Процедура выполняющая диспетчеризацию (перенаправление) вызова к подпрограмме указываемой атрибутом 'Write для типа, который идентифицируется значением тэга ее второго параметра. |
Стандартные директивы Ады
Список стандартных директив компилятора Ады приводится в приложении L (Annex L) руководства по языку программирования Ада (RM-95).
All_Calls_Remote[(library_unit_name)]; | - | Для выполнения вызова подпрограмм пакета всегда использовать механизм RPC (Remote Procedure Call - вызов удаленной подпрограммы) | |
Asynchronous(local_name); | - | Вызов подпрограммы производится асинхронно. При этом, активируется выполнение удаленной подпрограммы и, не дожидаясь её завершения, происходит продолжение выполнения вызвавшей подпрограммы. | |
Atomic(local_name); | - | Чтение/запись указанного объекта должно выполняться без прерываний | |
Atomic_Components(array_local_name); | - | Чтение/запись указанного массива компонентов должно выполняться без прерываний | |
Attach_Handler(handler_name, expression); | - | Установить процедуру обработки прерывания | |
Controlled(first_subtype, local_name); | - | Отключает "сборку мусора" для указанного типа данных. (не имеет эффекта в реализации компилятора gnat) |
|
Convention( [Convention =>] convention_identifier, [Entity=>] local_name); |
- | Использовать соответствующие языковые соглашения для указанного объекта | |
Discard_Names[([On =>] local_name)]; | - | Отказаться от ASCII-представления объекта, которое используется атрибутом 'Img | |
Elaborate( library_unit_name{, library_unit_name}); |
- | Предварительно выполнить элаборацию указанного пакета | |
Elaborate_All( library_unit_name{, library_unit_name}); |
- | Предварительно выполнить элаборацию всех спецификаций и тел пакетов от которых зависит указанный модуль | |
Elaborate_Body[(library_unit_name)]; | - | Выполнить элаборацию тела указанного модуля сразу после элаборации его спецификации | |
Export( [Convention =>] convention_identifier, [Entity =>] local_name[, [External_name =>] string_expression] [, [Link_Name =>] string_expression]); |
- | Экспортировать объект из Ада-программы для использования в другом языке программирования | |
Import( [Convention =>] convention_identifier, [Entity =>] local_name[, [External_name =>] string_expression] [, [Link_Name =>] string_expression]); |
- | Импортирует объект, описанный средствами другого языка программирования, для использования его в Ада-программе | |
Inline(name{, name}); | - | Указывает подпрограмму при обращении к которой должна осуществляться встроенная подстановка машинного кода этой подпрограммы вместо выполнения стандартного вызова этой подпрограммы (так называемая inline-подстановка). | |
Inspection_Point [(object_name{, object_name})]; |
- | В данной точке программы должна быть обеспечена возможность чтения значения указанного объекта (необходимо для сертификации правильности кода). | |
Interrupt_Handler(handler_name); | - | Указывает процедуру-обработчик прерывания | |
Interrupt_Priority([expression]); | - | Определяет приоритет задачи и/или защищенного объекта для случаев возникновения блокировки | |
Linker_Options(string_expression); | - | Передает строку опций для компоновщика (linker). | |
List(identifier); | - | Вывести листинг исходного текста после компиляции. | |
Locking_Policy(policy_identifier); | - | Определяет как защищенный объект будет заблокирован при возникновении блокировки. | |
Normalize_Scalars; | - | Устанавливать, когда это возможно, значения скалярных переменных в недопустимое значение | |
Optimize(identifier); | - | Указать как должны быть оптимизированы инструкции | |
Pack(first_subtype_local_name); | - | Указывает, что тип данных должен быть упакован | |
Page; | - | Указывает на начало новой страницы в листинге программы | |
Preelaborate(library_unit_name); | - | Указывает на необходимость предварительной элаборации указаанного пакета | |
Priority(expression); | - | Определяет приоритет задачи | |
Pure[(library_unit_name)]; | - | Указывает, что пакет "чистый" (pure). | |
Queuing_Policy(policy_identifier); | - | Определяет правило сортировки задач и/или защищенных объектов при постановке в очередь. | |
Remote_Call_Interface[(library_unit_name)]; | - | Подпрограммы пакета могут вызываться с использованием механизма RPC (Remote Procedure Call - вызов удаленной подпрограммы) | |
Remote_Types[(library_unit_name)]; | - | Пакет определяет типы, предназначенные для использования совместно с механизмом RPC (Remote Procedure Call - вызов удаленной подпрограммы) | |
Restrictions(restriction{, restriction}); | - | Отключает некоторые языковые средства. | |
Reviewable; | - | Предусматривает профилирование во время выполнения (подобно gprof). | |
Shared_Passive[(library_unit_name)]; | - | Используется для совместного использования глобальных данных между разными RPC-разделами распределенной программы. | |
Storage_Size(expression); | - | Указывает общий размер пространства стека для задачи. | |
Suppress(identifier[, [On =>] name]); | - | Отключает специфические проверки для общих исключений. | |
Task_Dispatching(policy_identifier); | - | Определяет, для задачи, правила сортировки вызовов при диспетчеризации (например, FIFO_Within_Priorities). | |
Volatile(local_name); | - | Указывает, что значение переменной может изменяться в непредсказуемые моменты, вне зависимости от работы программы. | |
Volatile_Components(array_local_name); | - | Указывает, что значение массива компонентов может изменяться в непредсказуемые моменты, вне зависимости от работы программы. |