ГОСТ Р ИСО/МЭК 8825-3—2016
15.1.12 Если «OptionalNameChanges» является GENERATES, то все явно генерируемые струк
туры кодирования будут теми же структурами, что и неявно генерируемые структуры кодирования, ис
пользуемые при их генерации, за исключением случаев, определенных в 15.1.14.
Примечание — (Руководство) Если в модуле EDM имеются несколько структур с одинаковыми просты
ми справочными именами (эти имена возникли или из компонента импортов. или из компонента переименований,
или из-за совпадений с предопределенными классами, или из-за любой комбинации этих причин), то используется
полностью определенное имя. за исключением ссылок на предопределенный класс. Для неявно
генерируемых структур полностью определенное имя всегда использует имя модуля АСН.1. Для структур,
генерируемых компо нентом переименований в модуле EDM, используется полностью определенное имя. Это
полностью определенное имя в теле этого EDM всегда использует имя модуля АСН.1, указанное в компоненте
переименований. Для струк тур. импортированных из другого модуля EDM. полностью определенное имя
использует имя этого модуля EDM. Это всегда обеспечивает недвусмысленность, так как импортирование не
разрешается, если модуль EDM генери рует несколько явно генерируемых структур с одним и тем же простым
справочным именем.
15.1.13 Если «OptionalNameChanges» является «NameChanges», то все еще применяется 15.1.14.
но явно генерируемые структуры кодирования затем изменяются, как описывается в 15.2.
15.1.14 Рассмотрим неявно генерируемую структуру кодирования (назовем ее А), которая содер
жит ссылку на класс кодирования некоторой другой неявно генерируемой структуры кодирования (на
зовем ее В). Тогда:
a) если этот компонент переименований (в любой из его «ExplicitGeneration») вырабатывает явно
генерируемую структуру кодирования, соответствующую В (назовем ее В1). то соответствующая ссыл ка
в явно генерируемой структуре кодирования, соответствующей А. будет ссылкой на В1:
b
) если нет явно генерируемой структуры кодирования, соответствующей В. то ссылка в генериру
емой структуре кодирования, соответствующей А. будет ссылкой на В.
15.2 Изменения имен
15.2.1 Продукцией «NameChanges» является:
NamoChanges
NameChange
NameChanges ?
NameChange
OriglnalClassName
AS
NowClassName
IN
NameChangeDomain
OriginalClassNameSimploDofinedEncodingClass| BuiltinEncodlngClassRoference
NowClassName ::= encodingclassreference
15.2.2 Каждая «NameChanges» описывает, что при генерировании явно генерируемой структуры ко
дирования все появившиеся «OriginalClassName» внутри «NameChangeDomain» в неявно генерируемых
структурах кодирования должны переименовываться в класс «NewClassName». «NameChangeDomain»
определяется в 15.3; он определяет одну или более неявно генерируемых структур кодирования (или компо
ненты таких структур) из модуля АСН.1.указанного ссылкой «GlobalModuleReference» в «Expl»citGeneration».
Примечания
1Это дает возможность применения к некоторым случаям появления класса других кодирований, отличаю
щихся от примененных к другим случаям появления этого класса.
2 Это означает, что «OriginalClassName» может быть только именем, неявно генерируемым из типа АСН.1.
то есть именем определенного пользователем типа АСН.1 (перед которым ставится «#») или одним из имен клас
сов. перечисленных в столбце 2 таблицы 2.
15.2.3Ссылки в«OriginalClassName» на поля неявно генерируемой структуры кодирования, которая
соответствует использованию «ExtemalTypeReference» в определении типа АСН.1. должны использо
вать нотацию «SimpleDefinedEncodingClass» стам же «modulereference», что и «ExtemalTypeReference». В
другом случае, если «DefmedType» (перед которым имеется «#») не является «BuiltinEncodingClass
Reference», то должна использоваться простая «encodingclassreference». Если «typereference» (перед
41