Справочник Ada 2012
13.2 Упакованные типы
Аспект Pack, имеющий значение True, указывает, что при выборе представления составного типа главным критерием должно быть минимизация занимаемой памяти.
Абзацы с 2 по 4 были перемещены в Приложение J, «Устаревшие возможности».
Статические семантические правила
Для полного объявления составного типа может быть указан следующий язык-определённый аспект представления:
Pack
Тип аспекта Pack – Boolean. Когда аспект Pack имеет значение True для типа, тип (или его расширенная часть) называется упакованным. Для расширенного типа родительская часть упаковывается так же, как и родительский тип, а указание Pack приводит к упаковке только расширенной части.
Если прямо указан, аспект_определения должен быть статическим выражением. Если он не указан (включая наследование), аспект имеет значение False.
Рекомендации для реализации
Если тип упакован, реализация должна попытаться минимизировать память, выделенную для объектов этого типа, возможно, в ущерб скорости доступа к компонентам, при условии приемлемой сложности расчётов адресации.
Этот абзац был удалён.
Рекомендуемый уровень поддержки аспекта Pack:
- Любой компонент упакованного типа, который является типом по ссылке, указан как независимо адресуемый или содержит ссылку на другую часть, должен быть выровнен в соответствии с выравниванием его подтипа.
- Для упакованного типа записи компоненты должны быть упакованы как можно более плотно, с учётом вышеуказанных требований к выравниванию, размеров подтипов компонентов и любого описания_представления_записи, применимого к типу; реализация может, но не обязана, переупорядочивать компоненты или пересекать границы выравнивания слов для улучшения упаковки. Компонент, размер которого больше размера слова, может быть размещён на целое число слов.
- Для упакованного типа массива, если размер подтипа компонента меньше или равен размеру слова, размер_компонента должен быть меньше или равен размеру подтипа компонента, округлённому до ближайшего кратного размера слова, если это не нарушает вышеуказанные требования к выравниванию.