aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2013-09-03 04:44:37 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-03 04:44:37 -0700
commit4f9e0972f2da1e780e0e42d64e13cf674f6262cc (patch)
tree76f001e0785415b80730ad9c47f84dceef37e1a7
parentc606e9d79459d3111817bf92aa9bd7ab24cb113d (diff)
parent64621cf49b609ec5c8081cce202ae2f016be20bd (diff)
downloadlatinime-4f9e0972f2da1e780e0e42d64e13cf674f6262cc.tar.gz
latinime-4f9e0972f2da1e780e0e42d64e13cf674f6262cc.tar.xz
latinime-4f9e0972f2da1e780e0e42d64e13cf674f6262cc.zip
am 64621cf4: Merge "Add DynamicShortcutListPolicy::copyAllShortcuts()."
* commit '64621cf49b609ec5c8081cce202ae2f016be20bd': Add DynamicShortcutListPolicy::copyAllShortcuts().
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
index 4bf745fa3..5e9c52950 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
@@ -31,7 +31,7 @@ namespace latinime {
*/
class DynamicShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
public:
- explicit DynamicShortcutListPolicy(const BufferWithExtendableBuffer *const buffer)
+ explicit DynamicShortcutListPolicy(BufferWithExtendableBuffer *const buffer)
: mBuffer(buffer) {}
~DynamicShortcutListPolicy() {}
@@ -82,10 +82,33 @@ class DynamicShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
}
}
+ // Copy shortcuts from the shortcut list that starts at fromPos to toPos and advance these
+ // positions after the shortcut lists.
+ void copyAllShortcuts(int *const fromPos, int *const toPos) {
+ const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*fromPos);
+ const uint8_t *const buffer = mBuffer->getBuffer(usesAdditionalBuffer);
+ if (usesAdditionalBuffer) {
+ *fromPos -= mBuffer->getOriginalBufferSize();
+ }
+ const int shortcutListSize = ShortcutListReadingUtils
+ ::getShortcutListSizeAndForwardPointer(buffer, fromPos);
+ // Copy shortcut list size.
+ mBuffer->writeUintAndAdvancePosition(
+ shortcutListSize + ShortcutListReadingUtils::getShortcutListSizeFieldSize(),
+ ShortcutListReadingUtils::getShortcutListSizeFieldSize(), toPos);
+ for (int i = 0; i < shortcutListSize; ++i) {
+ const uint8_t data = ByteArrayUtils::readUint8AndAdvancePosition(buffer, fromPos);
+ mBuffer->writeUintAndAdvancePosition(data, 1 /* size */, toPos);
+ }
+ if (usesAdditionalBuffer) {
+ *fromPos += mBuffer->getOriginalBufferSize();
+ }
+ }
+
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicShortcutListPolicy);
- const BufferWithExtendableBuffer *const mBuffer;
+ BufferWithExtendableBuffer *const mBuffer;
};
} // namespace latinime
#endif // LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H