【发布时间】:2013-02-19 09:05:13
【问题描述】:
我开始搞乱Ypsilon,这是一个C++实现的Scheme。
它符合R6RS,具有快速垃圾收集器,支持多核 CPU 和 Unicode,但在代码中缺乏文档、C++ 代码示例和 cmets!
作者将其作为独立的控制台应用程序提供。 我的目标是将它用作图像处理应用程序中的脚本引擎。
源代码结构良好,但结构不熟悉。 我花了两个星期的时间来研究它,这就是我发现的:
- 与外部世界的所有通信都是通过称为 C++ 的结构完成的 端口,它们对应于 Scheme 端口。
- 虚拟机有 3 个端口:IN、OUT 和 ERROR。
- 端口可以是标准端口(通过控制台)、套接字端口、 bytevector-ports、named-file-ports 和 custom-ports。
- 每个自定义端口都必须提供一个名为 handlers 的填充结构。
- Handlers 是一个包含 6 个元素的向量:第一个是布尔值 (无论 port 是文本的),其他五个是函数指针(onRead、onWrite、onSetPos、onGetPos、onClose)。
据我了解,我需要实现 3 个自定义端口(IN、OUT 和 ERROR)。 但是现在我无法弄清楚,handlers中每个函数(onRead、onWrite、onSetPos、onGetPos、onClose)的输入参数是什么。
不幸的是,没有实现自定义端口的示例,也没有以下内容的示例:
- C++ 到 Scheme 函数绑定(提供的示例是一堆 .scm-files,仍然不清楚在 C++ 端做什么)。
- 编译和 运行字节码(通过 bytevector-ports?但是如何编译文本到 字节码?)。
总结,如果有人提供上述任何场景的 C++ 示例,那将大大节省我的时间。 提前致谢!
【问题讨论】:
-
您是否尝试联系项目的项目维护者?它可以为您节省一些时间。
-
@Seki,是的。他们没有回答。