summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2014-04-28 13:27:59 +0800
committerPeng Wu <alexepico@gmail.com>2014-04-28 13:27:59 +0800
commitae65f9c93fc5714c4f7e2c5faaf07a81c5d08e68 (patch)
treea962aaf0c7c21b26129156f68908f684a960d1d9
parent1b38714d21d0380341c5fbcf88d0edbf17c8bd27 (diff)
downloadlibzhuyin-ae65f9c93fc5714c4f7e2c5faaf07a81c5d08e68.tar.gz
libzhuyin-ae65f9c93fc5714c4f7e2c5faaf07a81c5d08e68.tar.xz
libzhuyin-ae65f9c93fc5714c4f7e2c5faaf07a81c5d08e68.zip
add zhuyin_get_parsed_input_length function
-rw-r--r--src/libzhuyin.ver1
-rw-r--r--src/zhuyin.cpp18
-rw-r--r--src/zhuyin.h11
3 files changed, 26 insertions, 4 deletions
diff --git a/src/libzhuyin.ver b/src/libzhuyin.ver
index 989671f..b6d1636 100644
--- a/src/libzhuyin.ver
+++ b/src/libzhuyin.ver
@@ -22,6 +22,7 @@ LIBZHUYIN {
zhuyin_parse_more_full_pinyins;
zhuyin_parse_chewing;
zhuyin_parse_more_chewings;
+ zhuyin_get_parsed_input_length;
zhuyin_in_chewing_keyboard;
zhuyin_guess_candidates;
zhuyin_choose_candidate;
diff --git a/src/zhuyin.cpp b/src/zhuyin.cpp
index 267de3f..926b19c 100644
--- a/src/zhuyin.cpp
+++ b/src/zhuyin.cpp
@@ -62,6 +62,7 @@ struct _zhuyin_instance_t{
TokenVector m_prefixes;
ChewingKeyVector m_pinyin_keys;
ChewingKeyRestVector m_pinyin_key_rests;
+ size_t m_parsed_len;
CandidateConstraints m_constraints;
MatchResults m_match_results;
CandidateVector m_candidates;
@@ -773,6 +774,9 @@ zhuyin_instance_t * zhuyin_alloc_instance(zhuyin_context_t * context){
instance->m_pinyin_keys = g_array_new(FALSE, FALSE, sizeof(ChewingKey));
instance->m_pinyin_key_rests =
g_array_new(FALSE, FALSE, sizeof(ChewingKeyRest));
+
+ instance->m_parsed_len = 0;
+
instance->m_constraints = g_array_new
(TRUE, FALSE, sizeof(lookup_constraint_t));
instance->m_match_results =
@@ -926,11 +930,12 @@ size_t zhuyin_parse_more_full_pinyins(zhuyin_instance_t * instance,
instance->m_raw_full_pinyin = g_strdup(pinyins);
int pinyin_len = strlen(pinyins);
- int parse_len = context->m_full_pinyin_parser->parse
+ int parsed_len = context->m_full_pinyin_parser->parse
( context->m_options, instance->m_pinyin_keys,
instance->m_pinyin_key_rests, pinyins, pinyin_len);
- return parse_len;
+ instance->m_parsed_len = parsed_len;
+ return parsed_len;
}
bool zhuyin_parse_chewing(zhuyin_instance_t * instance,
@@ -949,11 +954,16 @@ size_t zhuyin_parse_more_chewings(zhuyin_instance_t * instance,
zhuyin_context_t * & context = instance->m_context;
int chewing_len = strlen(chewings);
- int parse_len = context->m_chewing_parser->parse
+ int parsed_len = context->m_chewing_parser->parse
( context->m_options, instance->m_pinyin_keys,
instance->m_pinyin_key_rests, chewings, chewing_len);
- return parse_len;
+ instance->m_parsed_len = parsed_len;
+ return parsed_len;
+}
+
+size_t zhuyin_get_parsed_input_length(zhuyin_instance_t * instance) {
+ return instance->m_parsed_len;
}
bool zhuyin_in_chewing_keyboard(zhuyin_instance_t * instance,
diff --git a/src/zhuyin.h b/src/zhuyin.h
index f0fd9b2..5867d10 100644
--- a/src/zhuyin.h
+++ b/src/zhuyin.h
@@ -309,6 +309,17 @@ size_t zhuyin_parse_more_chewings(zhuyin_instance_t * instance,
const char * chewings);
/**
+ * zhuyin_get_parsed_input_length:
+ * @instance: the zhuyin instance.
+ * @returns: the parsed_length of the input.
+ *
+ * Get the parsed length of the input.
+ *
+ */
+size_t zhuyin_get_parsed_input_length(zhuyin_instance_t * instance);
+
+
+/**
* zhuyin_in_chewing_keyboard:
* @instance: the zhuyin instance.
* @key: the input key.