ГОСТ Р ИСО/МЭК 8825-3—2016
9.16.9 Возможно также определить объекты кодирования для класса «OPTIONAL (или для любого
класса категории «факультативные возможности»), который заменяет факультативный компонент на
параметризованную структуру замены (часто структуру, содержащую поле «BOOLEAN в качестве опре
делителя наличия) (пример этого приводится в D.3.2.3).
9.16.10 Для таких классов конструктора, как «CONCATENATION. «REPETITION и т. п.. возможно
также определить объекты кодирования, которые заменяют не полную структуру, а отдельно каждый
компонент (или только обязательные, или только факультативные компоненты).
9.16.11 Более развитым, но и более мощным механизмом является требование к действию за
мены включать также введение определенного поля в заголовок структуры «CONCATENATION (или
аналогичной структуры) (пример этого приводится в D.3.1.5).
9.17 Отображение абстрактных значений
в
поля структур кодирования
Имеются шесть механизмов, предусмотренных для этой цели.
9.17.1 Первый механизм — это отображение указанных абстрактных значений, связанных с одним
простым классом кодирования, в указанные абстрактные значения, связанные с другим простым клас
сом кодирования. Это может использоваться многими способами. Например, значения «цепочки знаков»
(цифр) могут быть отображены в целочисленные значения и т. д. (см. 19.2) (см. пример в D.1.10.2).
9.17.2 Второй механизм — это отображение полного поля одной структуры кодирования в поле
совместимой структуры кодирования, которая может содержать дополнительные поля обычно для ис
пользования в качестве определителей длины или выбора (см. 19.3) (см. пример в D.2.8.3).
9.17.3 Третий механизм — это отображение путем трансформирования всех абстрактных значе
ний. связанных одним классом кодирования, в абстрактные значения, связанные с другим (обычно, но
не обязательно) классом кодирования, используя некоторый трансформирующий объект кодирования
(см. 9.18). Этим механизмом возможно, например, отобразить «INTEGER в «CHARS, чтобы получить
знаки, которые могут быть затем кодированы любым желательным способом (например, способом
«двоично-кодированное десятичное число» или способом ASCII) (см. пример в D.1.6.3).
9.17.4 Четвертый механизм отображения — это использование указанного упорядочения аб
страктных значений определенных типов и конструкций и отображение согласно этому упорядочению.
Это образует очень мощные средства кодирования абстрактных значений, связанных с одним классом
кодирования, как будто они были абстрактными значениями, связанными с полностью независимым
классом кодирования (см. 19.5) (см. пример в D. 1.4.2).
9.17.5 Пятый механизм — это распределение абстрактных значений (используя нотацию диапа
зона значений), связанных с одним классом кодирования (обычно «INTEGER), в поля другого класса
кодирования (см. примеры в 19.6 и D.2.1.3).
9.17.6 Последний механизм позволяет спецификатору ECN обеспечить явное отображение це
лочисленных значений (которые могут быть образованы более ранним отображением, например, из
класса «ENUMERATED) в биты, которые должны использоваться для кодирования таких значений. Это
предназначается для поддержки кодовых последовательностей Хаффмана, где частость появления
каждого значения известна (по крайней мере приблизительно) и где требуется оптимальное кодирова
ние. В приложении Е подробно описываются коды последовательностей Хаффмана и даются примеры
этого механизма, а также ссылки на программное обеспечение, которое будет генерировать синтаксис
ECN для этих отображений, задавшись только относительной частостью, с которой, как ожидается, бу дет
использоваться каждое значение целого числа (см. 19.7).
9.18 Преобразоватоли и композиции преобразования
9.18.1 Преобразователи — это объекты кодирования из класса «TRANSFORM. Они могут ис
пользоваться для преобразования абстрактных значений между разными классами кодирования и для
определения простых арифметических функций, таких как умножение на фиксированное значение, вы
читание фиксированного значения и т. п. При последовательном применении они дают возможность
указывать общую арифметику (см. 19.4) (см. пример в D.2.4.2).
9.18.2 Преобразователь может взять одиночное значение в качестве своего источника и затем об
разовать одиночное значение в качестве своего результата. Ниже даются классификационные группы
значений, которые могут быть источниками и результатами преобразователей:
- целое число;
- булево значение:
19