summaryrefslogtreecommitdiffstats
path: root/src/ZYEnhancedText.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2014-03-21 13:33:00 +0800
committerPeng Wu <alexepico@gmail.com>2014-03-21 13:33:00 +0800
commit725486e710dfa6866fb82253bac83cf8fc5e26a9 (patch)
tree0217e48e6667ea8897fe4431d331c341276481fa /src/ZYEnhancedText.cc
parentb1a372cba4697ed41edc271e8bb8b9713552e360 (diff)
downloadibus-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.cc31
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;
+}
};