diff --git a/scim-wnn/src/romkan.cpp b/scim-wnn/src/romkan.cpp index bdc49c4..ddc8a50 100644 --- a/scim-wnn/src/romkan.cpp +++ b/scim-wnn/src/romkan.cpp @@ -48,15 +48,21 @@ unsigned int i = 0; while(strcmp(_RomkanTable[i],"") != 0) { - RomkanTableEntry e; - e.key = String(_RomkanTable[i]); WideString w; + String s = _RomkanTable[i]; iconvert.convert(w,String(_RomkanTable[i + 1])); - e.kana = w; - RomkanTable.push_back(e); + RomkanTable.insert(pair(s,w)); + if (s.length() > 1) { + String k = s.substr(0,s.length() - 1); + if (keepTable.find(k) == keepTable.end()) { + keepTable.insert(k); + } + } i += 2; } + // ��α�ơ��֥������ + } @@ -166,17 +172,15 @@ } } + // ��α�ơ��֥�򸡺����롣 + if (keepTable.find(buf) != keepTable.end()) return(text); // �ơ��֥�򸡺��������Ϥ��롣 - for(unsigned int i = 0;i < RomkanTable.size();i ++) { - if (buf == RomkanTable[i].key) { - if (!RomkanTable[i].kana.size()) { - return(text); // ��α���롣 - } - text = text.substr(0,pos - buf.length()) + RomkanTable[i].kana + text.substr(pos); - pos = pos - buf.length() + RomkanTable[i].kana.length(); - buf.clear(); - return(text); - } + map::iterator it = RomkanTable.find(buf); + if (it != RomkanTable.end()) { + text = text.substr(0,pos - buf.length()) + it->second + text.substr(pos); + pos = pos - buf.length() + it->second.length(); + buf.clear(); + return(text); } if (buf.length()) { buf = buf.substr(1); diff --git a/scim-wnn/src/romkan.h b/scim-wnn/src/romkan.h index 97255d2..d6d8e31 100644 --- a/scim-wnn/src/romkan.h +++ b/scim-wnn/src/romkan.h @@ -23,6 +23,8 @@ #define Uses_SCIM_ICONV #define Uses_SCIM_CONFIG_BASE #include +#include +#include #include #include #include @@ -70,7 +72,8 @@ enum inputMode {ROMA,ASCII,WASCII}; inputMode mode; bool nnMode; - vector RomkanTable; + map RomkanTable; + set keepTable; }; #endif diff --git a/scim-wnn/src/romkan_table.h b/scim-wnn/src/romkan_table.h index bfa7887..954525b 100644 --- a/scim-wnn/src/romkan_table.h +++ b/scim-wnn/src/romkan_table.h @@ -29,61 +29,51 @@ "u", "��", "e", "��", "o", "��", - "k", "", "ka", "��", "ki", "��", "ku", "��", "ke", "��", "ko", "��", - "s", "", "sa", "��", "si", "��", "su", "��", "se", "��", "so", "��", - "t", "", "ta", "��", "ti", "��", "tu", "��", "te", "��", "to", "��", - "n", "", "na", "��", "ni", "��", "nu", "��", "ne", "��", "no", "��", - "h", "", "ha", "��", "hi", "��", "hu", "��", "he", "��", "ho", "��", - "m", "", "ma", "��", "mi", "��", "mu", "��", "me", "��", "mo", "��", - "y", "", "ya", "��", "yi", "��", "yu", "��", "ye", "����", "yo", "��", - "r", "", "ra", "��", "ri", "��", "ru", "��", "re", "��", "ro", "��", - "l", "", "la", "��", "li", "��", "lu", "��", "le", "��", "lo", "��", - "w", "", "wa", "��", "wi", "��", "wu", "��", @@ -91,146 +81,120 @@ "wo", "��", "nn", "��", "N", "��", // ��ʸ����N���� - "x", "", "xa", "��", "xi", "��", "xu", "��", "xe", "��", "xo", "��", - "xt", "", "xtu", "��", - "xy", "", "xya", "��", "xyu", "��", "xyo", "��", - "g", "", "ga", "��", "gi", "��", "gu", "��", "ge", "��", "go", "��", - "z", "", "za", "��", "zi", "��", "zu", "��", "ze", "��", "zo", "��", - "d", "", "da", "��", "di", "��", "du", "��", "de", "��", "do", "��", - "b", "", "ba", "��", "bi", "��", "bu", "��", "be", "��", "bo", "��", - "p", "", "pa", "��", "pi", "��", "pu", "��", "pe", "��", "po", "��", - "ky", "", "kya", "����", "kyi", "����", "kyu", "����", "kye", "����", "kyo", "����", - "sy", "", "sya", "����", "syi", "��", "syu", "����", "sye", "����", "syo", "����", - "sh", "", "sha", "����", "shi", "��", "shu", "����", "she", "����", "sho", "����", - "c", "", - "ch", "", "cha", "����", "chi", "��", "chu", "����", "che", "����", "cho", "����", - "ty", "", "tya", "����", "tyi", "�Ƥ�", "tyu", "����", "tye", "����", "tyo", "����", - "dy", "", "dya", "�¤�", "dyi", "�Ǥ�", "dyu", "�¤�", "dye", "�¤�", "dyo", "�¤�", - "v", "", "va", "����", "vi", "����", "vu", "��", "ve", "����", "vo", "����", - "zy", "", "zya", "����", "zyi", "����", "zyu", "����", "zye", "����", "zyo", "����", - "j", "", "ja", "����", "ji", "��", "ju", "����", "je", "����", "jo", "����", - "f", "", "fa", "�դ�", "fi", "�դ�", "fu", "��", "fe", "�դ�", "fo", "�դ�", - "hy", "", "hya", "�Ҥ�", "hyi", "�Ҥ�", "hyu", "�Ҥ�", "hye", "�Ҥ�", "hyo", "�Ҥ�", - "ry", "", "rya", "���", "ryi", "�ꤣ", "ryu", "���", "rye", "�ꤧ", "ryo", "���", - "ny", "", "nya", "�ˤ�", "nyi", "�ˤ�", "nyu", "�ˤ�", "nye", "�ˤ�", "nyo", "�ˤ�", - "gy", "", "gya", "����", "gyi", "����", "gyu", "����", "gye", "����", "gyo", "����", - "py", "", "pya", "�Ԥ�", "pyi", "�Ԥ�", "pyu", "�Ԥ�", "pye", "�Ԥ�", "pyo", "�Ԥ�", - "my", "", "mya", "�ߤ�", "myi", "�ߤ�", "myu", "�ߤ�", "mye", "�ߤ�", "myo", "�ߤ�", - "Z", "", "Za", "��", "Zb", "��", "Zc", "��",