diff options
| author | Peng Wu <alexepico@gmail.com> | 2010-07-01 11:46:59 +0800 |
|---|---|---|
| committer | Peng Wu <alexepico@gmail.com> | 2010-07-01 11:46:59 +0800 |
| commit | f754d164d05cc38832837ee75337cd9da8247ca0 (patch) | |
| tree | c5f5d144aecbd8ca3173c52bf5bc84f75ac760ac /src/ExtEditor.cc | |
| parent | 607a7ec4e9c67155d931fa66f5d13cb04d986f20 (diff) | |
| download | ibus-libpinyin-f754d164d05cc38832837ee75337cd9da8247ca0.tar.gz ibus-libpinyin-f754d164d05cc38832837ee75337cd9da8247ca0.tar.xz ibus-libpinyin-f754d164d05cc38832837ee75337cd9da8247ca0.zip | |
re-factor chinese number code.
Diffstat (limited to 'src/ExtEditor.cc')
| -rw-r--r-- | src/ExtEditor.cc | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/src/ExtEditor.cc b/src/ExtEditor.cc index 547b847..3567772 100644 --- a/src/ExtEditor.cc +++ b/src/ExtEditor.cc @@ -34,11 +34,6 @@ extern "C" { namespace PY { -/* forward declaration function about Chinese Number. */ -static std::string translate_to_simplest(gint64 num); -static std::string translate_to_simplified(gint64 num); -static std::string translate_to_traditional(gint64 num); - /* Write digit/alpha/none Label generator here. * foreach (results): 1, from get_retval; 2..n from get_retvals. @@ -782,100 +777,6 @@ ExtEditor::updateAuxiliaryText (void) Editor::updateAuxiliaryText (aux_text, TRUE); } -static const char * numbers [2][10] = { - {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖",}, - {"〇", "一", "二", "三", "四", "五", "六", "七", "八", "九",}, -}; - -struct unit_t{ - const char * unit_zh_name; // Chinese Character - const int digits; // Position in string. - const bool persist; // Whether to force eating zero and force inserting into result string. -}; - -static unit_t units[] ={ - {"兆", 12, true}, - {"亿", 8, true}, - {"万", 4, true}, - {"千", 3, false}, - {"百", 2, false}, - {"十", 1, false}, - {"", 0, true}, -}; - -static std::string translate_to_simplest(gint64 num) -{ - std::string result = ""; - if ( num == 0 ) - result = numbers[1][0]; - while (num > 0) { - int remains = num % 10; - num = num / 10; - result = std::string ( numbers[1][remains] ) + result; - } - - return result; -} - -static std::string translate_to_longform(gint64 num, const char * number[10]) -{ - std::string result = ""; - int cur_pos = -1; - bool eat_zero = false; - - while (num > 0) { - int remains = num % 10; - num = num / 10; - cur_pos ++; - std::string unit = ""; - int pos = cur_pos; - size_t i = 6; - while ( pos > 0 ) { - for ( i = 0; i < sizeof (units)/ sizeof(units[0]); ++i) { - pos = pos % units[i].digits; - if ( pos == 0 ) - break; - } - } - - if ( units[i].persist ) { - result = std::string (units[i].unit_zh_name) + result; - eat_zero = true; - } - - if ( remains == 0){ - if ( eat_zero ) continue; - - result = std::string (number[0]) + result; - eat_zero = true; - continue; - }else{ - eat_zero = false; - } - - if (num == 0 && remains == 1 && i == 5) - result = std::string (units[i].unit_zh_name) + result; - else if (units[i].persist) - result = std::string (number[remains]) + result; - else - result = std::string (number[remains]) + std::string (units[i].unit_zh_name) + result; - } - - return result; -} - -static std::string translate_to_simplified(gint64 num) -{ - return translate_to_longform(num, numbers[1]); -} - -static std::string translate_to_traditional(gint64 num) -{ - if ( 0 == num ) - return numbers[0][0]; - return translate_to_longform(num, numbers[0]); -} - }; |
