dawgdic-0.4.2 に更新

以前の投稿(2009-08-28 - やた@はてな日記)で述べたとおり,重み付きキー補完において,外部レコードを利用できるように拡張しました.ただし,とても使いにくいのでおすすめできません.やっつけ仕事っぽい仕上がりです.

  • 使い方
    • キー補完用辞書の構築
      • dawgdic::RankedGuideBuilder::Build() の第三引数に dawgdic::ValueType を比較するための関数オブジェクトを渡す.
    • キー補完
      • RankedCompleter の代わりに RankedCompleterBase<> を利用する.
      • RankedCompleterBase<> のテンプレート引数に上で渡した関数オブジェクトのクラスを指定する.
      • RankedCompleterBase<> のコンストラクタに関数オブジェクトを渡す.

例えば,dawgdic::Dictionary に格納するレコードが std::vector のインデックスになっている場合,以下のように関数オブジェクトのクラスを定義します.

class Comparer
{
public:
  explicit Comparer(const std::vector<int> &values) : values_(&values) {}

  bool operator()(const dawgdic::ValueType &lhs,
    const dawgdic::ValueType &rhs) const
  {
    return (*values_)[lhs] < (*values_)[rhs];
  }

private:
  const std::vector<int> *values_;
};

もっと良い方法があると思うのですが,後付けということもあり,こんな風になってしまいました.

# そして,ドキュメントの更新が追いついていません.