From: Peng Wu Date: Mon, 5 Nov 2012 05:41:01 +0000 (+0800) Subject: write get length in progress X-Git-Tag: 0.8.91~70 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=52d001b0833ad3578873751bcb80010853add60f;p=platform%2Fupstream%2Flibpinyin.git write get length in progress --- diff --git a/src/storage/phrase_large_table2.cpp b/src/storage/phrase_large_table2.cpp index 94edfe0..7d3d83b 100644 --- a/src/storage/phrase_large_table2.cpp +++ b/src/storage/phrase_large_table2.cpp @@ -48,6 +48,9 @@ public: /* in */ phrase_token_t token); int remove_index(int phrase_length, /* in */ ucs4_t phrase[], /* in */ phrase_token_t token); + + /* get length method */ + int get_length() const; }; @@ -80,6 +83,9 @@ public: /* add_index/remove_index method */ int add_index(/* in */ ucs4_t phrase[], /* in */ phrase_token_t token); int remove_index(/* in */ ucs4_t phrase[], /* in */ phrase_token_t token); + + /* get length method */ + int get_length() const; }; }; @@ -652,3 +658,32 @@ store(MemoryChunk * new_chunk, table_offset_t offset, table_offset_t & end) { end = offset + m_chunk.size(); return true; } + + +/* get length method */ + +int PhraseLengthIndexLevel2::get_length() const { + int length = m_phrase_array_indexes->len; + + /* trim trailing zero. */ + for (int i = length - 1; i >= 0; --i) { + void * array = g_array_index(m_phrase_array_indexes, void *, i); + + if (NULL != array) + break; + + --length; + } + + return length; +} + + +template +int PhraseArrayIndexLevel2::get_length() const { + IndexItem * chunk_begin = NULL, * chunk_end = NULL; + chunk_begin = (IndexItem *) m_chunk.begin(); + chunk_end = (IndexItem *) m_chunk.end(); + + return chunk_end - chunk_begin; +}