我开始处理Ypsilon,它是Scheme的一个C++实现。
它符合R6RS,具有快速垃圾收集器功能,支持多核CPU和Unicode,但在代码中缺少文档、C++代码示例和注释!
作者将其作为独立的控制台应用程序提供。我的目标是将它用作图像处理应用程序中的脚本引擎。
源代码结构良好,但结构不熟悉。我花了两个星期钻研它,下面是我发现的:
据我所知,我需要实现3个自定义端口(输入、输出和错误)。但是现在我还不知道处理程序中每个函数(onRead、onWrite、onSetPos、onGetPos、onClose)的输入参数是什么。
不幸的是,既没有实现自定义端口的示例,也没有实现以下内容的示例:
Summarizing,如果有人提供了上述任何场景的C++示例,这将大大节省我的时间。提前感谢!
发布于 2013-02-19 20:29:07
好的,根据我对源代码的了解,下面是如何调用各种处理程序(这都是非官方的,完全基于源代码检查):
(lambda (bv off len)):获取一个字节向量(您的处理程序将将读取的数据放入其中)、偏移量(fixnum)和长度(fixnum)。您应该读取多达len字节,将这些字节放在bv中,从off开始。返回实际读取的字节数(作为一个固定值)。(lambda (bv off len)):接受字节向量(包含要写入的数据)、偏移量(fixnum)和长度(fixnum)。从len从bv抓取字节,从off开始,然后将它们写出来。返回实际写入的字节数(作为一个固定值)。(lambda (pos)) (仅在文本模式中调用):允许您为pos存储一些数据,以便将来调用具有相同pos值的设置位置处理程序将位置重置回当前位置。忽略返回值。(lambda (pos)):将当前位置移动到pos值。忽略返回值。(lambda ()):关闭端口。忽略返回值。发布于 2013-02-19 21:21:41
要回答另一个问题,关于编译和运行“字节码”:
compile。这将返回一个代码对象。run-vmi,但是您不能通过外部代码访问它。auto-compile-cache系统。有关详细信息,请查看heap/boot/eval.scm。(同样,这不是官方的回应,而是纯粹基于个人试验和源代码检查。)
https://stackoverflow.com/questions/14953563
复制相似问题