Руководство по Ada (Ada 2022)
13.5.2 Атрибуты места хранения
Статическая семантика
Для компонента C составного, не массивового объекта R, определены атрибуты места хранения:
R.C'Position
Если для составного типа применяется порядок битов, отличный от стандартного, и если в описании_компонента указано расположение C, обозначает значение, заданное для позиции описания_компонента; в противном случае, обозначает то же значение, что и R.C'Address – R'Address. Значение этого атрибута имеет тип universal_integer.
R.C'First_Bit
Если для составного типа применяется порядок битов, отличный от стандартного, и если в описании_компонента указано расположение C, обозначает значение, заданное для первого_бита описания_компонента; в противном случае, обозначает смещение, от начала первого из элементов хранения, занимаемых C, первого бита, занимаемого C. Это смещение измеряется в битах. Первый бит элемента хранения имеет номер ноль. Значение этого атрибута имеет тип universal_integer.
R.C'Last_Bit
Если для составного типа применяется порядок битов, отличный от стандартного, и если в описании_компонента указано расположение C, обозначает значение, заданное для последнего_бита описания_компонента; в противном случае, обозначает смещение, от начала первого из элементов хранения, занимаемых C, последнего бита, занимаемого C. Это смещение измеряется в битах. Значение этого атрибута имеет тип universal_integer.
Рекомендации по реализации
Если компонент представлен с помощью указателя (например, смещения) на фактические данные компонента, и эти данные соприкасаются с остальной частью объекта, то атрибуты места хранения должны отражать место фактических данных, а не указателя. Если компонент размещен разрозненно относительно остальной части объекта, то при обращении к одному из его атрибутов места хранения должно генерироваться предупреждение.