From fbb23f625eb69876b196c1ddd6a87a608de71405 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Sun, 11 May 2014 09:48:34 -0400 Subject: [PATCH] fix one bug, find another --- examples/AddressbookMain.java | 5 +++-- src/capnp/InputStreamMessageReader.java | 5 +++-- src/capnp/ListReader.java | 4 ++-- src/capnp/WireHelpers.java | 2 +- src/capnp/WirePointer.java | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/AddressbookMain.java b/examples/AddressbookMain.java index f4c735b..5fb9c3b 100644 --- a/examples/AddressbookMain.java +++ b/examples/AddressbookMain.java @@ -9,10 +9,11 @@ public class AddressbookMain { System.out.println("printing addressbook ..."); capnp.MessageReader message = capnp.InputStreamMessageReader.create(System.in); Addressbook.AddressBook.Reader addressbook = message.getRoot(Addressbook.AddressBook.Reader.factory); - capnp.StructList.Reader people = addressbook.getPeople(); + capnp.StructList.Reader people = addressbook.getPeople(); int size = people.size(); for(int ii = 0; ii < size; ++ii) { - people.get(ii); + Addressbook.Person.Reader person = people.get(ii); + System.out.println(person.getName().toString() + ": "); } } diff --git a/src/capnp/InputStreamMessageReader.java b/src/capnp/InputStreamMessageReader.java index 56efbe9..489a1f5 100644 --- a/src/capnp/InputStreamMessageReader.java +++ b/src/capnp/InputStreamMessageReader.java @@ -46,6 +46,7 @@ public class InputStreamMessageReader { throw new IOException("too many segments"); } + // in words Vector moreSizes = new Vector(); if (segmentCount > 1) { @@ -63,13 +64,13 @@ public class InputStreamMessageReader { ByteBuffer[] segmentSlices = new ByteBuffer[segmentCount]; - segmentSlices[0] = ByteBuffer.wrap(allSegments, 0, segment0Size); + segmentSlices[0] = ByteBuffer.wrap(allSegments, 0, segment0Size * 8); segmentSlices[0].order(ByteOrder.LITTLE_ENDIAN); int offset = segment0Size; for (int ii = 1; ii < segmentCount; ++ii) { - segmentSlices[ii] = ByteBuffer.wrap(allSegments, offset, moreSizes.get(ii - 1)); + segmentSlices[ii] = ByteBuffer.wrap(allSegments, offset * 8, moreSizes.get(ii - 1) * 8); segmentSlices[ii].order(ByteOrder.LITTLE_ENDIAN); offset += moreSizes.get(ii - 1); } diff --git a/src/capnp/ListReader.java b/src/capnp/ListReader.java index c5fd58f..7c26b90 100644 --- a/src/capnp/ListReader.java +++ b/src/capnp/ListReader.java @@ -4,7 +4,7 @@ public class ListReader { SegmentReader segment; int ptr; // byte offset to front of list int elementCount; - int step; + int step; // in bits int structDataSize; // in bits short structPointerCount; int nestingLimit; @@ -46,7 +46,7 @@ public class ListReader { int structData = this.ptr + (indexBit / 8); int structPointers = structData + (this.structDataSize / 8); - return new StructReader(this.segment, structData, structPointers, this.structDataSize, + return new StructReader(this.segment, structData, structPointers / 8, this.structDataSize, this.structPointerCount, (byte)(indexBit % 8), this.nestingLimit - 1); } } diff --git a/src/capnp/WireHelpers.java b/src/capnp/WireHelpers.java index 403fd2c..e9244fb 100644 --- a/src/capnp/WireHelpers.java +++ b/src/capnp/WireHelpers.java @@ -70,7 +70,7 @@ class WireHelpers { public static Text.Reader readTextPointer(SegmentReader segment, WirePointer ref) { - ref.target(); + WordPointer ptr = ref.target(); ListPointer listPtr = new ListPointer(ref); return new Text.Reader(listPtr); } diff --git a/src/capnp/WirePointer.java b/src/capnp/WirePointer.java index 1a92b1b..8f00400 100644 --- a/src/capnp/WirePointer.java +++ b/src/capnp/WirePointer.java @@ -22,7 +22,7 @@ class WirePointer { } public int offset_and_kind() { - return this.buffer.getInt(buffer_offset * 8); + return this.buffer.getInt(this.buffer_offset * 8); } public byte kind() {