diff options
author | 2013-08-19 02:34:23 +0000 | |
---|---|---|
committer | 2013-08-19 02:34:23 +0000 | |
commit | a83e25642f1eae1412d85ce72f27601edd0ac10d (patch) | |
tree | 32d13d5b45981feb2206f0051d11df82ca08c657 /java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java | |
parent | 8aaae56cf6694ec75043be56f1c7812a343b24d5 (diff) | |
parent | d794b42f983a4f9563ef0334ed0b8f9cb44e084d (diff) | |
download | latinime-a83e25642f1eae1412d85ce72f27601edd0ac10d.tar.gz latinime-a83e25642f1eae1412d85ce72f27601edd0ac10d.tar.xz latinime-a83e25642f1eae1412d85ce72f27601edd0ac10d.zip |
Merge "Add HeaderReaderInterface."
Diffstat (limited to 'java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java index f2f3c465d..6d3b31a28 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java @@ -17,7 +17,9 @@ package com.android.inputmethod.latin.makedict; import com.android.inputmethod.annotations.UsedForTesting; +import com.android.inputmethod.latin.makedict.BinaryDictDecoder.CharEncoding; import com.android.inputmethod.latin.makedict.BinaryDictDecoder.FusionDictionaryBufferInterface; +import com.android.inputmethod.latin.makedict.decoder.HeaderReaderInterface; import com.android.inputmethod.latin.utils.ByteArrayWrapper; import java.io.File; @@ -27,8 +29,9 @@ import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.util.HashMap; -public class BinaryDictReader { +public class BinaryDictReader implements HeaderReaderInterface { public interface FusionDictionaryBufferFactory { public FusionDictionaryBufferInterface getFusionDictionaryBuffer(final File file) @@ -133,4 +136,34 @@ public class BinaryDictReader { openBuffer(factory); return getBuffer(); } + + // The implementation of HeaderReaderInterface + @Override + public int readVersion() throws IOException, UnsupportedFormatException { + return BinaryDictDecoder.checkFormatVersion(mFusionDictionaryBuffer); + } + + @Override + public int readOptionFlags() { + return mFusionDictionaryBuffer.readUnsignedShort(); + } + + @Override + public int readHeaderSize() { + return mFusionDictionaryBuffer.readInt(); + } + + @Override + public HashMap<String, String> readAttributes(final int headerSize) { + final HashMap<String, String> attributes = new HashMap<String, String>(); + while (mFusionDictionaryBuffer.position() < headerSize) { + // We can avoid infinite loop here since mFusionDictonary.position() is always increased + // by calling CharEncoding.readString. + final String key = CharEncoding.readString(mFusionDictionaryBuffer); + final String value = CharEncoding.readString(mFusionDictionaryBuffer); + attributes.put(key, value); + } + mFusionDictionaryBuffer.position(headerSize); + return attributes; + } } |