LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

В общем, никто не помогает, попробую всё же сам родить осмысленный вариант.

Неясность осталась с одним: вот у нас есть интерфейс модуля. Он будет в одном файле. А реализация модуля может быть в нескольких файлах. Где записан список этих файлов? Думается, ему быть негде, кроме как в файле интерфейса модуля. Итак:

файл каталога:

//файл /дир1/мой_проект.каталог
определение каталог "мой_проект";
//больше тут ничего и не надо, это просто файл-метка, считай "ln -s".

//файл /дир1/модуль1.h
заявление_модуля "мой_проект/модуль1";
  пакет "мой_проект/модуль1";
  реализация_состоит_из "мой_проект/модуль1.пакет", "мой_проект/код1.c";
конец_заявление_модуля
//файл /дир1/модуль1.пакет
реализация_модуля "мой_проект/модуль1";   // чьих будешь?
заявление_пакета "мой_проект/модуль1" 
    расширения_чтения "стандарт/операции_с_матрицами";

    // настройка чтения символов без префикса
    использует "стандарт/матрицы", "стандарт/математика";
конец_заявление_пакета
//файл /дир1/код1.с 
реализация_модуля "мой_проект/модуль1";   // чьих будешь?
зависит("библиотека/линейная_алгебра.h"); // касается только данного файла

// собственно код функции
функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче), экспорт; 
  блабла;
  блабла;
  блабла;
конец_функция
//файл /дир1/модуль1.интерфейс - генерируется автоматически обходом реализации

интерфейс_модуля мой_проект.модуль1;
  чтение_зависит(
     расширение_чтения("стандарт/операции_с_матрицами")
     ,пакет("стандарт/операции_с_матрицами")
     ,пакет("стандарт/математика"); 

  интерфейс_зависит("библиотека/линейная_алгебра.h");

  интерфейс_пакета "мой_проект/модуль1"
    расширения_чтения "стандарт/операции_с_матрицами";
    использует "стандарт/матрицы", "стандарт/математика";
    экспортирует 
      функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче);
    конец_экспортирует;
  конец_интерфейс_пакета;
конец_интерфейс_модуля

Получается пока изрядно монструозно, но хотя бы вроде более-менее сходятся концы с концами. Засим прерываюсь где-нибудь на неделю.

Исправление den73, :

В общем, никто не помогает, попробую всё же сам родить осмысленный вариант.

Неясность осталась с одним: вот у нас есть интерфейс модуля. Он будет в одном файле. А реализация модуля может быть в нескольких файлах. Где записан список этих файлов? Думается, ему быть негде, кроме как в файле интерфейса модуля. Итак:

файл каталога:

//файл /дир1/мой_проект.каталог
определение каталог "мой_проект";
//больше тут ничего и не надо, это просто файл-метка, считай "ln -s".

//файл /дир1/модуль1.h
заявление_модуля "мой_проект/модуль1";
  пакет "мой_проект/модуль1";
  реализация_состоит_из "мой_проект/модуль1.пакет", "мой_проект/код1.c";
конец_заявление_модуля
//файл /дир1/модуль1.пакет
реализация_модуля "мой_проект/модуль1";   // чьих будешь?
заявление_пакета "мой_проект/модуль1" 
    расширения_чтения "стандарт/операции_с_матрицами";

    // настройка чтения символов без префикса
    использует "стандарт/матрицы", "стандарт/математика";
конец_заявление_пакета
//файл /дир1/код1.с 
реализация_модуля "мой_проект/модуль1";   // чьих будешь?
зависит("библиотека/линейная_алгебра.h"); // касается только данного файла

// собственно код функции
функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче), экспорт; 
  блабла;
  блабла;
  блабла;
конец_функция
//файл /дир1/модуль1.интерфейс - генерируется автоматически обходом реализации

интерфейс_модуля мой_проект.модуль1;
  чтение_зависит(
     расширение_чтения("стандарт/операции_с_матрицами")
     ,пакет("стандарт/операции_с_матрицами")
     ,пакет("стандарт/математика"); 

  интерфейс_зависит("библиотека/линейная_алгебра.h");

  отчёт_пакета "мой_проект/модуль1"
    расширения_чтения "стандарт/операции_с_матрицами";
    использует "стандарт/матрицы", "стандарт/математика";
    экспортирует 
      функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче);

    конец_экспортирует;
  конец_отчёт_пакета;
конец_интерфейс_модуля

Получается пока изрядно монструозно, но хотя бы вроде более-менее сходятся концы с концами. Засим прерываюсь где-нибудь на неделю.

Исходная версия den73, :

В общем, никто не помогает, попробую всё же сам родить осмысленный вариант.

Неясность осталась с одним: вот у нас есть интерфейс модуля. Он будет в одном файле. А реализация модуля может быть в нескольких файлах. Где записан список этих файлов? Думается, ему быть негде, кроме как в файле интерфейса модуля. Итак:

файл каталога:

//файл /дир1/мой_проект.каталог
определение каталог "мой_проект";
//больше тут ничего и не надо, это просто файл-метка, считай "ln -s".

//файл /дир1/модуль1.h
заявление_модуля "мой_проект/модуль1";
  пакет "мой_проект/модуль1";
  реализация_состоит_из "мой_проект/модуль1.пакет", "мой_проект/код1.c";
конец_заявление_модуля
//файл /дир1/модуль1.пакет
реализация_модуля "мой_проект/модуль1";   // чьих будешь?
заявление_пакета "мой_проект/модуль1" 
    расширения_чтения "стандарт/операции_с_матрицами";

    // настройка чтения символов без префикса
    использует "стандарт/матрицы", "стандарт/математика";
конец_заявление_пакета
//файл /дир1/код1.с 
реализация_модуля "мой_проект/модуль1";   // чьих будешь?
зависит("библиотека/линейная_алгебра.h"); // касается только данного файла

// собственно код функции
функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче), экспорт; 
  блабла;
  блабла;
  блабла;
конец_функция
//файл /дир1/модуль1.интерфейс - генерируется автоматически обходом реализации

интерфейс_модуля мой_проект.модуль1;
  чтение_зависит(
     расширение_чтения("стандарт/операции_с_матрицами")
     ,пакет("стандарт/операции_с_матрицами")
     ,пакет("стандарт/математика"); 

  интерфейс_зависит("библиотека/линейная_алгебра.h");

  пакет "мой_проект/модуль1"
    расширения_чтения "стандарт/операции_с_матрицами";
    использует "стандарт/матрицы", "стандарт/математика";
    экспортирует 
      функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче);

    конец_экспортирует;
  конец_пакет;
конец_интерфейс_модуля

Получается пока изрядно монструозно, но хотя бы вроде более-менее сходятся концы с концами. Засим прерываюсь где-нибудь на неделю.