Add DynamicShortcutListPolicy::copyAllShortcuts().
Bug: 6669677 Change-Id: I74959fe3ca59d77ba0279c75f4d72db13735322fmain
parent
eaee156128
commit
9e3082e016
|
@ -31,7 +31,7 @@ namespace latinime {
|
||||||
*/
|
*/
|
||||||
class DynamicShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
|
class DynamicShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
|
||||||
public:
|
public:
|
||||||
explicit DynamicShortcutListPolicy(const BufferWithExtendableBuffer *const buffer)
|
explicit DynamicShortcutListPolicy(BufferWithExtendableBuffer *const buffer)
|
||||||
: mBuffer(buffer) {}
|
: mBuffer(buffer) {}
|
||||||
|
|
||||||
~DynamicShortcutListPolicy() {}
|
~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:
|
private:
|
||||||
DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicShortcutListPolicy);
|
DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicShortcutListPolicy);
|
||||||
|
|
||||||
const BufferWithExtendableBuffer *const mBuffer;
|
BufferWithExtendableBuffer *const mBuffer;
|
||||||
};
|
};
|
||||||
} // namespace latinime
|
} // namespace latinime
|
||||||
#endif // LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
|
#endif // LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
|
||||||
|
|
Loading…
Reference in New Issue