17898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/* 27898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 37898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 47898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * you may not use this file except in compliance with the License. 67898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * You may obtain a copy of the License at 77898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 87898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 107898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * See the License for the specific language governing permissions and 147898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * limitations under the License. 157898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */ 167898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 177898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#ifndef PINYINIME_INCLUDE_SYNC_H__ 187898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#define PINYINIME_INCLUDE_SYNC_H__ 197898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 207898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#define ___SYNC_ENABLED___ 217898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 227898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#ifdef ___SYNC_ENABLED___ 237898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 247898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#include "userdict.h" 257898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 267898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectnamespace ime_pinyin { 277898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 287898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// Class for user dictionary synchronization 297898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// This class is not thread safe 307898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// Normal invoking flow will be 317898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// begin() -> 327898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// put_lemmas() x N -> 337898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// { 347898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// get_lemmas() -> 357898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// [ get_last_got_count() ] -> 367898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// clear_last_got() -> 377898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// } x N -> 387898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project// finish() 397898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectclass Sync { 407898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public: 417898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Sync(); 427898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project ~Sync(); 437898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 447898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project static const int kUserDictMaxLemmaCount = 5000; 457898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project static const int kUserDictMaxLemmaSize = 200000; 467898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project static const int kUserDictRatio = 20; 477898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 487898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project bool begin(const char * filename); 497898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 507898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Merge lemmas downloaded from sync server into local dictionary 517898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // lemmas, lemmas string encoded in UTF16LE 527898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // len, length of lemmas string 537898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Return how many lemmas merged successfully 547898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int put_lemmas(char16 * lemmas, int len); 557898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 567898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Get local new user lemmas into UTF16LE string 577898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // str, buffer ptr to store new user lemmas 587898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // size, size of buffer 597898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Return length of returned buffer in measure of UTF16LE 607898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int get_lemmas(char16 * str, int size); 617898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 627898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Return lemmas count in last get_lemmas() 637898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int get_last_got_count(); 647898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 657898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Return total lemmas count need get_lemmas() 667898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int get_total_count(); 677898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 687898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project // Clear lemmas got by recent get_lemmas() 697898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project void clear_last_got(); 707898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 717898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project void finish(); 727898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 737898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int get_capacity(); 747898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 757898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private: 767898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project UserDict * userdict_; 777898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project char * dictfile_; 787898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int last_count_; 797898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project}; 807898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 817898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project} 827898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 837898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#endif 847898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 857898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project#endif // PINYINIME_INCLUDE_SYNC_H__ 86