問題タブ [hsc2hs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskell: #define-d 定数の値を取得するにはどうすればよいですか?
Haskell プログラムで、C ヘッダーで定義された定数を使用する最良の方法は何ですか?
haskell - Haskell cabal+hsc2hs
cabal は hsc2hs を使用して hs ファイルを作成できますか? どのように?
マニュアル、グーグル、または他のプロジェクトで答えが見つかりませんでした(gtk2hsに期待していましたが、cabalを使用していないことがわかりました)
haskell - hsc2hs と c2hs の違いは?
hsc2hs と c2hs の違いは何ですか?
hsc2hs がプリプロセッサであることは知っていますが、正確には何をするのでしょうか?
また、c2hs は C コードから Haskell モジュールを作成できますが、これには hsc2hs が必要ですか?
haskell - hsc2hsを使用して定数、関数、およびデータ構造にバインドするにはどうすればよいですか?
hsc2hsの使用方法の例が必要です。次のようなヘッダーファイルを作成すると、次のようになります。
次に、次のようなhscファイルを作成します。
使用hsc2hs
:
私はそれを理解していません、私は帽子hsc2hsが私のために必要なすべてのものをインポートすると思いましたPI
誰が私にもっと良い例を与えることができますか?
c - HaskellのC構造体を割り当てて再利用するにはどうすればよいですか?
特に、Allegroゲームライブラリへのバインディングを作成することで、Haskellの外部関数インターフェイスを学習しようとしています。AllegroのネイティブCでは、メインイベントループは次のようになります。
ghcとhsc2hsを使用して、次のような外部関数呼び出しを記述できます。
ここEventQueue
で、は不透明な構造へのポインタであり、Event
はStorable
Cに基づくインスタンスですALLEGRO_EVENT
。
理想的には、ユーザー向けのHaskell関数については、次のような型署名が必要です。
ALLEGRO_EVENT
これは、構造体とブール値の戻り値の初期化を抽象化します。
私の質問は、メモリ効率を最大化するためにこの関数をどのように書くべきかということです。メソッド内への新しいポインターをmallocしてEvent
使用することもできますが、Cベースのデータを使用しているため、既存のスペースを再利用し、常に新しい構造体を割り当てないようにします。また、ユーザーが構造体をmallocして、すべての呼び出しに渡すことを避けたいと思います。
何かアドバイス?
haskell - hsc2hs を使用した XKB API とのインターフェース
XKB APIのさまざまなビットとボブにアクセスしようとしています。これはこれまでの私のテストコードです:
(1)0x0000000001777d80
は有効なアドレスのように聞こえる を出力しますが、(2) は を出力しXkbDescRec {names = 0x0000000000000000}
ます。
FFI を間違った方法で使用しているのか、リンクで説明されているように XkbDescRec 構造体の構造を誤解しているのかはわかりません。
haskell - c2hsc および hsc2hs を介した Haskell での C 共用体とのインターフェース
c2hsc
andを使用するとhsc2hs
多くの作業を節約できますが、C 共用体のバインディングを作成しようとしたときに、いくつかの問題に遭遇しました。
たとえば、C 構造体が与えられた場合、
c2hsc
私のために次のコードを作成します:
v
フィールドは空で生成されます。経由でツールチェーンをさらに下に行くhsc2hs
と、間違った結果が得られます
今の質問は
.hsc
バインディングを操作できるようにコードを手動で記述する正しい方法は何ですか?c2hsc
これを自動的に行う方法はありますか?
haskell - hsc2hs 列挙メンバーの haddock ドキュメントを作成する方法
hsc2hs を使用して、C ヘッダーから多数の列挙値をインポートしています。私のコード(簡略化)は次のようになります。
プロジェクトで実行すると、宣言とtype のcabal haddock
空のドキュメント ブロックが作成されます。今、私はこれらのドキュメントを持っていたいと思っています。次のようなハドックスタイルのコメントを使用するだけですsecurityObjectUnknown
securityObjectFile
SecurityObjectType
hsc2hs に干渉し、ビルドが失敗します。しかし、私はこれらの宣言を文書化したいと考えています。どうすればそれができますか?
UPD: コメントがある場合、ビルド中に生成されるエラー メッセージは次のとおりです。
単純化した例のため、実際には行番号は一致しませんが、エラー出力の 47 行目は-- | Unknown object type
行に対応しています。
生成されSecurityInfo_hsc_make.c
たファイルを掘り下げると、明らかに問題が示されます (ここにフラグメントがあります)。
Haskell コメントは、生成された C ファイルに単純に挿入されますが、これは明らかに C 構文規則に違反しています。私が望んでいたのは、これらのコメントが自動生成された.hs
ファイルに反映されるようにすることです。