]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Make use of the new skippable CachingList optimizations.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 10 Dec 2017 21:43:01 +0000 (22:43 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 10 Dec 2017 21:43:01 +0000 (22:43 +0100)
Util
src/com/hughes/android/dictionary/engine/Dictionary.java
src/com/hughes/android/dictionary/engine/Index.java
src/com/hughes/android/dictionary/engine/PairEntry.java

diff --git a/Util b/Util
index 23c6349bd8331e34107a1bcb8e709be1b3ad0bb8..1923f0d7df985ebcf5a7bc01d8a2f9ceabd21550 160000 (submodule)
--- a/Util
+++ b/Util
@@ -1 +1 @@
-Subproject commit 23c6349bd8331e34107a1bcb8e709be1b3ad0bb8
+Subproject commit 1923f0d7df985ebcf5a7bc01d8a2f9ceabd21550
index 3abe61e959f82d870acf576cb3b503574ae7fd30..4543b7bbc7866a8f0ad022cc52225cfcb26e032e 100644 (file)
@@ -88,14 +88,14 @@ public class Dictionary implements RAFSerializable<Dictionary> {
 
             pairEntries = CachingList.create(
                               RAFList.create(ch, new PairEntry.Serializer(this), ch.position(), dictFileVersion, dictInfo + " pairs: "),
-                              CACHE_SIZE);
+                              CACHE_SIZE, false);
             textEntries = CachingList.create(
                               RAFList.create(ch, new TextEntry.Serializer(this), ch.position(), dictFileVersion, dictInfo + " text: "),
-                              CACHE_SIZE);
+                              CACHE_SIZE, true);
             if (dictFileVersion >= 5) {
                 htmlEntries = CachingList.create(
                                   RAFList.create(ch, new HtmlEntry.Serializer(this, ch), ch.position(), dictFileVersion, dictInfo + " html: "),
-                                  CACHE_SIZE);
+                                  CACHE_SIZE, true);
             } else {
                 htmlEntries = Collections.emptyList();
             }
index c254d303dcdbe452829d3e9b8e7494538a4f09fc..99cdb54a7be407167e90bd0d69ee03222feb8d28 100644 (file)
@@ -136,7 +136,7 @@ public final class Index implements RAFSerializable<Index> {
         }
         sortedIndexEntries = CachingList.create(
                                  RAFList.create(inp, new IndexEntrySerializer(dict.dictFileVersion == 6 ? inp : null), inp.position(),
-                                                dict.dictFileVersion, dict.dictInfo + " idx " + languageCode + ": "), CACHE_SIZE);
+                                                dict.dictFileVersion, dict.dictInfo + " idx " + languageCode + ": "), CACHE_SIZE, true);
         if (dict.dictFileVersion >= 7) {
             int count = StringUtil.readVarInt(raf);
             stoplist = new HashSet<String>(count);
@@ -150,7 +150,7 @@ public final class Index implements RAFSerializable<Index> {
         }
         rows = CachingList.create(
                    UniformRAFList.create(inp, new RowBase.Serializer(this), inp.position()),
-                   CACHE_SIZE);
+                   CACHE_SIZE, true);
     }
 
     @Override
@@ -249,7 +249,7 @@ public final class Index implements RAFSerializable<Index> {
                 this.htmlEntries = CachingList.create(
                                        RAFList.create(ch, index.dict.htmlEntryIndexSerializer,
                                                       ch.position(), index.dict.dictFileVersion,
-                                                      index.dict.dictInfo + " htmlEntries: "), 1);
+                                                      index.dict.dictInfo + " htmlEntries: "), 1, false);
             } else {
                 this.htmlEntries = Collections.emptyList();
             }
index 305f034d2875c2b0bf568374b57e090b9f217785..d3fb060e1dc0570a3d02a326e0283ac8a58382cd 100644 (file)
@@ -16,6 +16,7 @@ package com.hughes.android.dictionary.engine;
 
 import com.hughes.util.StringUtil;
 import com.hughes.util.raf.RAFListSerializer;
+import com.hughes.util.raf.RAFListSerializerSkippable;
 import com.hughes.util.raf.RAFSerializable;
 import com.ibm.icu.text.Transliterator;
 
@@ -63,7 +64,7 @@ public class PairEntry extends AbstractEntry implements RAFSerializable<PairEntr
         }
     }
 
-    static final class Serializer implements RAFListSerializer<PairEntry> {
+    static final class Serializer implements RAFListSerializerSkippable<PairEntry> {
 
         final Dictionary dictionary;
 
@@ -76,6 +77,25 @@ public class PairEntry extends AbstractEntry implements RAFSerializable<PairEntr
             return new PairEntry(dictionary, raf, index);
         }
 
+        @Override
+        public void skip(DataInput raf, int index) throws IOException {
+            final int size;
+            if (dictionary.dictFileVersion >= 7)
+            {
+                StringUtil.readVarInt(raf);
+                size = StringUtil.readVarInt(raf);
+            }
+            else
+            {
+                raf.skipBytes(2);
+                size = raf.readInt();
+            }
+            for (int i = 0; i < 2*size; ++i) {
+                int l = raf.readUnsignedShort();
+                raf.skipBytes(l);
+            }
+        }
+
         @Override
         public void write(DataOutput raf, PairEntry t) throws IOException {
             t.write(raf);