2011-08-04 7 views
0

1つのavi demuxerライブラリを書きます。私はさまざまな機能を行うために複数のAPIをエクスポートしています。今度はaviopen()がi/pファイル名で呼び出されると、ファイル全体を解析します。& mallocを持つ構造体にいくつかの情報を保存します。今度は再びAPIが呼び出され、そのファイルの構造体の情報を使用する必要があります&いくつかの作業を行います。私のライブラリで複数のi/pファイルを扱う方法は?

私はこれらの構造をライブラリユーザーに公開したくありません。でも私は彼にその構造のポインタを与えたくない。その場合、どうすればその構造の軌跡を保つことができますか?

また、私のライブラリで複数のファイルをサポートしたいので、アプリケーションが一度に複数のファイルを開く場合は、そのファイルを開くことができます。

ここで、どのように私は割り当てられた構造のために開いた各ファイルのハンドルを維持できますか?

答えて

1

opaque pointerはこれを実装する通常の方法です。

何らかの理由でポインタを渡したくない場合は、構造体のグローバル(「プライベート」)配列/ハッシュを保持し、そのグローバル・コンテナ内のインデックスをユーザーに与えることができますプレーンint)。それは、不透明なポインタを渡すだけではなく、はるかに多くの作業(そして失敗しやすく、潜在的に手の込んだ)です。

関連する問題