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

13.2 Директива Pack

Директива Pack указывает, что основным критерием при выборе представления составного типа должно быть минимизация занимаемого места.

Синтаксис

Директива Pack имеет следующий вид:
pragma Pack(first_subtype_local_name);

Правила легальности

Идентификатор first_subtype_local_name директивы Pack должен обозначать составной подтип.

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

Директива Pack определяет аспект упаковки представления; тип (или расширяющая часть) называется упакованным. Для расширения типа родительская часть упаковывается так же, как и родительский тип, а директива Pack вызывает упаковку только расширяющей части.

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

Если тип упакован, реализация должна стремиться к минимизации памяти, выделяемой для объектов этого типа, возможно, в ущерб скорости доступа к компонентам, с учетом разумной сложности вычислений адресов.
Если упакованный тип содержит компонент, который не является типом по ссылке и не имеет части, на которую ссылаются несколько переменных, такой компонент не обязан выравниваться согласно выравниванию его подтипа; в частности, он не обязан размещаться на границе элемента памяти.
Рекомендуемый уровень поддержки директивы Pack:
  • Для упакованного типа-записи компоненты должны быть упакованы максимально плотно, с учетом размеров подтипов компонентов и любых применимых к типу record_representation_clause; реализация может, но не обязана, переупорядочивать компоненты или пересекать границы выровненных слов для улучшения упаковки. Компонент, размер которого больше размера слова, может быть размещен на целочисленном количестве слов.
  • Для упакованного типа-массива, если размер подтипа компонента меньше или равен размеру слова, и Component_Size не указан для типа, Component_Size должен быть меньше или равен размеру подтипа компонента, округлённому до ближайшего кратного размеру слова.


Spec-Zone.ru

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