История изменений
Исправление 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"
расширения_чтения "стандарт/операции_с_матрицами";
использует "стандарт/матрицы", "стандарт/математика";
экспортирует
функция ОбратитьМатрицу(м - матрица) - (матрица, в_куче);
конец_экспортирует;
конец_пакет;
конец_интерфейс_модуля
Получается пока изрядно монструозно, но хотя бы вроде более-менее сходятся концы с концами. Засим прерываюсь где-нибудь на неделю.