Site Logo

Mappings

Группа: Секции

Платформы: t0700, t1000

Синтаксис

<Имя спецификации формата данных>
  Mappings
    <Имя отображения> : <Тип отображения>
      Type1 : <Тип 1>
      Type2 : <Тип 2>
      Map ; Таблица соответствий
        Список сопоставлений вида <Значение типа 1> : <Значение типа 2>
      [Default : <Значение типа 2>]

Параметры

  • Тип отображения - directed - направленное / full - полное.

Описание

Описывает сопоставление. Сопоставления (mapping) служат для конверсии значений разных типов при форматировании и разборе посылок. Маппинг описывается в стиле тип на тип, далее идут паросочетания, задающие логику конверсии. Существует два вида отображений - полное и направленное. Для полного отображения должны контролироваться однозначные определения значения типа 1 по значению типа 2 и наоборот. Для направленных отображений это не обязательное условие. Для направленных отображений может быть указана опциональная конструкция Default, что позволяет сокращать число задаваемых паросочетаний. В коде обработчиков в зависимости от типа отображения может быть использована следующая конструкция:

  • для прямого преобразования: <Transform: <Имя DFS>, <Имя маппинга>, <Что преобразуем>>
  • для обратного преобразования (распознания): <Recognize: <Имя DFS>, <Имя маппинга>, <Что преобразуем>>

  • Использование Recognize разрешено только для полных отображений.
  • В качестве типов можно использовать string, bool, int, enum, event_t.

Примеры

Пример №1

Перечислимый тип:
DeviceType                                             | тип устройства
  2 : 2
    PinPad : 1                                         | пинпад
    CardReader : 2                                     | кардридер
Таблица сопоставлений:
<DeviceType.PinPad> : "PP"
<DeviceType.CardReader> : "CR"
Сопоставление:
Main
  Mappings
    DeviceType : directed
      Type1 : DeviceType
      Type2 : string
      Map
        PinPad : "PP"
        CardReader : "CR"
Код:
  Set:
    ?device : <DeviceType.CardReader>
    ?variable : <Transform: Main, DeviceType, ?device>

Результат:

В переменной ?variable будет содержаться строка "CR"