ГОСТ Р ИСО/МЭК 8825-3—2016
D.2.15 Определения ELM
Нижеследующий ELM связан с модулем АСН.1. определенным в D.2.13. и с EDM. определенным в D.2.14.
Example2-ELM (joint-iso-itu-t(2) asn1(1) ecn(4) examples(5) elm-module2(4)}
LINK-DEFINITIONS ::=
BEGIN
IMPORTS
Example2Encodings FROM Example2-EDM
{joint-iso-itu-t(2) asn1(1) ecn(4) examples(5) edm-module2(6)}
«ExampleMessages FROM Example2-ASN1-Module
{joint-iso-itu-t(2) asn1(1) ecn(4) examples(5) asn1-module2(5)}:
ENCODE «ExampleMessages WITH Example2Encodings
COMPLETED BY PER-BASIC-UNALIGNED
END
D.3 Примеры явно генерируемой структуры
Примеры, описанные в D.3.1—D.3.4. показывают использование явно генерируемых структур для замены
класса кодирования в неявно генерируемой структуре кодирования на одноименный класс. Затем мы образуем
специализированные типы кодирования путем введения в набор объектов кодирования объекта одноименного
класса. Эти примеры даются с использованием следующего формата:
- «присвоение типа АСН.1». Здесь дается исходное определение типа АСН.1:
- требование. Здесь перечисляются требуемые изменения к кодированиям, обеспеченным методом PER
basic unaligned:
- изменение неявно генерируемой структуры кодирования для образования новой структуры кодирования;
- присвоения класса кодирования и объекта кодирования.
D.3.1 Последовательность с факультативными компонентами, определенными указателями
D.3.1.1 Присвоение АСН.1 равно:
Sequencel ::= SEQUENCE {
component INTEGER OPTIONAL.
component2 INTEGER OPTIONAL,
components VisibleString }
D.3.1.2 Вместо использования побитового отображения PER для двух компонентов целочисленного типа,
обозначенных OPTIONAL, присутствие и позиция таких компонентов определяется указателями в начале кодиро
вания последовательности. Каждый указатель содержит 0 (компонент отсутствует) или относительное смещение
для кодирования компонента, который начинается на границе октета.
D.3.1.3 Класс кодирования «INTEGER заменяется на ««Integer-with-pointer-concat* в объекте кодирования
«sequencel-encoding». Класс «#lnteger-with-pointer-concat« определен как структура конкатенации, содержа
щая один элемент, который является замененным элементом, объединенным с классом ««Integeroptionality» в
категории «функциональные возможности».
D.3.1.4 Затем определены два объекта кодирования. Первый «integer-with-pointer-concat-encoding* клас
са ««Integer-with-pointer-concat» получает три параметра: замененный элемент, указатель и текущий комбини
рованный набор объектов кодирования (см. 22.1.3.7). Второй «integer-optionality-encoding» класса ««Integer-
optionality»получает один параметр: указатель, который используется для определения присутствия компонента.
Так как BASIC-PER-UNALIGNED не содержит объекта кодирования класса «CONCATENATION с факультатив
ными компонентами, требуется определить третий объект кодирования класса «CONCATENATION. Этот объект
«concat» использует безусловную (по умолчанию) установку.
D.3.1.5 Присвоениями класса кодирования и объекта кодирования являются:
sequencel-encoding «SEQUENCE{
REPLACE OPTIONALS
WITH #lnteger-with-pointer-concat
ENCODED BY integer-with-pointer-concat-encoding
INSERT AT HEAD «Pointer
ENCODING-SPACE
SIZE variable-with-determinant
DETERMINED BY container
USING OUTER }
«Pointer ::= «INTEGER
183