aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorYuichiro Hanada <yhanada@google.com>2012-09-26 01:33:01 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-09-26 01:33:01 -0700
commit77d67586d1f0b2c2ed93d5af86ef79f3878eb57e (patch)
tree1f411f0c9dcea10db67c8d6f16a94488ce610271 /java/src
parent9facffbb870b06d76e58c17c3394f43fa9601947 (diff)
parent2aea34fb31f1a8a5fe24cccd1b9aab4908f2f8e2 (diff)
downloadlatinime-77d67586d1f0b2c2ed93d5af86ef79f3878eb57e.tar.gz
latinime-77d67586d1f0b2c2ed93d5af86ef79f3878eb57e.tar.xz
latinime-77d67586d1f0b2c2ed93d5af86ef79f3878eb57e.zip
am 2aea34fb: Add updateParentAddress.
* commit '2aea34fb31f1a8a5fe24cccd1b9aab4908f2f8e2': Add updateParentAddress.
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
index e2c1254ce..b97be0543 100644
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
@@ -246,4 +246,34 @@ public class BinaryDictIOUtils {
buffer.position(wordPosition);
buffer.put((byte)newFlags);
}
+
+ private static void putSInt24(final FusionDictionaryBufferInterface buffer,
+ final int value) {
+ final int absValue = Math.abs(value);
+ buffer.put((byte)(((value < 0 ? 0x80 : 0) | (absValue >> 16)) & 0xFF));
+ buffer.put((byte)((absValue >> 8) & 0xFF));
+ buffer.put((byte)(absValue & 0xFF));
+ }
+
+ /**
+ * Update a parent address in a CharGroup that is addressed by groupOriginAddress.
+ *
+ * @param buffer the buffer to write.
+ * @param groupOriginAddress the address of the group.
+ * @param newParentAddress the absolute address of the parent.
+ * @param formatOptions file format options.
+ */
+ public static void updateParentAddress(final FusionDictionaryBufferInterface buffer,
+ final int groupOriginAddress, final int newParentAddress,
+ final FormatOptions formatOptions) {
+ final int originalPosition = buffer.position();
+ buffer.position(groupOriginAddress);
+ if (!formatOptions.mSupportsDynamicUpdate) {
+ throw new RuntimeException("this file format does not support parent addresses");
+ }
+ final int flags = buffer.readUnsignedByte();
+ final int parentOffset = newParentAddress - groupOriginAddress;
+ putSInt24(buffer, parentOffset);
+ buffer.position(originalPosition);
+ }
}