diff --git a/benchmark/src/main/java/org/capnproto/benchmark/TestCase.java b/benchmark/src/main/java/org/capnproto/benchmark/TestCase.java index 6ef36ad..e74f336 100644 --- a/benchmark/src/main/java/org/capnproto/benchmark/TestCase.java +++ b/benchmark/src/main/java/org/capnproto/benchmark/TestCase.java @@ -7,8 +7,6 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileDescriptor; -import org.capnproto.FromStructReader; -import org.capnproto.FromStructBuilder; import org.capnproto.StructFactory; import org.capnproto.MessageBuilder; import org.capnproto.MessageReader; diff --git a/compiler/src/main/cpp/capnpc-java.c++ b/compiler/src/main/cpp/capnpc-java.c++ index f20b183..b900380 100644 --- a/compiler/src/main/cpp/capnpc-java.c++ +++ b/compiler/src/main/cpp/capnpc-java.c++ @@ -1189,11 +1189,11 @@ private: spaces(indent), " public static class Factory implements org.capnproto.StructFactory {\n", spaces(indent), - " public final Reader fromStructReader(org.capnproto.SegmentReader segment, int data,", + " public final Reader constructReader(org.capnproto.SegmentReader segment, int data,", "int pointers, int dataSize, short pointerCount, byte bit0Offset, int nestingLimit) {\n", spaces(indent), " return new Reader(segment,data,pointers,dataSize,pointerCount,bit0Offset,nestingLimit);\n", spaces(indent), " }\n", - spaces(indent), " public final Builder fromStructBuilder(org.capnproto.SegmentBuilder segment, int data,", + spaces(indent), " public final Builder constructBuilder(org.capnproto.SegmentBuilder segment, int data,", "int pointers, int dataSize, short pointerCount, byte bit0Offset) {\n", spaces(indent), " return new Builder(segment, data, pointers, dataSize, pointerCount, bit0Offset);\n", spaces(indent), " }\n", diff --git a/runtime/src/main/java/org/capnproto/AnyPointer.java b/runtime/src/main/java/org/capnproto/AnyPointer.java index d465bf0..a4e38aa 100644 --- a/runtime/src/main/java/org/capnproto/AnyPointer.java +++ b/runtime/src/main/java/org/capnproto/AnyPointer.java @@ -9,7 +9,7 @@ public final class AnyPointer { this.reader = reader; } - public final T getAsStruct(FromStructReader factory) { + public final T getAsStruct(StructReader.Factory factory) { return this.reader.getStruct(factory); } @@ -25,7 +25,7 @@ public final class AnyPointer { this.builder = builder; } - public final T initAsStruct(FromStructBuilder factory) { + public final T initAsStruct(StructBuilder.Factory factory) { return this.builder.initStruct(factory); } diff --git a/runtime/src/main/java/org/capnproto/FromStructBuilder.java b/runtime/src/main/java/org/capnproto/FromStructBuilder.java deleted file mode 100644 index 30ee6f6..0000000 --- a/runtime/src/main/java/org/capnproto/FromStructBuilder.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.capnproto; - -public interface FromStructBuilder { - T fromStructBuilder(SegmentBuilder segment, int data, int pointers, int dataSize, - short pointerCount, byte bit0Offset); - StructSize structSize(); -} diff --git a/runtime/src/main/java/org/capnproto/FromStructReader.java b/runtime/src/main/java/org/capnproto/FromStructReader.java deleted file mode 100644 index 0556d7e..0000000 --- a/runtime/src/main/java/org/capnproto/FromStructReader.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.capnproto; - -public interface FromStructReader { - T fromStructReader(SegmentReader segment, int data, int pointers, - int dataSize, short pointerCount, - byte bit0Offset, int nestingLimit); -} diff --git a/runtime/src/main/java/org/capnproto/ListBuilder.java b/runtime/src/main/java/org/capnproto/ListBuilder.java index 582130b..205938a 100644 --- a/runtime/src/main/java/org/capnproto/ListBuilder.java +++ b/runtime/src/main/java/org/capnproto/ListBuilder.java @@ -85,17 +85,17 @@ public class ListBuilder { this.segment.buffer.putDouble(this.ptr + index * 8, value); } - protected final T _getStructElement(FromStructBuilder factory, int index) { + protected final T _getStructElement(StructBuilder.Factory factory, int index) { int indexBit = index * this.step; int structData = this.ptr + indexBit / 8 ; int structPointers = (structData + (this.structDataSize / 8)) / 8; - return factory.fromStructBuilder(this.segment, - structData, - structPointers, - this.structDataSize, - this.structPointerCount, - (byte)(indexBit % 8)); + return factory.constructBuilder(this.segment, + structData, + structPointers, + this.structDataSize, + this.structPointerCount, + (byte)(indexBit % 8)); } diff --git a/runtime/src/main/java/org/capnproto/ListReader.java b/runtime/src/main/java/org/capnproto/ListReader.java index 58be227..cebb68c 100644 --- a/runtime/src/main/java/org/capnproto/ListReader.java +++ b/runtime/src/main/java/org/capnproto/ListReader.java @@ -66,7 +66,7 @@ public class ListReader { return this.segment.buffer.getDouble(this.ptr + index * 8); } - protected T _getStructElement(FromStructReader factory, int index) { + protected T _getStructElement(StructReader.Factory factory, int index) { // TODO check nesting limit int indexBit = index * this.step; @@ -74,8 +74,8 @@ public class ListReader { int structData = this.ptr + (indexBit / 8); int structPointers = structData + (this.structDataSize / 8); - return factory.fromStructReader(this.segment, structData, structPointers / 8, this.structDataSize, - this.structPointerCount, (byte) (indexBit % 8), this.nestingLimit - 1); + return factory.constructReader(this.segment, structData, structPointers / 8, this.structDataSize, + this.structPointerCount, (byte) (indexBit % 8), this.nestingLimit - 1); } protected PointerReader _getPointerElement(int index) { diff --git a/runtime/src/main/java/org/capnproto/MessageBuilder.java b/runtime/src/main/java/org/capnproto/MessageBuilder.java index 4f4f3bd..a4d0eb8 100644 --- a/runtime/src/main/java/org/capnproto/MessageBuilder.java +++ b/runtime/src/main/java/org/capnproto/MessageBuilder.java @@ -19,11 +19,11 @@ public final class MessageBuilder { allocationStrategy); } - public T getRoot(FromStructBuilder factory) { + public T getRoot(StructBuilder.Factory factory) { throw new Error("unimplemented"); } - public T initRoot(FromStructBuilder factory) { + public T initRoot(StructBuilder.Factory factory) { SegmentBuilder rootSegment = this.arena.segments.get(0); int location = rootSegment.allocate(1); if (location == SegmentBuilder.FAILED_ALLOCATION) { diff --git a/runtime/src/main/java/org/capnproto/MessageReader.java b/runtime/src/main/java/org/capnproto/MessageReader.java index fa2e564..0ade469 100644 --- a/runtime/src/main/java/org/capnproto/MessageReader.java +++ b/runtime/src/main/java/org/capnproto/MessageReader.java @@ -9,7 +9,7 @@ public final class MessageReader { this.arena = new ReaderArena(segmentSlices); } - public T getRoot(FromStructReader factory) { + public T getRoot(StructReader.Factory factory) { SegmentReader segment = this.arena.tryGetSegment(0); PointerReader pointerReader = PointerReader.getRoot(segment, 0, 0x7fffffff /* XXX */); diff --git a/runtime/src/main/java/org/capnproto/PointerBuilder.java b/runtime/src/main/java/org/capnproto/PointerBuilder.java index 68dd117..1cc2c83 100644 --- a/runtime/src/main/java/org/capnproto/PointerBuilder.java +++ b/runtime/src/main/java/org/capnproto/PointerBuilder.java @@ -18,11 +18,11 @@ public final class PointerBuilder { } - public final T getStruct(FromStructBuilder factory) { + public final T getStruct(StructBuilder.Factory factory) { return WireHelpers.getWritableStructPointer(factory, this.pointer, this.segment, factory.structSize(), null, 0); } - public final T getStruct(FromStructBuilder factory, SegmentReader defaultReader, int defaultOffset) { + public final T getStruct(StructBuilder.Factory factory, SegmentReader defaultReader, int defaultOffset) { return WireHelpers.getWritableStructPointer(factory, this.pointer, this.segment, factory.structSize(), defaultReader, defaultOffset); } @@ -54,7 +54,7 @@ public final class PointerBuilder { defaultSize); } - public final T initStruct(FromStructBuilder factory) { + public final T initStruct(StructBuilder.Factory factory) { return WireHelpers.initStructPointer(factory, this.pointer, this.segment, factory.structSize()); } diff --git a/runtime/src/main/java/org/capnproto/PointerReader.java b/runtime/src/main/java/org/capnproto/PointerReader.java index d0b3d2e..1e1d1f7 100644 --- a/runtime/src/main/java/org/capnproto/PointerReader.java +++ b/runtime/src/main/java/org/capnproto/PointerReader.java @@ -28,7 +28,7 @@ public final class PointerReader { return this.segment.buffer.getLong(this.pointer) == 0; } - public T getStruct(FromStructReader factory) { + public T getStruct(StructReader.Factory factory) { return WireHelpers.readStructPointer(factory, this.segment, this.pointer, @@ -36,7 +36,7 @@ public final class PointerReader { this.nestingLimit); } - public T getStruct(FromStructReader factory, SegmentReader defaultSegment, int defaultOffset) { + public T getStruct(StructReader.Factory factory, SegmentReader defaultSegment, int defaultOffset) { return WireHelpers.readStructPointer(factory, this.segment, this.pointer, diff --git a/runtime/src/main/java/org/capnproto/StructBuilder.java b/runtime/src/main/java/org/capnproto/StructBuilder.java index 2e7932a..8b24772 100644 --- a/runtime/src/main/java/org/capnproto/StructBuilder.java +++ b/runtime/src/main/java/org/capnproto/StructBuilder.java @@ -1,6 +1,13 @@ package org.capnproto; public class StructBuilder { + + public interface Factory { + T constructBuilder(SegmentBuilder segment, int data, int pointers, int dataSize, + short pointerCount, byte bit0Offset); + StructSize structSize(); + } + protected final SegmentBuilder segment; protected final int data; // byte offset to data section protected final int pointers; // word offset of pointer section diff --git a/runtime/src/main/java/org/capnproto/StructFactory.java b/runtime/src/main/java/org/capnproto/StructFactory.java index 9fa9742..ba2d760 100644 --- a/runtime/src/main/java/org/capnproto/StructFactory.java +++ b/runtime/src/main/java/org/capnproto/StructFactory.java @@ -1,7 +1,5 @@ package org.capnproto; -public interface StructFactory extends FromStructBuilder, FromStructReader{ - +public interface StructFactory extends StructBuilder.Factory, StructReader.Factory{ public Reader asReader(Builder builder); - } diff --git a/runtime/src/main/java/org/capnproto/StructList.java b/runtime/src/main/java/org/capnproto/StructList.java index 99ed666..7a3adaa 100644 --- a/runtime/src/main/java/org/capnproto/StructList.java +++ b/runtime/src/main/java/org/capnproto/StructList.java @@ -54,9 +54,9 @@ public final class StructList { } public static final class Reader extends ListReader implements Iterable { - public final FromStructReader factory; + public final StructReader.Factory factory; - public Reader(FromStructReader factory, + public Reader(StructReader.Factory factory, SegmentReader segment, int ptr, int elementCount, int step, @@ -95,9 +95,9 @@ public final class StructList { } public static final class Builder extends ListBuilder implements Iterable { - public final FromStructBuilder factory; + public final StructBuilder.Factory factory; - public Builder(FromStructBuilder factory, + public Builder(StructBuilder.Factory factory, SegmentBuilder segment, int ptr, int elementCount, int step, int structDataSize, short structPointerCount){ diff --git a/runtime/src/main/java/org/capnproto/StructReader.java b/runtime/src/main/java/org/capnproto/StructReader.java index e7f2f1b..b5f02e3 100644 --- a/runtime/src/main/java/org/capnproto/StructReader.java +++ b/runtime/src/main/java/org/capnproto/StructReader.java @@ -2,6 +2,13 @@ package org.capnproto; public class StructReader { + + public interface Factory { + T constructReader(SegmentReader segment, int data, int pointers, + int dataSize, short pointerCount, + byte bit0Offset, int nestingLimit); + } + protected final SegmentReader segment; protected final int data; //byte offset to data section protected final int pointers; // word offset of pointer section diff --git a/runtime/src/main/java/org/capnproto/WireHelpers.java b/runtime/src/main/java/org/capnproto/WireHelpers.java index b015e61..b739c75 100644 --- a/runtime/src/main/java/org/capnproto/WireHelpers.java +++ b/runtime/src/main/java/org/capnproto/WireHelpers.java @@ -146,18 +146,18 @@ final class WireHelpers { } - static T initStructPointer(FromStructBuilder factory, + static T initStructPointer(StructBuilder.Factory factory, int refOffset, SegmentBuilder segment, StructSize size) { AllocateResult allocation = allocate(refOffset, segment, size.total(), WirePointer.STRUCT); StructPointer.setFromStructSize(allocation.segment.buffer, allocation.refOffset, size); - return factory.fromStructBuilder(allocation.segment, allocation.ptr * Constants.BYTES_PER_WORD, + return factory.constructBuilder(allocation.segment, allocation.ptr * Constants.BYTES_PER_WORD, allocation.ptr + size.data, size.data * 64, size.pointers, (byte)0); } - static T getWritableStructPointer(FromStructBuilder factory, + static T getWritableStructPointer(StructBuilder.Factory factory, int refOffset, SegmentBuilder segment, StructSize size, @@ -181,9 +181,9 @@ final class WireHelpers { if (oldDataSize < size.data || oldPointerCount < size.pointers) { throw new Error("unimplemented"); } else { - return factory.fromStructBuilder(resolved.segment, resolved.ptr * Constants.BYTES_PER_WORD, - oldPointerSectionOffset, oldDataSize * Constants.BITS_PER_WORD, - oldPointerCount, (byte)0); + return factory.constructBuilder(resolved.segment, resolved.ptr * Constants.BYTES_PER_WORD, + oldPointerSectionOffset, oldDataSize * Constants.BITS_PER_WORD, + oldPointerCount, (byte)0); } } @@ -435,7 +435,7 @@ final class WireHelpers { } - static T readStructPointer(FromStructReader factory, + static T readStructPointer(StructReader.Factory factory, SegmentReader segment, int refOffset, SegmentReader defaultSegment, @@ -444,7 +444,7 @@ final class WireHelpers { long ref = WirePointer.get(segment.buffer, refOffset); if (WirePointer.isNull(ref)) { if (defaultSegment == null) { - return factory.fromStructReader(SegmentReader.EMPTY, 0, 0, 0, (short) 0, (byte) 0, 0x7fffffff); + return factory.constructReader(SegmentReader.EMPTY, 0, 0, 0, (short) 0, (byte) 0, 0x7fffffff); } else { segment = defaultSegment; refOffset = defaultOffset; @@ -468,7 +468,7 @@ final class WireHelpers { // TODO "bounds_check" (read limiting) - return factory.fromStructReader(resolved.segment, + return factory.constructReader(resolved.segment, resolved.ptr * Constants.BYTES_PER_WORD, (resolved.ptr + dataSizeWords), dataSizeWords * Constants.BITS_PER_WORD, diff --git a/runtime/src/test/scala/org/capnproto/LayoutTest.scala b/runtime/src/test/scala/org/capnproto/LayoutTest.scala index 76d37fb..2fffe16 100644 --- a/runtime/src/test/scala/org/capnproto/LayoutTest.scala +++ b/runtime/src/test/scala/org/capnproto/LayoutTest.scala @@ -5,9 +5,9 @@ import org.scalatest.FunSuite class LayoutSuite extends FunSuite { - class BareStructReader extends FromStructReader[StructReader] { - def fromStructReader(segment: org.capnproto.SegmentReader, data: Int, pointers: Int, - dataSize: Int, pointerCount: Short, bit0Offset: Byte, nestingLimit:Int) : StructReader = { + class BareStructReader extends StructReader.Factory[StructReader] { + def constructReader(segment: org.capnproto.SegmentReader, data: Int, pointers: Int, + dataSize: Int, pointerCount: Short, bit0Offset: Byte, nestingLimit:Int) : StructReader = { return new StructReader(segment,data,pointers,dataSize,pointerCount,bit0Offset,nestingLimit); } } @@ -97,9 +97,9 @@ class LayoutSuite extends FunSuite { } - class BareStructBuilder(structSize : StructSize) extends FromStructBuilder[StructBuilder] { + class BareStructBuilder(structSize : StructSize) extends StructBuilder.Factory[StructBuilder] { - def fromStructBuilder(segment: org.capnproto.SegmentBuilder, data: Int, pointers: Int, + def constructBuilder(segment: org.capnproto.SegmentBuilder, data: Int, pointers: Int, dataSize: Int, pointerCount: Short, bit0Offset: Byte) : StructBuilder = { return new StructBuilder(segment,data,pointers,dataSize,pointerCount,bit0Offset); }