Компонентная модель организации программных систем. Семакин М.М. - 20 стр.

UptoLike

Составители: 

20
8. ПРОГРАММНЫЙ ИНТЕРФЕЙС ТЕХНОЛОГИИ COMA
8.1. Принятые сокращения
COMA Component-Oriented Model of Architecture компонентно-
ориентированная модель архитектуры программной системы.
NGM или NeuroGM – Neurons Graphics Memory «Нейронная графическая па-
мять».
8.2. Библиотека компонентов
Библиотекой компонентов называется файл динамической линкуемой библиотеки
Window (DLL), которая содержит экспортируемые функции вида:
function ComponentName(L: lua_State): integer; cdecl;
где: ComponentName имя функции (желательно, чтобы оно совпадало с названием ком-
понента); L указатель на контекст LUA (вообще говоря, lua_State=pointer); cdecl мо-
дель вызова функции, принятая за основную в языке Си (параметры передаются в обрат-
ном порядке). Результатом функции является значение integer количество возвращенных
в стек LUA значений.
Функция ComponentName используется для создания компонента и
преобразования
типов.
В библиотеке могут быть представлены и некоторые вспомогательные функции, но
для их использования в LUA они должны иметь такой же вид.
8.3. Использование библиотеки компонентов в LUA
Для использования библиотеки компонентов в системе определены следующие
встроенные функции:
openlib(dllname) открыть указанную в dllname библиотеку, результатом явля-
ется управляющая таблица;
closelib(lib) закрыть библиотеку, где lib управляющая таблица;
new(compfunc, …) создать компонент, где compfunc функция компонента
(см. 8.2. Библиотека компонентов), … параметры, передаваемые в конструк-
тор компонента. Функция возвращает
таблицу компонента.
При обращении к любому индексу управляющей таблицы созданной функцией
openlib, происходит поиск одноименной функции в библиотеке. Если функция не найдена
в таблице, то производится попытка загрузить ее из DLL, если такая функция есть в DLL,
то ее адрес записывается в управляющую таблицу и возвращается в качестве результата,
иначе возвращается nil.
Функции openlib и closelib регистрируются при запуске системы и поэтому всегда
доступны в глобальной (первоначальной, основной) таблице LUA (их реализация нахо-
дится в модуле DataServ.dll). Функция new написана на LUA и содержится в файле
COMA\sdk\LuaScript\SysUtils.lua.
      8. ПРОГРАММНЫЙ ИНТЕРФЕЙС ТЕХНОЛОГИИ COMA

      8.1. Принятые сокращения
      ƒ   COMA − Component-Oriented Model of Architecture −              компонентно-
          ориентированная модель архитектуры программной системы.

      ƒ   NGM или NeuroGM – Neurons Graphics Memory − «Нейронная графическая па-
          мять».


      8.2. Библиотека компонентов
     Библиотекой компонентов называется файл динамической линкуемой библиотеки
Window (DLL), которая содержит экспортируемые функции вида:
      function ComponentName(L: lua_State): integer; cdecl;

где: ComponentName − имя функции (желательно, чтобы оно совпадало с названием ком-
понента); L − указатель на контекст LUA (вообще говоря, lua_State=pointer); cdecl − мо-
дель вызова функции, принятая за основную в языке Си (параметры передаются в обрат-
ном порядке). Результатом функции является значение integer − количество возвращенных
в стек LUA значений.
       Функция ComponentName используется для создания компонента и преобразования
типов.
       В библиотеке могут быть представлены и некоторые вспомогательные функции, но
для их использования в LUA они должны иметь такой же вид.



      8.3. Использование библиотеки компонентов в LUA
      Для использования библиотеки компонентов в системе определены следующие
встроенные функции:
      ƒ openlib(dllname) − открыть указанную в dllname библиотеку, результатом явля-
         ется управляющая таблица;
      ƒ closelib(lib) − закрыть библиотеку, где lib − управляющая таблица;
      ƒ new(compfunc, …) − создать компонент, где compfunc − функция компонента
         (см. 8.2. Библиотека компонентов), … − параметры, передаваемые в конструк-
         тор компонента. Функция возвращает таблицу компонента.

       При обращении к любому индексу управляющей таблицы созданной функцией
openlib, происходит поиск одноименной функции в библиотеке. Если функция не найдена
в таблице, то производится попытка загрузить ее из DLL, если такая функция есть в DLL,
то ее адрес записывается в управляющую таблицу и возвращается в качестве результата,
иначе − возвращается nil.
       Функции openlib и closelib регистрируются при запуске системы и поэтому всегда
доступны в глобальной (первоначальной, основной) таблице LUA (их реализация нахо-
дится в модуле DataServ.dll). Функция new написана на LUA и содержится в файле
COMA\sdk\LuaScript\SysUtils.lua.

                                          20