diff options
author | Peng Wu <alexepico@gmail.com> | 2014-03-21 13:33:00 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2014-03-21 13:33:00 +0800 |
commit | 725486e710dfa6866fb82253bac83cf8fc5e26a9 (patch) | |
tree | 0217e48e6667ea8897fe4431d331c341276481fa /src/ZYEnhancedText.cc | |
parent | b1a372cba4697ed41edc271e8bb8b9713552e360 (diff) | |
download | ibus-libzhuyin-725486e710dfa6866fb82253bac83cf8fc5e26a9.tar.gz ibus-libzhuyin-725486e710dfa6866fb82253bac83cf8fc5e26a9.tar.xz ibus-libzhuyin-725486e710dfa6866fb82253bac83cf8fc5e26a9.zip |
write erase_input_sequence function
Diffstat (limited to 'src/ZYEnhancedText.cc')
-rw-r--r-- | src/ZYEnhancedText.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/ZYEnhancedText.cc b/src/ZYEnhancedText.cc index 3380562..2a3092f 100644 --- a/src/ZYEnhancedText.cc +++ b/src/ZYEnhancedText.cc @@ -272,5 +272,36 @@ insert_symbol(String & enhanced_text, size_t offset, return insert_section(enhanced_text, offset, section); } +bool +erase_input_sequence(String & enhanced_text, size_t offset, size_t length) +{ + size_t pos = 0, start_pos = 0, end_pos = 0; + section_t section_type = probe_section(enhanced_text, offset, pos); + start_pos = pos; end_pos = pos; + for (size_t i = 0; i < length; ++i) { + switch (section_type) { + case PHONETIC_SECTION: + ++ end_pos; + break; + case SYMBOL_SECTION: + { + String type, lookup, choice; + assert (get_symbol_section (enhanced_text, pos, end_pos, + type, lookup, choice)); + } + break; + } + pos = end_pos; + + /* reach the end of the enhanced text. */ + if (enhanced_text.length () == pos) + break; + + section_type = probe_section_quick (enhanced_text, pos); + } + + enhanced_text.erase (start_pos, end_pos - start_pos); + return true; +} }; |