Руководство разработчика

Модули

Ключевой концепцией внутреннего языка И++ является его расширяемость. Для этого была разработана технология подключаемых модулей внутреннего языка. Ядро языка содержит ограниченный набор необходимых определений, а все необходимые для работы функции, типы, константы и циклы определяются в подключаемых модулях, разработанных на языках более низкого уровня. Помимо модулей, могут использоваться специальные расширения языка, призванные решать конкретные задачи. Модуль представляет собой динамическую библиотеку, которая содержит необходимый для расширения возможностей код. В отличие от обычных библиотек, подключаемые модули не требуют явного указания их использования в исходном тексте программы на внутреннем языке, то есть модули автоматически добавляют в язык И++ новые возможности. Средства расширения, подобные модулям, иногда называют плагинами (от англ. plugins).

В подключаемых модулях могут объявляться:

Типы, функции и константы могут объявляться и средствами самого внутреннего языка, однако технология подключаемых модулей предоставляет значительно более широкие возможности. В сравнительной таблице приведены возможности ядра внутреннего языка и возможности подключаемых модулей для объявления основных определений языка:

Определения языкаВозможности объявления
в подключаемых модуляхв тексте программы на И++
ТипыПомимо обычных объектов, можно объявлять физические объектные типы.Можно объявить объектный тип. Можно объявить тип, унаследованный от типа, объявленного в подключаемом модуле. Новые физические типы объявлять нельзя.
ФункцииМожно объявлять функции и методы, в том числе использующие нестандартный механизм передачи параметров.Можно объявлять функции и методы только с использованием стандартного механизма передачи параметров.
КонстантыМожно объявлять константы, а также создавать группы констант, используя механизм перечисления.Можно объявлять константы.
ЦиклыМожно объявлять циклы, использующие произвольный алгоритм перебора значений. Объявлять циклы средствами внутреннего языка нельзя.
ПеременныеПеременные в модулях не объявляются.Поддерживается возможность объявления переменных.

Итак, наличие подключаемых модулей предоставляет прикладным программистам богатейший инструментарий для реализации разнообразных проектных решений, и более того, целый ряд необходимых языковых возможностей может быть реализован только с помощью модулей. Функции в подключаемых модулях могут производить оптимизированные расчеты, взаимодействовать с внешними данными и устройствами, т.е. решать самый широкий круг задач. Функции и методы, определяемые в подключаемых модулях, могут иметь нестандартного вида параметры, что в некоторых случаях бывает очень полезно. Определения объектных типов в подключаемых модулях позволяет естественным образом вводить в язык некие логически законченные концепции с необходимым набором данных и методов их обработки. В модулях можно объявлять типы, связанные с некоторым физическим представлением, в том числе и визуальные типы. Особо следует отметить возможность определения в подключаемых модулях специальных циклов, т.е. алгоритмов перебора некоторых значений по определенным для данного цикла правилам. Синтаксически аналогичные стандартным циклам ПОКА и ДЛЯ, специальные циклы позволяют скрыть для пользователя возможно сложную организацию того или иного перебора.

Список модулей

ATHENA объединяет возможности для работы с основной базой данных программы и дополнительными клиентскими сессиями;
FC содержит описания визуальных типов форм и элементов управления, которые можно помещать на эти формы;
FILES представляет некоторые возможности по работе с файловой системой;
FORMAT предназначен для форматированного вывода чисел, дат и времени;
GNET содержит средства доступа к глобальной сети Интернет;
IBSTD содержит определения основных функций для работы со стандартными типами данных;
LOCALDB предназначен для работы с локальными вспомогательными базами данных;
LOCCFG предназначен для конфигурирования клиентского приложения (рабочего места);
MODCOM предназначен для осуществления взаимодействия с Component Object Model (COM);
PROFILE предназначен для работы с профилями: локальным, пользовательским и сеансовым;
RVMC предназначен для запуска дополнительных программ И++ в различных режимах;
SPECDLG содержит средства вызова специализированных окон клиентского приложения;
XML предназначен для работы с XML-документами.

См. также: