Я начал работать с Ypsilon, что является реализацией Схемы на C++.Нужно пример использования Ypsilon
Это соответствует R6RS, функции быстрого сборщика мусора, поддерживает многоядерные процессоры и Unicode, но имеет ОТСУТСТВИЕ документации, C++ примеры кода и комментарии в коде!
Авторы предоставляют его как отдельное консольное приложение. Моя цель - использовать его как скриптовый движок в приложении для обработки изображений.
Исходный код хорошо структурирован, но структура незнакома. я провел две недели проникая его, и вот что я выяснил:
- Все коммуникации с внешним миром осуществляется через структуры C++ называемые порты, они соответствуют портам Scheme.
- Виртуальная машина имеет 3 порта: IN, OUT и ERROR.
- Порты могут быть STD-портами (через консоль), сокет-порты, bytevector-ports, named-file-ports и custom-ports.
- Каждый пользовательский порт должен предоставить заполненную структуру, называемую обработчиками.
- Обработчики представляет собой вектор, содержащий 6 элементов: первый из них является булево (будь то порт является текстовым), а остальные пять указателей на функции (onRead, onWrite, onSetPos, onGetPos, OnClose).
Насколько я понимаю, мне нужно реализовать 3 пользовательских порта (IN, OUT и ERROR). Но пока я не могу понять, каковы входные параметры каждой функции (onRead, onWrite, onSetPos, onGetPos, onClose) в обработчиках .
К сожалению, нет ни пример не реализует в пользовательский порт не пример следующего материала:
- C++ в функции привязки схемы (приведены примеры куча .scm-файлов, до сих пор неясно, что делать на стороне C++).
- Компиляция и работает bytecode (через bytevector-ports? Но как скомпилировать текст в bytecode?).
Резюмируя, если кто-нибудь дает пример C++ любого сценария, упомянутого выше, было бы значительно сэкономить свое время. Спасибо заранее!
Вы пытались связаться с разработчиком проекта? Это может сэкономить вам время. – Seki
@Seki, Yep. Они не ответили. –