Cで実装されたリンクリストデータ構造を作成したかったのです。リストNIFを使用してコール間で状態を保持するCコードと対話する方法(つまり、リンクリストをNIFとして)
ll:new() -> listId.
ListIdは、上記リストのハンドルのいくつかの種類として機能するCコードに戻って渡されるであろういくつかのタイプの「ポインタ」を表します。私は、リストが非常に大きくなる可能性があると想像して以来、リスト自体を前後に渡す必要がないことを望んでいました。リンクリストを作成した後は、ユーザーは、明白な方法でそれと相互作用する:
ll:add(ListId, Elt)
ll:add_after(ListId, Pos, Elt)
は、私はアーランのNIF機能を経由してこれを行うだろうと想像しました。これがうまくいくためには、C側はadd、add_afterなどの複数の呼び出しでリストを維持する必要があります。
まっすぐなCでは、ユーザがプログラムを生き残らせる主な機能を持っていますユーザーがプログラムとやりとりする間、リンクされたリストを保持し続ける。私が理解しているように、NIFは主な機能を持たないCコードを利用しています。つまり、NIFへの各呼び出しは、1つのやり方の命題です。
NIFを利用して複数のコールにまたがって状態を保持する必要があるCコードと対話する方法について、誰かが私に(適切であると仮定して)どのように指摘できるでしょうか?私はそれがはっきりしたことを望む!
ListId - リスト全体が何らかの形で含まれているか、またはC部分のメモリへの参照(直接的または間接的)のみが含まれていますか? –
@OdobenusRosmarus、ListIdはリンクされたリストへの参照であり、リスト自体ではありません – Jr0