86 lines
2.1 KiB
C++
86 lines
2.1 KiB
C++
/*
|
|
* Copyright (C) 2009 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef PINYINIME_INCLUDE_SYNC_H__
|
|
#define PINYINIME_INCLUDE_SYNC_H__
|
|
|
|
#define ___SYNC_ENABLED___
|
|
|
|
#ifdef ___SYNC_ENABLED___
|
|
|
|
#include "userdict.h"
|
|
|
|
namespace ime_pinyin {
|
|
|
|
// Class for user dictionary synchronization
|
|
// This class is not thread safe
|
|
// Normal invoking flow will be
|
|
// begin() ->
|
|
// put_lemmas() x N ->
|
|
// {
|
|
// get_lemmas() ->
|
|
// [ get_last_got_count() ] ->
|
|
// clear_last_got() ->
|
|
// } x N ->
|
|
// finish()
|
|
class Sync {
|
|
public:
|
|
Sync();
|
|
~Sync();
|
|
|
|
static const int kUserDictMaxLemmaCount = 5000;
|
|
static const int kUserDictMaxLemmaSize = 200000;
|
|
static const int kUserDictRatio = 20;
|
|
|
|
bool begin(const char * filename);
|
|
|
|
// Merge lemmas downloaded from sync server into local dictionary
|
|
// lemmas, lemmas string encoded in UTF16LE
|
|
// len, length of lemmas string
|
|
// Return how many lemmas merged successfully
|
|
int put_lemmas(char16 * lemmas, int len);
|
|
|
|
// Get local new user lemmas into UTF16LE string
|
|
// str, buffer ptr to store new user lemmas
|
|
// size, size of buffer
|
|
// Return length of returned buffer in measure of UTF16LE
|
|
int get_lemmas(char16 * str, int size);
|
|
|
|
// Return lemmas count in last get_lemmas()
|
|
int get_last_got_count();
|
|
|
|
// Return total lemmas count need get_lemmas()
|
|
int get_total_count();
|
|
|
|
// Clear lemmas got by recent get_lemmas()
|
|
void clear_last_got();
|
|
|
|
void finish();
|
|
|
|
int get_capacity();
|
|
|
|
private:
|
|
UserDict * userdict_;
|
|
char * dictfile_;
|
|
int last_count_;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif // PINYINIME_INCLUDE_SYNC_H__
|