Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-3-2016 Информационная технология (ИТ). Правила кодирования АСН.1. Часть 3. Спецификация нотации контроля кодирования (ECN)

     15.2 Изменения имен

15.2.1 Продукцией "NameChanges" является:

NameChanges ::=

NameChange

NameChanges ?

NameChange ::=

OriginalClassName

AS

NewClassName

IN

NameChangeDomain

OriginalClassName ::= SimpleDefinedEncodingClass| BuiltinEncodingClassReference

NewClassName ::= encodingclassreference

15.2.2 Каждая "NameChanges" описывает, что при генерировании явно генерируемой структуры кодирования все появившиеся "OriginalClassName" внутри "NameChangeDomain" в неявно генерируемых структурах кодирования должны переименовываться в класс "NewClassName". "NameChangeDomain" определяется в 15.3; он определяет одну или более неявно генерируемых структур кодирования (или компоненты таких структур) из модуля АСН.1, указанного ссылкой "GlobalModuleReference" в "ExplicitGeneration".

Примечания

1 Это дает возможность применения к некоторым случаям появления класса других кодирований, отличающихся от примененных к другим случаям появления этого класса.

2 Это означает, что "OriginalClassName" может быть только именем, неявно генерируемым из типа АСН.1, то есть именем определенного пользователем типа АСН.1 (перед которым ставится "#") или одним из имен классов, перечисленных в столбце 2 таблицы 2.

15.2.3 Ссылки в "OriginalClassName" на поля неявно генерируемой структуры кодирования, которая соответствует использованию "ExternalTypeReference" в определении типа АСН.1, должны использовать нотацию "SimpleDefinedEncodingClass" с тем же "modulereference", что и "ExternalTypeReference". В другом случае, если "DefinedType" (перед которым имеется "#") не является "BuiltinEncodingClass Reference", то должна использоваться простая "encodingclassreference". Если "typereference" (перед которой имеется "#") является "BuiltinEncodingClassReference", то должна использоваться нотация "SimpleDefinedEncodingClass" с тем же "modulereference", что у модуля АСН.1, который генерирует неявно генерируемую структуру кодирования.

15.2.4 Когда ELM импортирует явно генерируемую структуру кодирования из EDM, компоненты переименований в других EDM не влияют на кодирование этой структуры.

Примечание - Это означает, что все "окрашивание" (см. 9.16.4), необходимое для любого конкретного сообщения, должно выполняться в одном EDM.

15.2.5 "NewClassName" должен определяться в операторе присвоения класса кодирования (см. раздел 16) в следующей форме:

<NewClassName> ::= <OriginalClassName>,


где "<NewClassName>" и "<OriginalClassName>" являются именами нового и исходного классов, появившихся в продукции "NameChanges". Это присвоение должно быть в модуле EDM с компонентом "переименования".

Примечание - "<OriginalClassName>" требуется для того, чтобы сослаться на предопределенный класс кодирования или на внешнюю генерируемую структуру кодирования, созданную компонентом "переименования" в этом модуле. В случае неоднозначности необходимо будет использовать внешнюю ссылку в "<OriginalClassName>".