ГОСТ Р ИСО/МЭК 8825-3—2016
Ь) класс кодирования в текущей точке приложения не является ссылкой на другой класс кодиро
вания: в этом случае спецификация ECN имеет ошибку.
13.2.10.2 Если кодирование применено в точке приложения к классу кодирования, а он не от
носится к категории «факультативные возможности» или «тег» и не имеет компонентов (см. 13.2.7), то
такое применение полностью определяет кодирование этого класса и заканчивает процедуру.
13.2.10.3 Если кодирование применено в точке приложения к классу кодирования, который отно
сится к категории «факультативные возможности», то точка приложения переходит к факультативному
компоненту (возможно, тегированному).
13.2.10.4 Если кодирование применено в точке приложения к классу кодирования, который от
носится к категории «тег», то точка приложения переходит к тегированному элементу, а процедуры из
13.2.10 применяются рекурсивно.
13.2.10.5 Если кодирование применимо в точке приложения к классу кодирования, который имеет
компонент, относящийся к какому-либо вложенному типу, то процедуры из 13.2.10 применяются рекур
сивно к каждому компоненту.
Примечание — Если объект кодирования будучи применен к классу в категории «открытый тип» со
держит ENCODED WITH, то это определяет наборобъектов кодирования, применяемый к компоненту, в противном
случае комбинированный набор объектов кодирования, применяемый к этому классу, применяется и к компоненту
(см. 23.10.2).
13.2.10.6 Если кодирование применено в точке приложения к классу кодирования, который имеет
компонент, относящийся к классу в категории «цепочка битов» или «цепочка октетов» с вложенным
типом, связанным со значениями, то могут встретиться четыре случая:
a) ограничение содержимого имеет ENCODED BY. а объект кодирования для этого класса либо не
содержит спецификации кодирования вложенного типа, либо указывает, что он не отменяет ENCODED
BY (см. 22.11). В этом случае для вложенного типа используется спецификация ENCODED BY. а точка
приложения переходит к вложенному типу с использованием этой спецификации кодирования:
b
) ограничение содержимого имеет ENCODED BY. но объект кодирования для этого класса содер
жит спецификацию кодирования вложенного типа и указывает, что он отменяет ENCODED BY. В этом
случае для вложенного типа применяется спецификация в объекте кодирования, а точка приложения
переходит к вложенному типу с использованием этой спецификации кодирования;
c) ограничение содержимого не имеет ENCODED BY. а объект кодирования для этого класса со
держит спецификацию кодирования вложенного типа. В этом случае к вложенному типу применяется
спецификация в объекте кодирования, а точка приложения переходит к вложенному типу с использова
нием этой спецификации кодирования;
d) ограничение содержимого не содержит ENCODED BY. а объект кодирования для этого класса
не содержит спецификации кодирования вложенного типа. В этом случае комбинированный набор объ
ектов кодирования, прилагаемый к этому классу, применяется также к типу содержимого, а точка при
ложения переходит к вложенному типу с использованием этой спецификации кодирования.
13.2.10.7 Если в комбинированном наборе объектов кодирования нет объекта кодирования того
же класса (см. 17.1.7), что и текущая точка приложения, а текущая точка приложения является спра
вочным именем, то она разыменуется, а эти процедуры применяются рекурсивно к новой структуре
кодирования.
13.2.10.8 В других случаях спецификация ECN будет ошибочной.
13.2.11Вышеописанный алгоритм может быть суммирован следующим образом: комбинирован
ный набор объектов кодирования применяется по принципу «сверху вниз». Если в этом процессе встре чается
справочное имя структуры кодирования, а в комбинированном наборе объектов кодирования имеется
объект, который может кодировать его. то этот объект определяет его кодирование. В других случаях
справочное имя расширяется путем разыменования. Если на какой-либо стадии потребуется
(но не присутствует) кодирование для класса кодирования, который не может быть разыменован, то
спецификация ECN неверна, а комбинированный класс кодирования считается неполным. Когда до
стигнут простейший класс битового поля, кодирование заканчивается на кодировании этого класса; од
нако если он имеет какой-либо вложенный тип, кодирование продолжается до генерируемой структуры
кодирования, соответствующей этому вложенному типу. Когда достигнут тип с компонентами, процесс
продолжается путем применения комбинированного набора объектов кодирования к каждому компо
ненту независимо. Когда участвуют теги и факультативные возможности, класс функциональных воз
можностей кодируется первым, затем кодируется класс в категории «тег» и. наконец, элемент. Когда
37