summaryrefslogtreecommitdiff
path: root/PinyinIME/jni/include/lpicache.h
diff options
context:
space:
mode:
Diffstat (limited to 'PinyinIME/jni/include/lpicache.h')
-rw-r--r--PinyinIME/jni/include/lpicache.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/PinyinIME/jni/include/lpicache.h b/PinyinIME/jni/include/lpicache.h
new file mode 100644
index 0000000..6073597
--- /dev/null
+++ b/PinyinIME/jni/include/lpicache.h
@@ -0,0 +1,62 @@
+/*
+ * 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_ANDPY_INCLUDE_LPICACHE_H__
+#define PINYINIME_ANDPY_INCLUDE_LPICACHE_H__
+
+#include <stdlib.h>
+#include "./searchutility.h"
+#include "./spellingtrie.h"
+
+namespace ime_pinyin {
+
+// Used to cache LmaPsbItem list for half spelling ids.
+class LpiCache {
+ private:
+ static LpiCache *instance_;
+ static const int kMaxLpiCachePerId = 15;
+
+ LmaPsbItem *lpi_cache_;
+ uint16 *lpi_cache_len_;
+
+ public:
+ LpiCache();
+ ~LpiCache();
+
+ static LpiCache& get_instance();
+
+ // Test if the LPI list of the given splid has been cached.
+ // If splid is a full spelling id, it returns false, because we only cache
+ // list for half ids.
+ bool is_cached(uint16 splid);
+
+ // Put LPI list to cahce. If the length of the list, lpi_num, is longer than
+ // the cache buffer. the list will be truncated, and function returns the
+ // maximum length of the cache buffer.
+ // Note: splid must be a half id, and lpi_items must be not NULL. The
+ // caller of this function should guarantee this.
+ size_t put_cache(uint16 splid, LmaPsbItem lpi_items[], size_t lpi_num);
+
+ // Get the cached list for the given half id.
+ // Return the length of the cached buffer.
+ // Note: splid must be a half id, and lpi_items must be not NULL. The
+ // caller of this function should guarantee this.
+ size_t get_cache(uint16 splid, LmaPsbItem lpi_items[], size_t lpi_max);
+};
+
+} // namespace
+
+#endif // PINYINIME_ANDPY_INCLUDE_LPICACHE_H__