Merge "Move code only used for dicttool and tests under tests."
commit
6008898b99
|
@ -18,9 +18,7 @@ package com.android.inputmethod.latin.makedict;
|
||||||
|
|
||||||
import com.android.inputmethod.annotations.UsedForTesting;
|
import com.android.inputmethod.annotations.UsedForTesting;
|
||||||
import com.android.inputmethod.latin.Constants;
|
import com.android.inputmethod.latin.Constants;
|
||||||
import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
@ -363,42 +361,6 @@ public final class FormatSpec {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns new dictionary decoder.
|
|
||||||
*
|
|
||||||
* @param dictFile the dictionary file.
|
|
||||||
* @param offset the offset in the file.
|
|
||||||
* @param length the length of the file, in bytes.
|
|
||||||
* @param bufferType The type of buffer, as one of USE_* in DictDecoder.
|
|
||||||
* @return new dictionary decoder if the dictionary file exists, otherwise null.
|
|
||||||
*/
|
|
||||||
public static DictDecoder getDictDecoder(final File dictFile, final long offset,
|
|
||||||
final long length, final int bufferType) {
|
|
||||||
if (dictFile.isDirectory()) {
|
|
||||||
return new Ver4DictDecoder(dictFile, bufferType);
|
|
||||||
} else if (dictFile.isFile()) {
|
|
||||||
return new Ver2DictDecoder(dictFile, offset, length, bufferType);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@UsedForTesting
|
|
||||||
public static DictDecoder getDictDecoder(final File dictFile, final long offset,
|
|
||||||
final long length, final DictionaryBufferFactory factory) {
|
|
||||||
if (dictFile.isDirectory()) {
|
|
||||||
return new Ver4DictDecoder(dictFile, factory);
|
|
||||||
} else if (dictFile.isFile()) {
|
|
||||||
return new Ver2DictDecoder(dictFile, offset, length, factory);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@UsedForTesting
|
|
||||||
public static DictDecoder getDictDecoder(final File dictFile, final long offset,
|
|
||||||
final long length) {
|
|
||||||
return getDictDecoder(dictFile, offset, length, DictDecoder.USE_READONLY_BYTEBUFFER);
|
|
||||||
}
|
|
||||||
|
|
||||||
private FormatSpec() {
|
private FormatSpec() {
|
||||||
// This utility class is not publicly instantiable.
|
// This utility class is not publicly instantiable.
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2011 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.inputmethod.latin.makedict;
|
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Wrapper to redirect log events to the right output medium.
|
|
||||||
*/
|
|
||||||
public final class MakedictLog {
|
|
||||||
public static final boolean DBG = false;
|
|
||||||
private static final String TAG = MakedictLog.class.getSimpleName();
|
|
||||||
|
|
||||||
public static void d(String message) {
|
|
||||||
if (DBG) {
|
|
||||||
Log.d(TAG, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void i(String message) {
|
|
||||||
if (DBG) {
|
|
||||||
Log.i(TAG, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void w(String message) {
|
|
||||||
Log.w(TAG, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void e(String message) {
|
|
||||||
Log.e(TAG, message);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -23,12 +23,10 @@ import android.content.res.Resources;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.inputmethod.annotations.UsedForTesting;
|
|
||||||
import com.android.inputmethod.latin.AssetFileAddress;
|
import com.android.inputmethod.latin.AssetFileAddress;
|
||||||
import com.android.inputmethod.latin.BinaryDictionaryGetter;
|
import com.android.inputmethod.latin.BinaryDictionaryGetter;
|
||||||
import com.android.inputmethod.latin.Constants;
|
import com.android.inputmethod.latin.Constants;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
|
|
||||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||||
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||||
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
|
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.test.AndroidTestCase;
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
import android.test.suitebuilder.annotation.LargeTest;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
|
||||||
import com.android.inputmethod.latin.makedict.CodePointUtils;
|
import com.android.inputmethod.latin.makedict.CodePointUtils;
|
||||||
import com.android.inputmethod.latin.makedict.DictDecoder;
|
import com.android.inputmethod.latin.makedict.DictDecoder;
|
||||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||||
|
@ -151,7 +152,8 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
|
||||||
binaryDictionary.flushWithGC();
|
binaryDictionary.flushWithGC();
|
||||||
binaryDictionary.close();
|
binaryDictionary.close();
|
||||||
|
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(dictFile, 0, dictFile.length());
|
final DictDecoder dictDecoder =
|
||||||
|
BinaryDictIOUtils.getDictDecoder(dictFile, 0, dictFile.length());
|
||||||
try {
|
try {
|
||||||
final FusionDictionary dict =
|
final FusionDictionary dict =
|
||||||
dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
|
|
|
@ -251,7 +251,7 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
|
||||||
|
|
||||||
FusionDictionary dict = null;
|
FusionDictionary dict = null;
|
||||||
try {
|
try {
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, 0, file.length(),
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(),
|
||||||
bufferType);
|
bufferType);
|
||||||
now = System.currentTimeMillis();
|
now = System.currentTimeMillis();
|
||||||
dict = dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
dict = dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
|
@ -414,7 +414,7 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
|
||||||
|
|
||||||
long now = -1, diff = -1;
|
long now = -1, diff = -1;
|
||||||
try {
|
try {
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, 0, file.length(),
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(),
|
||||||
bufferType);
|
bufferType);
|
||||||
now = System.currentTimeMillis();
|
now = System.currentTimeMillis();
|
||||||
dictDecoder.readUnigramsAndBigramsBinary(resultWords, resultFreqs, resultBigrams);
|
dictDecoder.readUnigramsAndBigramsBinary(resultWords, resultFreqs, resultBigrams);
|
||||||
|
@ -539,7 +539,7 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
|
||||||
addBigrams(dict, words, bigrams);
|
addBigrams(dict, words, bigrams);
|
||||||
timeWritingDictToFile(file, dict, formatOptions);
|
timeWritingDictToFile(file, dict, formatOptions);
|
||||||
|
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, 0, file.length(),
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(),
|
||||||
DictDecoder.USE_BYTEARRAY);
|
DictDecoder.USE_BYTEARRAY);
|
||||||
try {
|
try {
|
||||||
dictDecoder.openDictBuffer();
|
dictDecoder.openDictBuffer();
|
||||||
|
|
|
@ -28,7 +28,6 @@ import java.nio.ByteBuffer;
|
||||||
*
|
*
|
||||||
* All the methods in this class are static.
|
* All the methods in this class are static.
|
||||||
*
|
*
|
||||||
* TODO: Remove calls from classes except Ver3DictDecoder
|
|
||||||
* TODO: Move this file to makedict/internal.
|
* TODO: Move this file to makedict/internal.
|
||||||
* TODO: Rename this class to DictDecoderUtils.
|
* TODO: Rename this class to DictDecoderUtils.
|
||||||
*/
|
*/
|
||||||
|
@ -356,7 +355,7 @@ public final class BinaryDictDecoderUtils {
|
||||||
* @return true if it's a binary dictionary, false otherwise
|
* @return true if it's a binary dictionary, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isBinaryDictionary(final File file) {
|
public static boolean isBinaryDictionary(final File file) {
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, 0, file.length());
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length());
|
||||||
if (dictDecoder == null) {
|
if (dictDecoder == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
|
@ -18,7 +18,9 @@ package com.android.inputmethod.latin.makedict;
|
||||||
|
|
||||||
import com.android.inputmethod.annotations.UsedForTesting;
|
import com.android.inputmethod.annotations.UsedForTesting;
|
||||||
import com.android.inputmethod.latin.Constants;
|
import com.android.inputmethod.latin.Constants;
|
||||||
|
import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -32,6 +34,38 @@ public final class BinaryDictIOUtils {
|
||||||
// This utility class is not publicly instantiable.
|
// This utility class is not publicly instantiable.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns new dictionary decoder.
|
||||||
|
*
|
||||||
|
* @param dictFile the dictionary file.
|
||||||
|
* @param bufferType The type of buffer, as one of USE_* in DictDecoder.
|
||||||
|
* @return new dictionary decoder if the dictionary file exists, otherwise null.
|
||||||
|
*/
|
||||||
|
public static DictDecoder getDictDecoder(final File dictFile, final long offset,
|
||||||
|
final long length, final int bufferType) {
|
||||||
|
if (dictFile.isDirectory()) {
|
||||||
|
return new Ver4DictDecoder(dictFile, bufferType);
|
||||||
|
} else if (dictFile.isFile()) {
|
||||||
|
return new Ver2DictDecoder(dictFile, offset, length, bufferType);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DictDecoder getDictDecoder(final File dictFile, final long offset,
|
||||||
|
final long length, final DictionaryBufferFactory factory) {
|
||||||
|
if (dictFile.isDirectory()) {
|
||||||
|
return new Ver4DictDecoder(dictFile, factory);
|
||||||
|
} else if (dictFile.isFile()) {
|
||||||
|
return new Ver2DictDecoder(dictFile, offset, length, factory);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DictDecoder getDictDecoder(final File dictFile, final long offset,
|
||||||
|
final long length) {
|
||||||
|
return getDictDecoder(dictFile, offset, length, DictDecoder.USE_READONLY_BYTEBUFFER);
|
||||||
|
}
|
||||||
|
|
||||||
private static final class Position {
|
private static final class Position {
|
||||||
public static final int NOT_READ_PTNODE_COUNT = -1;
|
public static final int NOT_READ_PTNODE_COUNT = -1;
|
||||||
|
|
|
@ -30,6 +30,7 @@ LATINIME_LOCAL_DIR := ../..
|
||||||
LATINIME_BASE_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/java/src/com/android/inputmethod
|
LATINIME_BASE_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/java/src/com/android/inputmethod
|
||||||
LATINIME_ANNOTATIONS_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/annotations
|
LATINIME_ANNOTATIONS_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/annotations
|
||||||
MAKEDICT_CORE_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/latin/makedict
|
MAKEDICT_CORE_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/latin/makedict
|
||||||
|
LATINIME_TESTS_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin
|
||||||
|
|
||||||
# Dependencies for Dicttool. Most of these files are needed by BinaryDictionary.java. Note that
|
# Dependencies for Dicttool. Most of these files are needed by BinaryDictionary.java. Note that
|
||||||
# a significant part of the dependencies are mocked in the compat/ directory, with empty or
|
# a significant part of the dependencies are mocked in the compat/ directory, with empty or
|
||||||
|
@ -47,7 +48,6 @@ LATINIME_SRCS_FOR_DICTTOOL := \
|
||||||
latin/WordComposer.java \
|
latin/WordComposer.java \
|
||||||
latin/settings/NativeSuggestOptions.java \
|
latin/settings/NativeSuggestOptions.java \
|
||||||
latin/utils/BinaryDictionaryUtils.java \
|
latin/utils/BinaryDictionaryUtils.java \
|
||||||
latin/utils/ByteArrayDictBuffer.java \
|
|
||||||
latin/utils/CollectionUtils.java \
|
latin/utils/CollectionUtils.java \
|
||||||
latin/utils/CombinedFormatUtils.java \
|
latin/utils/CombinedFormatUtils.java \
|
||||||
latin/utils/CoordinateUtils.java \
|
latin/utils/CoordinateUtils.java \
|
||||||
|
@ -56,8 +56,13 @@ LATINIME_SRCS_FOR_DICTTOOL := \
|
||||||
latin/utils/LocaleUtils.java \
|
latin/utils/LocaleUtils.java \
|
||||||
latin/utils/ResizableIntArray.java \
|
latin/utils/ResizableIntArray.java \
|
||||||
latin/utils/StringUtils.java
|
latin/utils/StringUtils.java
|
||||||
USED_TARGETED_SRCS := $(addprefix $(LATINIME_BASE_SOURCE_DIRECTORY)/, \
|
|
||||||
$(LATINIME_SRCS_FOR_DICTTOOL))
|
LATINIME_TEST_SRCS_FOR_DICTTOOL := \
|
||||||
|
utils/ByteArrayDictBuffer.java
|
||||||
|
|
||||||
|
USED_TARGETED_SRCS := \
|
||||||
|
$(addprefix $(LATINIME_BASE_SOURCE_DIRECTORY)/, $(LATINIME_SRCS_FOR_DICTTOOL)) \
|
||||||
|
$(addprefix $(LATINIME_TESTS_SOURCE_DIRECTORY)/, $(LATINIME_TEST_SRCS_FOR_DICTTOOL))
|
||||||
|
|
||||||
DICTTOOL_ONDEVICE_TESTS_DIRECTORY := \
|
DICTTOOL_ONDEVICE_TESTS_DIRECTORY := \
|
||||||
$(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin/makedict/
|
$(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin/makedict/
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package com.android.inputmethod.latin.dicttool;
|
package com.android.inputmethod.latin.dicttool;
|
||||||
|
|
||||||
import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils;
|
import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils;
|
||||||
|
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
|
||||||
import com.android.inputmethod.latin.makedict.DictDecoder;
|
import com.android.inputmethod.latin.makedict.DictDecoder;
|
||||||
import com.android.inputmethod.latin.makedict.FormatSpec;
|
import com.android.inputmethod.latin.makedict.FormatSpec;
|
||||||
import com.android.inputmethod.latin.makedict.FusionDictionary;
|
import com.android.inputmethod.latin.makedict.FusionDictionary;
|
||||||
|
@ -191,8 +192,9 @@ public final class BinaryDictOffdeviceUtils {
|
||||||
return CombinedInputOutput.readDictionaryCombined(
|
return CombinedInputOutput.readDictionaryCombined(
|
||||||
new BufferedInputStream(new FileInputStream(decodedSpec.mFile)));
|
new BufferedInputStream(new FileInputStream(decodedSpec.mFile)));
|
||||||
} else {
|
} else {
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(decodedSpec.mFile,
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(
|
||||||
0, decodedSpec.mFile.length(), DictDecoder.USE_BYTEARRAY);
|
decodedSpec.mFile, 0, decodedSpec.mFile.length(),
|
||||||
|
DictDecoder.USE_BYTEARRAY);
|
||||||
if (report) {
|
if (report) {
|
||||||
System.out.println("Format : Binary dictionary format");
|
System.out.println("Format : Binary dictionary format");
|
||||||
System.out.println("Packaging : " + decodedSpec.describeChain());
|
System.out.println("Packaging : " + decodedSpec.describeChain());
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package com.android.inputmethod.latin.dicttool;
|
package com.android.inputmethod.latin.dicttool;
|
||||||
|
|
||||||
import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils;
|
import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils;
|
||||||
|
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
|
||||||
import com.android.inputmethod.latin.makedict.DictDecoder;
|
import com.android.inputmethod.latin.makedict.DictDecoder;
|
||||||
import com.android.inputmethod.latin.makedict.DictEncoder;
|
import com.android.inputmethod.latin.makedict.DictEncoder;
|
||||||
import com.android.inputmethod.latin.makedict.FormatSpec;
|
import com.android.inputmethod.latin.makedict.FormatSpec;
|
||||||
|
@ -264,7 +265,7 @@ public class DictionaryMaker {
|
||||||
private static FusionDictionary readBinaryFile(final String binaryFilename)
|
private static FusionDictionary readBinaryFile(final String binaryFilename)
|
||||||
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
throws FileNotFoundException, IOException, UnsupportedFormatException {
|
||||||
final File file = new File(binaryFilename);
|
final File file = new File(binaryFilename);
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, 0, file.length());
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length());
|
||||||
return dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
return dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package com.android.inputmethod.latin.dicttool;
|
package com.android.inputmethod.latin.dicttool;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.Dictionary;
|
||||||
|
import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
|
||||||
import com.android.inputmethod.latin.makedict.DictDecoder;
|
import com.android.inputmethod.latin.makedict.DictDecoder;
|
||||||
import com.android.inputmethod.latin.makedict.DictEncoder;
|
import com.android.inputmethod.latin.makedict.DictEncoder;
|
||||||
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
import com.android.inputmethod.latin.makedict.DictionaryHeader;
|
||||||
|
@ -77,7 +79,7 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
|
||||||
assertEquals("Wrong decode spec", BinaryDictOffdeviceUtils.COMPRESSION, step);
|
assertEquals("Wrong decode spec", BinaryDictOffdeviceUtils.COMPRESSION, step);
|
||||||
}
|
}
|
||||||
assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.size());
|
assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.size());
|
||||||
final DictDecoder dictDecoder = FormatSpec.getDictDecoder(decodeSpec.mFile, 0,
|
final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(decodeSpec.mFile, 0,
|
||||||
decodeSpec.mFile.length());
|
decodeSpec.mFile.length());
|
||||||
final FusionDictionary resultDict =
|
final FusionDictionary resultDict =
|
||||||
dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
|
||||||
|
|
Loading…
Reference in New Issue