aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-10-24 04:04:00 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-24 04:04:00 +0000
commit41df0260b724abe85ec6a66aad092f3b17060eaf (patch)
tree1b5c76d3a14646da5385ca9b38e867e02856412b
parente3acb6e975095188f7e48ee4b93341769b3f240b (diff)
parent9e58ae469843fd2c293e8ebf87df3a03c7603b58 (diff)
downloadlatinime-41df0260b724abe85ec6a66aad092f3b17060eaf.tar.gz
latinime-41df0260b724abe85ec6a66aad092f3b17060eaf.tar.xz
latinime-41df0260b724abe85ec6a66aad092f3b17060eaf.zip
am 9e58ae46: Merge "Some more simplification of DecoderSpec works"
* commit '9e58ae469843fd2c293e8ebf87df3a03c7603b58': Some more simplification of DecoderSpec works
-rw-r--r--tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java19
-rw-r--r--tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java2
2 files changed, 14 insertions, 7 deletions
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java
index d7497e623..f169641f0 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java
@@ -32,6 +32,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.util.Arrays;
import java.util.ArrayList;
/**
@@ -52,12 +53,18 @@ public final class BinaryDictOffdeviceUtils {
public final static int ENCRYPTION = 2;
private final static int MAX_DECODE_DEPTH = 4;
- ArrayList<Integer> mDecoderSpec = new ArrayList<>();
+ final int[] mDecoderSpec;
File mFile;
- public DecoderChainSpec addStep(final int stepDescription) {
- mDecoderSpec.add(stepDescription);
- return this;
+ public DecoderChainSpec() {
+ mDecoderSpec = new int[0];
+ mFile = null;
+ }
+
+ public DecoderChainSpec(final DecoderChainSpec src, final int newStep) {
+ mDecoderSpec = Arrays.copyOf(src.mDecoderSpec, src.mDecoderSpec.length + 1);
+ mDecoderSpec[src.mDecoderSpec.length] = newStep;
+ mFile = src.mFile;
}
private String getStepDescription(final int step) {
@@ -120,7 +127,7 @@ public final class BinaryDictOffdeviceUtils {
final DecoderChainSpec newSpec =
getRawDictionaryOrNullInternal(spec, uncompressedFile, depth + 1);
if (null == newSpec) return null;
- return newSpec.addStep(DecoderChainSpec.COMPRESSION);
+ return new DecoderChainSpec(newSpec, DecoderChainSpec.COMPRESSION);
}
// It's not a compressed either - try to see if it's crypted.
final File decryptedFile = tryGetDecryptedFile(src);
@@ -128,7 +135,7 @@ public final class BinaryDictOffdeviceUtils {
final DecoderChainSpec newSpec =
getRawDictionaryOrNullInternal(spec, decryptedFile, depth + 1);
if (null == newSpec) return null;
- return newSpec.addStep(DecoderChainSpec.ENCRYPTION);
+ return new DecoderChainSpec(newSpec, DecoderChainSpec.ENCRYPTION);
}
return null;
}
diff --git a/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java b/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java
index fc0cbfd27..6cdbff7e5 100644
--- a/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java
+++ b/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java
@@ -82,7 +82,7 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
assertEquals("Wrong decode spec",
BinaryDictOffdeviceUtils.DecoderChainSpec.COMPRESSION, step);
}
- assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.size());
+ assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.length);
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(decodeSpec.mFile, 0,
decodeSpec.mFile.length());
final FusionDictionary resultDict =