問題タブ [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.

0 投票する
2 に答える
955 参照

haskell - Haskell: #define-d 定数の値を取得するにはどうすればよいですか?

Haskell プログラムで、C ヘッダーで定義された定数を使用する最良の方法は何ですか?

0 投票する
1 に答える
1409 参照

haskell - Haskell cabal+hsc2hs

cabal は hsc2hs を使用して hs ファイルを作成できますか? どのように?

マニュアル、グーグル、または他のプロジェクトで答えが見つかりませんでした(gtk2hsに期待していましたが、cabalを使用していないことがわかりました)

0 投票する
2 に答える
3557 参照

haskell - hsc2hs と c2hs の違いは?

hsc2hs と c2hs の違いは何ですか?

hsc2hs がプリプロセッサであることは知っていますが、正確には何をするのでしょうか?

また、c2hs は C コードから Haskell モジュールを作成できますが、これには hsc2hs が必要ですか?

0 投票する
2 に答える
2278 参照

haskell - hsc2hsを使用して定数、関数、およびデータ構造にバインドするにはどうすればよいですか?

hsc2hsの使用方法の例が必要です。次のようなヘッダーファイルを作成すると、次のようになります。

次に、次のようなhscファイルを作成します。

使用hsc2hs

私はそれを理解していません、私は帽子hsc2hsが私のために必要なすべてのものをインポートすると思いましたPI

誰が私にもっと良い例を与えることができますか?

0 投票する
1 に答える
633 参照

c - HaskellのC構造体を割り当てて再利用するにはどうすればよいですか?

特に、Allegroゲームライブラリへのバインディングを作成することで、Haskellの外部関数インターフェイスを学習しようとしています。AllegroのネイティブCでは、メインイベントループは次のようになります。

ghcとhsc2hsを使用して、次のような外部関数呼び出しを記述できます。

ここEventQueueで、は不透明な構造へのポインタであり、EventStorableCに基づくインスタンスですALLEGRO_EVENT

理想的には、ユーザー向けのHaskell関数については、次のような型署名が必要です。

ALLEGRO_EVENTこれは、構造体とブール値の戻り値の初期化を抽象化します。

私の質問は、メモリ効率を最大化するためにこの関数をどのように書くべきかということです。メソッド内への新しいポインターをmallocしてEvent使用することもできますが、Cベースのデータを使用しているため、既存のスペースを再利用し、常に新しい構造体を割り当てないようにします。また、ユーザーが構造体をmallocして、すべての呼び出しに渡すことを避けたいと思います。

何かアドバイス?

0 投票する
1 に答える
101 参照

haskell - hsc2hs を使用した XKB API とのインターフェース

XKB APIのさまざまなビットとボブにアクセスしようとしています。これはこれまでの私のテストコードです:

(1)0x0000000001777d80は有効なアドレスのように聞こえる を出力しますが、(2) は を出力しXkbDescRec {names = 0x0000000000000000}ます。

FFI を間違った方法で使用しているのか、リンクで説明されているように XkbDescRec 構造体の構造を誤解しているのかはわかりません。

0 投票する
1 に答える
269 参照

haskell - c2hsc および hsc2hs を介した Haskell での C 共用体とのインターフェース

c2hscandを使用するとhsc2hs多くの作業を節約できますが、C 共用体のバインディングを作成しようとしたときに、いくつかの問題に遭遇しました。


たとえば、C 構造体が与えられた場合、

c2hsc私のために次のコードを作成します:

vフィールドは空で生成されます。経由でツールチェーンをさらに下に行くhsc2hsと、間違った結果が得られます


今の質問は

  1. .hscバインディングを操作できるようにコードを手動で記述する正しい方法は何ですか?
  2. c2hscこれを自動的に行う方法はありますか?
0 投票する
1 に答える
265 参照

haskell - hsc2hs 列挙メンバーの haddock ドキュメントを作成する方法

hsc2hs を使用して、C ヘッダーから多数の列挙値をインポートしています。私のコード(簡略化)は次のようになります。

プロジェクトで実行すると、宣言とtype のcabal haddock空のドキュメント ブロックが作成されます。今、私はこれらのドキュメントを持っていたいと思っています。次のようなハドックスタイルのコメントを使用するだけですsecurityObjectUnknownsecurityObjectFileSecurityObjectType

hsc2hs に干渉し、ビルドが失敗します。しかし、私はこれらの宣言を文書化したいと考えています。どうすればそれができますか?

UPD: コメントがある場合、ビルド中に生成されるエラー メッセージは次のとおりです。

単純化した例のため、実際には行番号は一致しませんが、エラー出力の 47 行目は-- | Unknown object type行に対応しています。

生成されSecurityInfo_hsc_make.cたファイルを掘り下げると、明らかに問題が示されます (ここにフラグメントがあります)。

Haskell コメントは、生成された C ファイルに単純に挿入されますが、これは明らかに C 構文規則に違反しています。私が望んでいたのは、これらのコメントが自動生成された.hsファイルに反映されるようにすることです。