diff --git a/code/index/index-journal/java/nu/marginalia/index/journal/IndexJournalPage.java b/code/index/index-journal/java/nu/marginalia/index/journal/IndexJournalPage.java index 6f355f2e..8806fa61 100644 --- a/code/index/index-journal/java/nu/marginalia/index/journal/IndexJournalPage.java +++ b/code/index/index-journal/java/nu/marginalia/index/journal/IndexJournalPage.java @@ -52,7 +52,7 @@ public record IndexJournalPage(Path baseDir, int page) { return size.forPage(page).open(table, baseDir); } - public LongColumnReader openTermCounts(SlopTable table) throws IOException { + public VarintColumnReader openTermCounts(SlopTable table) throws IOException { return termCounts.forPage(page).open(table, baseDir); } diff --git a/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumn.java b/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumn.java index 8d28f29c..9a8f08a9 100644 --- a/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumn.java +++ b/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumn.java @@ -75,18 +75,32 @@ public class VarintColumn { return columnDesc; } - public long get() throws IOException { - long value = 0; + public int get() throws IOException { + int value = 0; int shift = 0; + byte b; - while (true) { - long b = reader.getByte(); + do { + b = reader.getByte(); value |= (b & 0x7F) << shift; shift += 7; - if ((b & 0x80) == 0) { - break; - } - } + } while ((b & 0x80) != 0); + + position++; + + return value; + } + + public long getLong() throws IOException { + long value = 0; + int shift = 0; + byte b; + + do { + b = reader.getByte(); + value |= (long) (b & 0x7F) << shift; + shift += 7; + } while ((b & 0x80) != 0); position++; diff --git a/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumnReader.java b/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumnReader.java index fdb67be9..106bae86 100644 --- a/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumnReader.java +++ b/code/libraries/slop/java/nu/marginalia/slop/column/dynamic/VarintColumnReader.java @@ -1,10 +1,13 @@ package nu.marginalia.slop.column.dynamic; -import nu.marginalia.slop.column.primitive.LongColumnReader; +import nu.marginalia.slop.column.primitive.IntColumnReader; import java.io.IOException; -public interface VarintColumnReader extends LongColumnReader { +public interface VarintColumnReader extends IntColumnReader { + + int get() throws IOException; + long getLong() throws IOException; @Override long position() throws IOException;