RefDefault
This commit is contained in:
parent
7aead0ce75
commit
2ede4244b1
16 changed files with 106 additions and 54 deletions
|
@ -14,7 +14,7 @@ public final class AnyPointer {
|
|||
}
|
||||
|
||||
public final <T> T getAs(FromPointerReader<T> factory) {
|
||||
return factory.fromPointerReader(this.segment, this.pointer, null, 0, this.nestingLimit);
|
||||
return factory.fromPointerReader(this.segment, this.pointer, this.nestingLimit);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,13 +4,18 @@ import java.nio.ByteBuffer;
|
|||
|
||||
public final class Data {
|
||||
public static final class Factory implements FromPointerReaderBlobDefault<Reader>,
|
||||
FromPointerReader<Reader>,
|
||||
FromPointerBuilderBlobDefault<Builder>,
|
||||
FromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
InitSizedFromPointerBuilder<Builder> {
|
||||
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
||||
int defaultOffset, int defaultSize) {
|
||||
return WireHelpers.readDataPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
||||
}
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer, int nestingLimit) {
|
||||
return WireHelpers.readDataPointer(segment, pointer, null, 0, 0);
|
||||
}
|
||||
public final Builder fromPointerBuilderBlobDefault(SegmentBuilder segment, int pointer,
|
||||
java.nio.ByteBuffer defaultBuffer, int defaultOffset, int defaultSize) {
|
||||
return WireHelpers.getWritableDataPointer(pointer,
|
||||
|
@ -19,6 +24,11 @@ public final class Data {
|
|||
defaultOffset,
|
||||
defaultSize);
|
||||
}
|
||||
public final Builder fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||
return WireHelpers.getWritableDataPointer(pointer,
|
||||
segment,
|
||||
null, 0, 0);
|
||||
}
|
||||
|
||||
public final Builder initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int size) {
|
||||
return WireHelpers.initDataPointer(pointer, segment, size);
|
||||
|
|
|
@ -30,7 +30,7 @@ public final class DataList {
|
|||
}
|
||||
|
||||
public Data.Reader get(int index) {
|
||||
return _getPointerElement(Data.factory, index, null, 0, 0);
|
||||
return _getPointerElement(Data.factory, index);
|
||||
}
|
||||
|
||||
public final class Iterator implements java.util.Iterator<Data.Reader> {
|
||||
|
@ -41,7 +41,7 @@ public final class DataList {
|
|||
}
|
||||
|
||||
public Data.Reader next() {
|
||||
return _getPointerElement(Data.factory, idx++, null, 0, 0);
|
||||
return this.list._getPointerElement(Data.factory, idx++);
|
||||
}
|
||||
public boolean hasNext() {
|
||||
return idx < list.size();
|
||||
|
@ -65,7 +65,7 @@ public final class DataList {
|
|||
}
|
||||
|
||||
public final Data.Builder get(int index) {
|
||||
return _getPointerElement(Data.factory, index, null, 0, 0);
|
||||
return _getPointerElement(Data.factory, index);
|
||||
}
|
||||
|
||||
public final void set(int index, Data.Reader value) {
|
||||
|
@ -80,7 +80,7 @@ public final class DataList {
|
|||
}
|
||||
|
||||
public Data.Builder next() {
|
||||
return this.list._getPointerElement(Data.factory, idx++, null, 0, 0);
|
||||
return this.list._getPointerElement(Data.factory, idx++);
|
||||
}
|
||||
public boolean hasNext() {
|
||||
return this.idx < this.list.size();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package org.capnproto;
|
||||
|
||||
public interface FromPointerBuilder<T> {
|
||||
T fromPointerBuilder(SegmentBuilder segment, int pointer, SegmentReader defaultSegment, int defaultOffset);
|
||||
T fromPointerBuilder(SegmentBuilder segment, int pointer);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package org.capnproto;
|
||||
|
||||
public interface FromPointerBuilderRefDefault<T> {
|
||||
T fromPointerBuilderRefDefault(SegmentBuilder segment, int pointer, SegmentReader defaultSegment, int defaultOffset);
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
package org.capnproto;
|
||||
|
||||
public interface FromPointerReader<T> {
|
||||
T fromPointerReader(SegmentReader segment, int pointer, SegmentReader defaultSegment, int defaultOffset, int nestingLimit);
|
||||
T fromPointerReader(SegmentReader segment, int pointer, int nestingLimit);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package org.capnproto;
|
||||
|
||||
public interface FromPointerReaderRefDefault<T> {
|
||||
T fromPointerReaderRefDefault(SegmentReader segment, int pointer, SegmentReader defaultSegment, int defaultOffset, int nestingLimit);
|
||||
}
|
|
@ -104,22 +104,12 @@ public class ListBuilder {
|
|||
(byte)(indexBit % 8));
|
||||
}
|
||||
|
||||
protected final <T> T _getPointerElement(FromPointerBuilder<T> factory, int index, SegmentReader defaultSegment, int defaultOffset) {
|
||||
protected final <T> T _getPointerElement(FromPointerBuilder<T> factory, int index) {
|
||||
return factory.fromPointerBuilder(
|
||||
this.segment,
|
||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD,
|
||||
defaultSegment, defaultOffset);
|
||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD);
|
||||
}
|
||||
|
||||
protected final <T> T _getPointerElement(FromPointerBuilderBlobDefault<T> factory, int index,
|
||||
java.nio.ByteBuffer defaultBuffer, int defaultOffset, int defaultSize) {
|
||||
return factory.fromPointerBuilderBlobDefault(
|
||||
this.segment,
|
||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD,
|
||||
defaultBuffer, defaultOffset, defaultSize);
|
||||
}
|
||||
|
||||
|
||||
protected final <T> T _initPointerElement(InitFromPointerBuilder<T> factory, int index) {
|
||||
return factory.initFromPointerBuilder(
|
||||
this.segment,
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
package org.capnproto;
|
||||
|
||||
public abstract class ListFactory<Builder, Reader extends ListReader>
|
||||
implements ListBuilder.Factory<Builder>, FromPointerBuilder<Builder>,
|
||||
implements ListBuilder.Factory<Builder>,
|
||||
FromPointerBuilder<Builder>,
|
||||
FromPointerBuilderRefDefault<Builder>,
|
||||
InitSizedFromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
ListReader.Factory<Reader>, FromPointerReader<Reader> {
|
||||
ListReader.Factory<Reader>,
|
||||
FromPointerReader<Reader>,
|
||||
FromPointerReaderRefDefault<Reader> {
|
||||
|
||||
final byte elementSize;
|
||||
ListFactory(byte elementSize) {this.elementSize = elementSize;}
|
||||
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer,
|
||||
SegmentReader defaultSegment, int defaultOffset,
|
||||
int nestingLimit) {
|
||||
public final Reader fromPointerReaderRefDefault(SegmentReader segment, int pointer,
|
||||
SegmentReader defaultSegment, int defaultOffset,
|
||||
int nestingLimit) {
|
||||
return WireHelpers.readListPointer(this,
|
||||
segment,
|
||||
pointer,
|
||||
|
@ -21,7 +25,12 @@ public abstract class ListFactory<Builder, Reader extends ListReader>
|
|||
nestingLimit);
|
||||
}
|
||||
|
||||
public Builder fromPointerBuilder(SegmentBuilder segment, int pointer, SegmentReader defaultSegment, int defaultOffset) {
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer, int nestingLimit) {
|
||||
return fromPointerReaderRefDefault(segment, pointer, null, 0, nestingLimit);
|
||||
}
|
||||
|
||||
public Builder fromPointerBuilderRefDefault(SegmentBuilder segment, int pointer,
|
||||
SegmentReader defaultSegment, int defaultOffset) {
|
||||
return WireHelpers.getWritableListPointer(this,
|
||||
pointer,
|
||||
segment,
|
||||
|
@ -30,6 +39,14 @@ public abstract class ListFactory<Builder, Reader extends ListReader>
|
|||
defaultOffset);
|
||||
}
|
||||
|
||||
public Builder fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||
return WireHelpers.getWritableListPointer(this,
|
||||
pointer,
|
||||
segment,
|
||||
this.elementSize,
|
||||
null, 0);
|
||||
}
|
||||
|
||||
public Builder initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount) {
|
||||
return WireHelpers.initListPointer(this, pointer, segment, elementCount, this.elementSize);
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ public final class ListList {
|
|||
}
|
||||
|
||||
public T get(int index) {
|
||||
return _getPointerElement(this.factory, index, null, 0);
|
||||
return _getPointerElement(this.factory, index);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ public final class ListList {
|
|||
}
|
||||
|
||||
public final T get(int index) {
|
||||
return _getPointerElement(this.factory, index, null, 0);
|
||||
return _getPointerElement(this.factory, index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,11 +86,9 @@ public class ListReader {
|
|||
this.structPointerCount, (byte) (indexBit % 8), this.nestingLimit - 1);
|
||||
}
|
||||
|
||||
protected <T> T _getPointerElement(FromPointerReader<T> factory, int index, SegmentReader defaultSegment, int defaultOffset) {
|
||||
protected <T> T _getPointerElement(FromPointerReader<T> factory, int index) {
|
||||
return factory.fromPointerReader(this.segment,
|
||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD,
|
||||
defaultSegment,
|
||||
defaultOffset,
|
||||
this.nestingLimit);
|
||||
}
|
||||
|
||||
|
|
|
@ -159,8 +159,9 @@ public class StructBuilder {
|
|||
this.segment.buffer.putLong(pointer * 8, 0L);
|
||||
}
|
||||
|
||||
protected final <T> T _getPointerField(FromPointerBuilder<T> factory, int index, SegmentReader defaultSegment, int defaultOffset) {
|
||||
return factory.fromPointerBuilder(this.segment, this.pointers + index, defaultSegment, defaultOffset);
|
||||
protected final <T> T _getPointerField(FromPointerBuilderRefDefault<T> factory, int index,
|
||||
SegmentReader defaultSegment, int defaultOffset) {
|
||||
return factory.fromPointerBuilderRefDefault(this.segment, this.pointers + index, defaultSegment, defaultOffset);
|
||||
}
|
||||
|
||||
protected final <T> T _getPointerField(FromPointerBuilderBlobDefault<T> factory, int index,
|
||||
|
|
|
@ -1,23 +1,35 @@
|
|||
package org.capnproto;
|
||||
|
||||
public abstract class StructFactory<Builder, Reader extends StructReader>
|
||||
implements FromPointerBuilder<Builder>, StructBuilder.Factory<Builder>,
|
||||
implements FromPointerBuilder<Builder>,
|
||||
FromPointerBuilderRefDefault<Builder>,
|
||||
StructBuilder.Factory<Builder>,
|
||||
InitFromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
FromPointerReader<Reader>, StructReader.Factory<Reader> {
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer,
|
||||
SegmentReader defaultSegment, int defaultOffset,
|
||||
int nestingLimit) {
|
||||
FromPointerReader<Reader>,
|
||||
FromPointerReaderRefDefault<Reader>,
|
||||
StructReader.Factory<Reader> {
|
||||
public final Reader fromPointerReaderRefDefault(SegmentReader segment, int pointer,
|
||||
SegmentReader defaultSegment, int defaultOffset,
|
||||
int nestingLimit) {
|
||||
return WireHelpers.readStructPointer(this,
|
||||
segment,
|
||||
pointer,
|
||||
defaultSegment, defaultOffset,
|
||||
nestingLimit);
|
||||
}
|
||||
public final Builder fromPointerBuilder(SegmentBuilder segment, int pointer, SegmentReader defaultSegment, int defaultOffset) {
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer, int nestingLimit) {
|
||||
return fromPointerReaderRefDefault(segment, pointer, null, 0, nestingLimit);
|
||||
}
|
||||
public final Builder fromPointerBuilderRefDefault(SegmentBuilder segment, int pointer,
|
||||
SegmentReader defaultSegment, int defaultOffset) {
|
||||
return WireHelpers.getWritableStructPointer(this, pointer, segment, this.structSize(),
|
||||
defaultSegment, defaultOffset);
|
||||
}
|
||||
public final Builder fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||
return WireHelpers.getWritableStructPointer(this, pointer, segment, this.structSize(),
|
||||
null, 0);
|
||||
}
|
||||
public final Builder initFromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||
return WireHelpers.initStructPointer(this, pointer, segment, this.structSize());
|
||||
}
|
||||
|
|
|
@ -139,19 +139,20 @@ public class StructReader {
|
|||
return this.segment.buffer.getLong((this.pointers + ptrIndex) * Constants.BYTES_PER_WORD) == 0;
|
||||
}
|
||||
|
||||
protected final <T> T _getPointerField(FromPointerReader<T> factory, int ptrIndex, SegmentReader defaultSegment, int defaultOffset) {
|
||||
protected final <T> T _getPointerField(FromPointerReaderRefDefault<T> factory, int ptrIndex,
|
||||
SegmentReader defaultSegment, int defaultOffset) {
|
||||
if (ptrIndex < this.pointerCount) {
|
||||
return factory.fromPointerReader(this.segment,
|
||||
this.pointers + ptrIndex,
|
||||
defaultSegment,
|
||||
defaultOffset,
|
||||
this.nestingLimit);
|
||||
return factory.fromPointerReaderRefDefault(this.segment,
|
||||
this.pointers + ptrIndex,
|
||||
defaultSegment,
|
||||
defaultOffset,
|
||||
this.nestingLimit);
|
||||
} else {
|
||||
return factory.fromPointerReader(SegmentReader.EMPTY,
|
||||
0,
|
||||
defaultSegment,
|
||||
defaultOffset,
|
||||
this.nestingLimit);
|
||||
return factory.fromPointerReaderRefDefault(SegmentReader.EMPTY,
|
||||
0,
|
||||
defaultSegment,
|
||||
defaultOffset,
|
||||
this.nestingLimit);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,8 +3,11 @@ package org.capnproto;
|
|||
import java.nio.ByteBuffer;
|
||||
|
||||
public final class Text {
|
||||
public static final class Factory implements FromPointerReaderBlobDefault<Reader>,
|
||||
public static final class Factory implements
|
||||
FromPointerReaderBlobDefault<Reader>,
|
||||
FromPointerReader<Reader>,
|
||||
FromPointerBuilderBlobDefault<Builder>,
|
||||
FromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
InitSizedFromPointerBuilder<Builder> {
|
||||
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
||||
|
@ -12,6 +15,10 @@ public final class Text {
|
|||
return WireHelpers.readTextPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
||||
}
|
||||
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer, int nestingLimit) {
|
||||
return WireHelpers.readTextPointer(segment, pointer, null, 0, 0);
|
||||
}
|
||||
|
||||
public final Builder fromPointerBuilderBlobDefault(SegmentBuilder segment, int pointer,
|
||||
java.nio.ByteBuffer defaultBuffer, int defaultOffset, int defaultSize) {
|
||||
return WireHelpers.getWritableTextPointer(pointer,
|
||||
|
@ -21,6 +28,12 @@ public final class Text {
|
|||
defaultSize);
|
||||
}
|
||||
|
||||
public final Builder fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||
return WireHelpers.getWritableTextPointer(pointer,
|
||||
segment,
|
||||
null, 0, 0);
|
||||
}
|
||||
|
||||
public final Builder initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int size) {
|
||||
return WireHelpers.initTextPointer(pointer, segment, size);
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ public final class TextList {
|
|||
}
|
||||
|
||||
public Text.Reader get(int index) {
|
||||
return _getPointerElement(Text.factory, index, null, 0, 0);
|
||||
return _getPointerElement(Text.factory, index);
|
||||
}
|
||||
|
||||
public final class Iterator implements java.util.Iterator<Text.Reader> {
|
||||
|
@ -41,7 +41,7 @@ public final class TextList {
|
|||
}
|
||||
|
||||
public Text.Reader next() {
|
||||
return _getPointerElement(Text.factory, idx++, null, 0, 0);
|
||||
return this.list._getPointerElement(Text.factory, idx++);
|
||||
}
|
||||
public boolean hasNext() {
|
||||
return idx < list.size();
|
||||
|
@ -65,7 +65,7 @@ public final class TextList {
|
|||
}
|
||||
|
||||
public final Text.Builder get(int index) {
|
||||
return _getPointerElement(Text.factory, index, null, 0, 0);
|
||||
return _getPointerElement(Text.factory, index);
|
||||
}
|
||||
|
||||
public final void set(int index, Text.Reader value) {
|
||||
|
@ -80,7 +80,7 @@ public final class TextList {
|
|||
}
|
||||
|
||||
public Text.Builder next() {
|
||||
return this.list._getPointerElement(Text.factory, idx++, null, 0, 0);
|
||||
return this.list._getPointerElement(Text.factory, idx++);
|
||||
}
|
||||
public boolean hasNext() {
|
||||
return this.idx < this.list.size();
|
||||
|
|
Loading…
Reference in a new issue