DでQDBM

キャッシュファイルの形式にQDBM(http://qdbm.sourceforge.net/)を使ってみようと思ったので、D言語から使えるか試してみた。

結果的には使える。が、メモリアロケータの指定ができないようなので、QDBMが内部でmallocを使って領域を確保して返し、呼び出し側でfreeする必要があると記述されている関数類は使えない。
(freeすると落ちたり不安定になる。リンクしているライブラリが違うから?)
よって、データの取得関数であるdpgetが使えない。
これは、代わりにデータを格納するアドレスを指定できるdpgetwbを使うとよい。
データのサイズがあらかじめ分からない場合は、dpvsizが使える。
ただし、2回検索することになるかも?

とりあえず使用用途が固定長データの操作なので気にしない。
Curia: 拡張APIというのが説明を読む限りではいい感じ。使ったことないが、まずはこれで試してみようと思う。