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

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

     17.7 Факультативные возможности кодирования

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

EncodingOptionsEncodingObject ::=

"{"

OPTIONS

EncodingOptionsList

WITH AlternativesEncodingObject

"}"

EncodingOptionsList ::= OrderedEncodingObjectList

AlternativesEncodingObject ::= EncodingObject

17.7.2 "EncodingOptionsEncodingObject" указывает, что кодер может кодировать (согласно 17.7.6) с помощью какого-либо "EncodingObject" из "EncodingOptionsList". Все эти "EncodingObject" должны быть объектами кодирования из управляющего класса.

Примечание - Новые реализации настоятельно рекомендуется кодировать с использованием такого самого раннего объекта "EncodingObject" из упорядоченного списка, который способен кодировать абстрактное значение, подлежащее кодированию (см. 17.7.6). Спецификация факультативных возможностей кодирования дается лишь потому, что необходимо отразить факультативные возможности, которые обеспечиваются в традиционных протоколах, и поддержать различные формы кодирования длины цепочек. Все факультативные возможности могут, конечно, появляться при декодировании.

17.7.3 "AlternativesEncodingObject" должен быть объектом кодирования любого класса в категории "альтернативы", а кодеры и декодеры должны использовать кодовые последовательности и процедуры, указанные этим объектом кодирования, так, как будто бы факультативные возможности кодирования были кодированы для компонентов экземпляра этого класса. "AlternativesEncodingObject" не должен содержать спецификации REPLACE (см. 23.1.1). Параметр DETERMINED BY устанавливается в handle, а также указывается идентификационный описатель.


Примечание - Если "AlternativesEncodingObject" параметризован параметром "поле ссылки", то определяемый "encodingobjectreference" должен быть параметризован параметром "фиктивное поле ссылки", который используется в качестве реального параметра для "AlternativesEncodingObject".

17.7.4 Все "EncodingObject" в "EncodingOptionsList" должны показывать такой идентификационный описатель, и их наборы значений описателей должны быть непересекающимися.

17.7.5 Если "AlternativesEncodingObject" показывает идентификационный описатель (с данным набором значений описателя), то определяемый объект кодирования (см. 17.1.5) показывает такой же идентификационный описатель (с тем же набором значений описателя); иначе он не показывает описатель.

Примечание - Идентификационный описатель, показываемый "AlternativesEncodingObject" (если есть), не имеет отношения к идентификационному описателю, показываемому "EncodingObject" в "EncodingOptionsList", даже если они имеют одинаковое имя.

17.7.6 Кодер должен ограничивать свой выбор "EncodingObject" из "EncodingOptionsList" такими объектами, которые обеспечивают кодирования для кодируемого реального абстрактного значения. Если отсутствует по крайней мере один такой "EncodingOptionsList" для какого-либо абстрактного значения, подлежащего кодированию, то спецификация ECN или приложение будут ошибочными.

Примечания

1 Возможно, что наборы абстрактных значений, кодируемых с помощью объектов "EncodingObject" из "EncodingOptionsList", разъединены. Это не является ошибкой; возможен удобный путь для спецификации разных структур кодирования разных зон абстрактных значений в управляющем классе, например, короткая форма и длинная форма кодирований, где короткая форма обязательна для небольших значений.

2 Возможно использовать объекты кодирования опций кодирования, такие как "SpecForDecoders" (см. 17.6) ("SpecForEncoding" является объектом кодирования опций кодирования, который содержит точно одну опцию из "SpecForDecoders"). Это является другим подходом к расширяемости.