From ae65f9c93fc5714c4f7e2c5faaf07a81c5d08e68 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Mon, 28 Apr 2014 13:27:59 +0800 Subject: add zhuyin_get_parsed_input_length function --- src/libzhuyin.ver | 1 + src/zhuyin.cpp | 18 ++++++++++++++---- src/zhuyin.h | 11 +++++++++++ 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 @@ -308,6 +308,17 @@ bool zhuyin_parse_chewing(zhuyin_instance_t * instance, 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. -- cgit