Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

13.2 Упакованные типы

Аспект Pack со значением True указывает, что при выборе представления составного типа основным критерием должно быть минимизация памяти.
Абзацы с 2 по 4 были перемещены в Приложение J, «Устаревшие особенности».

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

Для полного объявления типа составного типа можно указать следующий определяемый языком аспект представления:
Pack
Тип аспекта Pack — это Boolean. Когда аспект Pack равен True для типа, тип (или расширенная часть) считается упакованным. Для расширения типа родительская часть упаковывается так же, как и для родительского типа, а указание Pack приводит к упаковке только расширенной части.
Если указан непосредственно, aspect_definition должен быть статическим выражением. Если не указан (включая наследование), аспект имеет значение False.

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

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


Spec-Zone.ru

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