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みたいに使えますよ。と
下がその実行結果
一打鍵ごとに候補が絞られてます。