Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Vickenty Fesunov                     2:5020/3996.3  06 Aug 2002  13:06:44
 To : All
 Subject : ЛОМ
 -------------------------------------------------------------------------------- 
 
 
 Итак субж. Сие есть простенький механизм, который позволяет почти легко и
 непринужденно устранять compile-time компоновку программ.
 
 Посылки: простота интерфейса, изящность, работа с Си программами, малый размер.
 Итоги: репозиторий интерфейсов, репозиторий реализаций.
 
 Интерфейс представляет собой некую структуру, в которой находятся указатели на
 функции, доступные для вызова. Репозиторий интерфейсов представляет собой
 простой каталог с заголовочными файлами, содержащими описания интерфейсов.
 
 Реализация представляет собой динамический объект, доступный для dlopen, на
 который есть симлинк в репозитории реализаций. В объекте должна быть
 экспортируемая функция `creator' создающая объект по имени. Репозиторий
 реализаций, представляет собой простой каталог, носящий имя реализуемого
 интерфейса, и содержащий симлинки на динамические объекты содержащие реализации.
 
 Интерфейс: инициализация (lom_init), создание/разрушение объекта
 (lom_create_object, lom_delete_object), получение списка всех реализаций
 (lom_get_impls).
 Теперь менее сухо и с примерами:
 Есть следующее: `/var/lom/ifaces/lom/monty.h' - интерфейс `lom/monty';
 `/var/lom/objects/lom/monty/pyton' - симлинк на pyton.so -- реализацию
 `lom/monty'.
 
 Программа выглядит так:
 
 #include <lom.h>
 #include LOM_IFACE "lom/monty.h"
 
 int main(void)
 {
         lom_object_t *obj;
         struct lom_monty *iface;
 
         lom_init();
         obj = lom_create_object("lom/monty/pyton");
         iface = (struct lom_monty *) obj->iface;
         iface->grail();
         lom_delete_object(obj);
         lom_shut();
 }
 
 Обсуждение открыто по любому вопросу. Вплоть до имен функций. В частности
 интересно узнать насколько это вписывается в com и corba (наксолько сложным
 будет написание затычки, которая позволит использовать com/corba для доступа к
 лом реализациям (буде кому приспичит)).
 
 Заметки:
 1. зачем отделил интерфейс от реализации: чтобы можно было писать плагины не
 задумываясь.
 2. бинарной совместимости с чем либо не предполагалось.
 3. Код, реализующий это дело есть, и работает (в виде приведенного выше
 примера).
 4. Предполагается написать прогу lomrep -- менеджер репозитория. Иначе не совсем
 понятно, как таким управлять.
 
 Best regards, Vickenty.
 
 --- Don't you ever get fucked in the sky! When you're high...
  * Origin: Ahere (2:5020/3996.3)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 ЛОМ   Vickenty Fesunov   06 Aug 2002 13:06:44 
Архивное /ru.linux/40143d4fca5c.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional