ГОСТ Р ИСО/МЭК 8825-3—2016
для конкретного условия границ, указывающего размер контейнера (и как он разделяется), преоб
разование целого числа в биты (с использованием либо поразрядного дополнения до двух, либо
кодирования положительных целых чисел) и способ вставления этих битов в контейнер (примером
условия границ является наличие верхней границы и неотрицательной нижней границы). Это назы
вается условным кодированием. Кодирование класса из категории «целочисленная» определяется в
виде списка этих условных кодирований, а реальное кодирование, применяемое в любом заданном
случае, будет тем. которое находится в начале списка и чье условие границ соблюдается (см. пример в
D.1.5.4).
9.25.4 Спецификация кодирования для классов кодирования в категории «повторение» использу
ет класс кодирования #CONDITIONAL-REPETITION. который определяет способ разделения простран
ства кодирования для повторяющихся элементов и способ размещения в нем повторяющихся кодиро
ваний для заданного условия диапазонов, опять образуя условное кодирование. Как и при кодировании
классов в категории «целочисленная», окончательное кодирование определяется в виде упорядочен
ного списка условных кодирований.
9.25.5 Спецификация кодирования для классов кодирования в категории «цепочка октетов» вы
полняется следующим образом. Во-первых, определяются объекты кодирования #TRANSFORM для
отображения одиночного октета в саморазграничивающую цепочку битов. Во-вторых, определяется
один или несколько объектов кодирования #CONDITIONAL-REPETITION (при конкретных условиях
диапазона размера) для взятия каждой цепочки битов (преобразованной из октета цепочки октетов) и
конкатенации (сцепления) их в размеченный контейнер (определение таких объектов кодирования не
характерно для кодирования #OCTETS). Окончательное кодирование класса в категории «цепочка окте
тов» определяется в виде упорядоченного списка объектов кодирования #CONDITIONAL-REPETITION
(см. пример в D.1.8.2).
9.25.6 Спецификации кодирования для классов кодирования в категории «цепочка битое» вы
полняются следующим образом. Во-первых, определяются объекты кодирования #TRANSFORM для
отображения одиночного бита в цепочку битов аналогично кодированию целого числа в биты, но в этом
случае отображение бита должно быть в саморазграничивающую цепочку. Во-вторых, определяется
один или несколько объектов кодирования #CONDITIONAL-REPETITION для повторения битов (это
могут быть те же объекты кодирования, которые были определены для использования с классом коди
рования в категориях «повторение» или «цепочка октетов»). Наконец, кодирование класса в категории
«цепочка битов» определяется в виде упорядоченного списка объектов кодирования #CONDITIONAL-
REPETITION (см. пример в D.1.7.3).
9.25.7 Спецификации кодирования классов кодирования в категории «цепочка знаков» выпол
няются следующим образом. Во-первых, определяются объекты кодирования #TRANSFORM для ото
бражения одиночного знака в саморазграничивающую цепочку битов, используя несколько возможных
механизмов для определения кодирования знака и используя, где подходит, действующее разре
шенное ограничение алфавита. Во-вторых, определяется один или несколько объектов кодирования
#CONDITIONAL-REPETITION и, наконец, определяется кодирование класса в категории «цепочка зна
ков» в виде упорядоченного списка этих объектов (см. пример в D.1.9.2).
9.26 Другие условия для применения кодирований
9.26.1 Существует целый ряд различных условий, которые могут быть проверены для того, чтобы
выбрать соответствующий тип кодирования. К ним относятся фактическое значение и диапазон границ.
9.26.2 Также можно требовать, чтобы был удовлетворен целый ряд условий.
9.26.3 Для проверки выполнения условия используется либо одно перечислимое значение (такое
как «bounded-without-negatives»), которое содержит всю проверку в спецификации одного перечисли
мого. или три перечислимых.
9.26.4 Если используются три. то первый определяет (путем перечисления) элемент, который про
ходит проверку (например, «test-upper-bound»), второй — природу проверки (например, «greater-than») и
третий предоставляет целочисленное значение для проверки.
9.27 Управление кодированием для открытого типа
9.27.1Открытые типы часто предоставляют средства расширяемости за счет добавления новых
значений для идентификационных полей и новых типов для открытого типа в последующих версиях (и
часто доступных для специализированных расширений).
25