【发布时间】:2013-07-29 21:31:56
【问题描述】:
我正在为具有相当复杂接口的本机库开发 haskell 绑定。它有很多结构作为其接口的一部分,我一直致力于使用 hsc2hs 和 bindings-DSL 包为它们构建接口,以帮助自动化结构绑定。
不过,我遇到的一个问题是包含多维数组的结构。 bindings-DSL documentation 描述了用于绑定到类似
struct with_array {
char v[5];
struct test *array_pointer;
struct test proper_array[10];
};
使用类似宏
#starttype struct with_array
#array_field v , CChar
#field array_pointer , Ptr <test>
#array_field proper_array , <test>
#stoptype
但是这个库有很多结构体,多维数组作为字段,更像
struct with_multidimensional_array {
int whatever;
struct something big_array[10][25][500];
};
#array_field 宏似乎只处理数组的第一个维度。是不是bindings-DSL只是没有处理多维数组的宏?
我真的很想要一个用于将(可能是多维的)数组绑定到任意索引的StorableArray 的宏。似乎在bindings-DSL 提供的宏中可以提供必要的信息 - 只是没有宏。
有人向bindings-DSL 添加了宏吗?有没有人为此添加了一个宏到bindings-DSL?我是否已经超越了我应该使用 hsc2hs 做的事情,还有其他一些工具可以帮助我以更简洁的方式做我想做的事情?
【问题讨论】:
-
我想我可以创建一个包装
StorableArray的新类型,并带有专门针对该字段的Storable实例,并且只需使用#field宏。在没有任何更好的解决方案的情况下,这似乎很正常。