Iva*_*kin 6 c++ scheme bytecode ffi
我开始搞乱Ypsilon,它是Scheme的C++实现.
它符合R6RS,具有快速的垃圾收集器,支持多核CPU和Unicode,但有一个LACK文档,C++代码示例和代码中的注释!
作者将其作为独立的控制台应用程序提供.我的目标是将其用作图像处理应用程序中的脚本引擎.
源代码结构良好,但结构不熟悉.我花了两周时间穿透它,这就是我发现的:
据我了解,我需要实现3个自定义端口(IN,OUT和ERROR).但是现在我无法弄清楚处理程序中每个函数(onRead,onWrite,onSetPos,onGetPos,onClose)的输入参数是什么.
不幸的是,既没有实现自定义端口的示例也没有以下内容的示例:
总而言之,如果有人提供上述任何场景的C++示例,它将显着节省我的时间.提前致谢!
好的,从我可以读到的源代码来看,以下是调用各种处理程序的方式(这都是非官方的,纯粹基于源代码检查):
(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 ()):关闭端口。返回值被忽略。