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

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

     21.2 Тип EncodingSpaceSize

21.2.1 Продукцией типа "EncodingSpaceSize" является:


EncodingSpaceSize ::= INTEGER

{ encoder-option-with-determinant (-3),

variable-with-determinant (-2),

self-delimiting-values (-1),

fixed-to-max (0)} (-3..MAX)

21.2.2 Безусловным значением (по умолчанию) для этого типа всегда является self-delimiting-values.

21.2.3 Признак кодирования этого типа указывает размер пространства кодирования (см. 9.21.5).

21.2.4 Положительные (не нулевые) значения указывают фиксированный размер пространства кодирования в виде значения типа "Unit", умноженного на значение типа "EncodingSpaceSize" в битах. Если значением типа "Unit" является "repetitions", то размер пространства кодирования может изменяться (так как пространство кодирования, необходимое для каждого компонента, может быть разным), но оно всегда составляет фиксированное число повторений, а если должно кодироваться абстрактное значение, которое не имеет такого числа повторений, то спецификация или применение ECN будут ошибочными.

21.2.5 Значение "encoder-option-with-determinant" указывает, что размер пространства кодирования может меняться согласно кодируемому абстрактному значению и что кодер должен выбирать размер пространства кодирования, записывая выбранный размер в связанный определитель. В этом случае требуется значение типа "EncodingSpaceDetermination" (см. 21.3) или "RepetitionSpaceDetermination" (см. 21.7).


Примечание - Значение типа "EncodingSpaceDetermination" или "RepetitionSpaceDetermination" (для определения размера пространства кодирования) требуется в этом случае (и в случае из 21.2.6), но обеспечение определителя разрешается во всех других случаях для поддержки кодирований (аналогичных BER), которые используют определители длины даже тогда, когда они избыточны. Любое различие между двумя определениями будет ошибкой. Не всегда, однако, может быть возможность определения, является ли она ошибкой спецификации ECN или ошибкой применения, но кодеры, удовлетворяющие техническим требованиям, не должны передавать таких кодирований.



21.2.6 Значение "variable-with-determinant" указывает, что размер пространства кодирования может меняться согласно кодируемому абстрактному значению. В этом случае требуется значение типа "EncodingSpaceDetermination" (см. 21.3) или "RepetitionSpaceDetermination" (см. 21.7) (для того чтобы обеспечить точные средства определения размера пространства кодирования).

21.2.7 Значение "self-delimiting-values" указывает, что кодирование значения является саморазграничивающим, то есть каждое значение кодируется в несколько указанных значений типа "Unit". Это не должно быть парой абстрактных значений, в которой кодирование одного абстрактного значения является первой частью кодирования другого абстрактного значения.


Примечание - Кодер может (после возможного определения неиспользуемых битов и выравнивания) обнаруживать конец пространства кодирования путем сопоставления кодирования каждого возможного абстрактного значения с кодированием, которое рассматривается. В кодированиях, которые выданы кодером, соответствующим техническим требованиям, будет точно одно совпадение. В декодерах могут проявляться более эффективные, но эквивалентные подходы.

21.2.8 Значение "fixed-to-max" указывает, что пространство кодирования должно быть одинаковым для кодирования всех абстрактных значений. Оно указывает, что размер пространства кодирования должен быть самым малым произведением с множителем "Unit", которое может содержать указанное кодирование любого одного (всех) абстрактного(ых) значения(й). Это значение не должно использоваться, если абстрактное значение, которое должно быть кодировано в пространство кодирования, является абстрактным значением, связанным с классом в категории "конкатенация" (см. 23.14.2.5) или "повторение" (см. 23.13.2.5).


Примечания

1 Специальным случаем является наличие одиночного абстрактного значения, у которого кодированием значения является нуль битов. Это вызовет пустое пространство кодирования (нуль битов).

2 Спецификация ECN будет ошибочной, если она применяется в случае, когда максимальный размер не может быть определен (например, при кодировании неограниченных целых чисел), но кодеры, соответствующие техническим требованиям, должны отказываться генерировать кодирования в таких случаях.