|
ASN1C - это ASN.1 компилятор. Термин "компилятор" в данном контексте
может вводить в заблуждение, ибо никаких двоичных объектов он не создает.
ASN.1 компилятор транслирует исходный текст ASN.1 в соответствующий исходный
текст на языке программирования С, С++, C# или Java. Возможно, более корректным
термином было бы "ASN.1 транслятор".
Производимый компилятором исходный текст состоит из определений типов и
кодирующих/декодирующих функций (или методов). Это дает достаточный программный
интерфейс (API) для работы с описаниями сообщений, содержащихся в ASN.1
спецификации.
Помимо компилятора, в пакет поставки входит также библиотека
времени выполнения. Эта библиотека содержит общие функции для
кодирования/декодирования примитивных типов (BOOLEAN, INTEGER, и т.д.).
ASN1C компилятор генерирует серии вызовов этих функций, чтобы выполнить
кодирование или декодирование более сложных типов.
ASN.1 в C или C++
ASN1C может генерировать C или С++ исходный код для заданной ASN.1
спецификации. Обе C и C++ версии используют общую базовую библиотеку
времени выполнения, состоящую из примитивных C функций для кодирования и
декодирования базовых типов. Генерированный код выполнен преимущественно
на C и предоставляет полный набор С API функций для всех описанных ASN.1 типов.
Генерация кода для C++ добавляет набор классов-"оберток", которые
скрывают детали вызовов примитивных функций. Эти классы также предоставляют
дополнительные сервисы, специфичные для С++. Например, автоматическая
инициализация переменных с использованием конструкторов, упрощенные
присвоение и проверка данных через переопределенные операторы, виртуальные
функции обратных вызовов (virtual callback) для механизма перехвата событий.
Нажмите на одну из следующих ссылок для дополнительной информации:
ASN.1 в Java или C#
ASN1C компилятор также может генерировать Java или C# код.
Сгенерированный код Java состоит из набора Java-файлов - один
файл на каждый сложный тип, описанный в спецификации. Каждый файл содержит Ява-класс и
состоит из следующих компонентов (как минимум):
- Общедоступные (public) переменные-члены класса для хранения данных.
- Конструктор (или конструкторы) для инициализации переменных.
- Кодирующий метод.
- Декодирующий метод.
- Метод для вывода на печать содержимого класса.
Также существует библиотека времени выполнения для Java, состоящая
из набора классов для кодирования/декодирования примитивных типов.
Например, Asn1Integer класс кодирует или декодирует переменную типа
INTEGER. Компилятор расширяет эти базовые классы путем наследования или
собирает серии этих низкоуровневых объектов для формирования составных
типов (например, SEQUENCE).
Генерация C# кода доступна с версии 5.7. Генерация кода подобна генерации Java кода.
Доступны пакеты разработчика встраиваемых приложений, которые поддерживают Java
MicroEdition (J2ME) или C# compact edition. Для дополнительной информации о Java или C# компиляторе, нажмите на следующие ссылки:
Java and all Java-related products are
registered Trademarks of Sun Microsystems
|