ГОСТ Р ИСО/МЭК 8825-3—2016
13.2.4 После этого схематического конструирования начинается кодирование с именем «encoding-
classreference» структур кодирования, указанных в приложении кодирования (см. 13.1.2 и 17.5).
13.2.5 Когда в ELM имеется несколько приложений кодирования, правила из 12.2 гарантируют, что
применения не будут перекрываться. Они обрабатываются независимо. Аналогично приложения коди
рований к структурам кодирования в модулях EDM (определяемые в 13.2.10) всегда не перекрываются. В
последующих подразделах приведены правила применения к одиночной структуре кодирования.
13.2.6 Объекты кодирования из комбинированного набора объектов кодирования применяются
в точке приложения. Точкой приложения является первоначально «encodingclassreference» для гене
рируемой структуры кодирования (когда применение происходит в ELM. как определено в 13.1.2) или
компонент структуры кодирования (когда применение происходит в EDM. как определено в 17.5).
13.2.7 Любой класс кодирования в категориях «альтернативы», «конкатенация» и «повторение»
(см. 16.1.8.16.1.9 и 16.1.10) является конструктором кодирования.
13.2.8 Термин «компонент» в последующем тексте относится к любым таким элементам.
a) альтернативы конструктора, относящегося к категории «альтернативы»;
b
) поле, следующее за конструктором, относящимся к категории «повторение»,
c) компоненты конструктора, относящегося к категории «конкатенация»;
d) вложенный тип (тип, указанный в ограничении содержимого);
в) тип, выбранный (в экземпляре связи)для использования с классом в категории «открытый тип».
13.2.9 Точка приложения на последующих стадиях этих процедур может быть любым из следую
щих элементов:
a) имя класса кодирования. Это полностью подходит для кодирования с использованием специфи
кации в объекте кодирования того же класса (см. 17.1.7);
b
) конструктор кодирования (см. 16.2.12). Процедуры конструирования могут быть определены
спецификацией, содержащейся в объекте кодирования с классом конструктора кодирования, но этот
объект кодирования не определяет кодирования этих компонентов. Спецификация применяемого объ
екта кодирования может потребовать, чтобы один или несколько компонентов конструктора были за
менены другими структурами (параметризованными), перед тем как точка приложения перейдет к ком
понентам;
c) класс в категории «цепочка битов» или «цепочка октетов», который имеет некоторый вложен
ный тип в качестве признака, связанного со значениями [см. перечисление d) 11.3.4.3). Кодирование
вложенного типа зависит от того, присутствует ли ENCODED BY. и от спецификации применяемого
объекта кодирования (см. 22.11),
d) класс в категории «открытый тип». Кодирование компонента открытого типа зависит от того,
присутствует ли ENCODED WITH, и от спецификации применяемого объекта кодирования (см. 23.10.2);
e) компонент, который является классом кодирования (перед которым, возможно, имеются один
или несколько классов в категории «тег»), за которым следует класс кодирования в категорию «факуль
тативные возможности». Процедуры и кодирования для указания наличия или отсутствия определяют ся
спецификацией, содержащейся в объекте кодирования классов в категории «факультативные воз
можности». Этот объект кодирования может также потребовать замены класса кодирования (вместе со
всеми предшествующими ему классами в категории «тег») на структуру замены (параметризованную),
перед тем как этот класс кодировать. Затем точка приложения переходит к первому классу в категории
«тег» (если она имеется) или к компоненту, или к его заменителю;
0 класс кодирования, перед которым имеется класс кодирования в категории «тег». Номер тега,
связанный с классом в категории «тег», кодируется с помощью спецификации в объекте кодирования с
классом в категории «тег», а точка приложения переходит затем к тегированному классу;
д) любой другой предопределенный класс кодирования. Это полностью подходит для кодирова
ния с использованием спецификации, содержащейся в объекте кодирования этого класса.
13.2.10 Кодирование продолжается следующим образом.
13.2.10.1Если комбинированный набор объектов кодирования содержит объект кодирования того
же класса (см. 17.1.7), что и текущая точка приложения, то применяется этот объект кодирования. Это
применение может вызвать замену одного или нескольких компонентов с классом, к которому это ко
дирование применяется. Если же комбинированный набор объектов кодирования не содержит такого
объекта кодирования, то либо;
а) класс кодирования в текущей точке приложения является ссылкой на другой класс кодирова
ния: в этом случае ссылка на него убирается, а процедуры из 13.2.10 применяются рекурсивно, либо
36