我正在为具有相当复杂接口的本机库处理 haskell 绑定。它有很多结构作为其接口的一部分,我一直致力于为它们构建接口hsc2hs
以及bindings-DSL
帮助自动化结构绑定的包。
不过,我遇到的一个问题是包含多维数组的结构。该bindings-DSL
文档描述了用于绑定到类似结构的宏
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
的事情,还有其他一些工具可以帮助我以更简洁的方式做我想做的事情?