AutoJudgクラス

よく考えたら最小限の基本機能すらついてなかった上に、メンバ変数をprotectedにして継承した人に勝手にAutoJudgのメンバ変数をいじらせるのもなんだかおかしい。そもそも使い勝手が悪すぎる。
というわけで、インタフェースを改善。これでメンバ変数を気にする必要もなくなった。
現在の入力位置と次のローマ字候補を取得することで、1打鍵ごとにローマ字表記を変える事も可能になる。

class AutoJudg{
public:
  AutoJudg(RomanTable *rt);
  ~AutoJudg();
	
  int Type(int key);                          //キー入力
  void SetText(string kana);                  //文字列セット
  void Clear();                               //文字列クリア
  int GetKouho(NOMINATE &list,int pos = -1);  //次のローマ字候補を取得
  int GetKanaPos();                           //現在の入力位置(かな)
  int GetRomePos();                           //現在の入力位置(ローマ字)
private:
  メンバ変数
}

またまたタイム測定
「っ」が入ると変換に時間がかかるので、40文字の文字列(オール「っ」の場合とオール「あ」の場合)にSetText()とClear()を100回繰り返した場合のタイムを測定してみる。

オール「っ」:2765ミリ秒
オール「あ」: 660ミリ秒
10個「っ」:1155ミリ秒

大分違うなぁ。最後に30文字「あ」で10文字「っ」の場合を入れてみたけど、実際に使われる文字列としてはやっぱり40文字の変換に0.01秒程度ということになる。


ちなみに、main.cppみたいに使えますよ。と
下がその実行結果

一打鍵ごとに候補が絞られてます。