Справочник по Ada 95
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 должен быть меньше или равен размеру подтипа компонента, округленному до ближайшего кратного размеру слова.