私はかなり複雑なインターフェースを持つネイティブ ライブラリの haskell バインディングに取り組んでいます。hsc2hsインターフェイスの一部として多くの構造体があり、構造体バインディングの自動化を支援するbindings-DSLパッケージと、それらへのインターフェイスの構築に取り組んできました。
ただし、私が遭遇した 1 つの問題は、多次元配列を含む構造体に関するものです。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はるかに超えていますか?もっと簡潔な方法でやりたいことをするのに役立つツールが他にありますか?