fix one bug, find another

This commit is contained in:
David Renshaw 2014-05-11 09:48:34 -04:00
parent 1f1a5bfd9a
commit fbb23f625e
5 changed files with 10 additions and 8 deletions

View file

@ -9,10 +9,11 @@ public class AddressbookMain {
System.out.println("printing addressbook ..."); System.out.println("printing addressbook ...");
capnp.MessageReader message = capnp.InputStreamMessageReader.create(System.in); capnp.MessageReader message = capnp.InputStreamMessageReader.create(System.in);
Addressbook.AddressBook.Reader addressbook = message.getRoot(Addressbook.AddressBook.Reader.factory); Addressbook.AddressBook.Reader addressbook = message.getRoot(Addressbook.AddressBook.Reader.factory);
capnp.StructList.Reader<Addressbook.Person> people = addressbook.getPeople(); capnp.StructList.Reader<Addressbook.Person.Reader> people = addressbook.getPeople();
int size = people.size(); int size = people.size();
for(int ii = 0; ii < size; ++ii) { for(int ii = 0; ii < size; ++ii) {
people.get(ii); Addressbook.Person.Reader person = people.get(ii);
System.out.println(person.getName().toString() + ": ");
} }
} }

View file

@ -46,6 +46,7 @@ public class InputStreamMessageReader {
throw new IOException("too many segments"); throw new IOException("too many segments");
} }
// in words
Vector<Integer> moreSizes = new Vector<Integer>(); Vector<Integer> moreSizes = new Vector<Integer>();
if (segmentCount > 1) { if (segmentCount > 1) {
@ -63,13 +64,13 @@ public class InputStreamMessageReader {
ByteBuffer[] segmentSlices = new ByteBuffer[segmentCount]; 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); segmentSlices[0].order(ByteOrder.LITTLE_ENDIAN);
int offset = segment0Size; int offset = segment0Size;
for (int ii = 1; ii < segmentCount; ++ii) { 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); segmentSlices[ii].order(ByteOrder.LITTLE_ENDIAN);
offset += moreSizes.get(ii - 1); offset += moreSizes.get(ii - 1);
} }

View file

@ -4,7 +4,7 @@ public class ListReader {
SegmentReader segment; SegmentReader segment;
int ptr; // byte offset to front of list int ptr; // byte offset to front of list
int elementCount; int elementCount;
int step; int step; // in bits
int structDataSize; // in bits int structDataSize; // in bits
short structPointerCount; short structPointerCount;
int nestingLimit; int nestingLimit;
@ -46,7 +46,7 @@ public class ListReader {
int structData = this.ptr + (indexBit / 8); int structData = this.ptr + (indexBit / 8);
int structPointers = structData + (this.structDataSize / 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); this.structPointerCount, (byte)(indexBit % 8), this.nestingLimit - 1);
} }
} }

View file

@ -70,7 +70,7 @@ class WireHelpers {
public static Text.Reader readTextPointer(SegmentReader segment, public static Text.Reader readTextPointer(SegmentReader segment,
WirePointer ref) { WirePointer ref) {
ref.target(); WordPointer ptr = ref.target();
ListPointer listPtr = new ListPointer(ref); ListPointer listPtr = new ListPointer(ref);
return new Text.Reader(listPtr); return new Text.Reader(listPtr);
} }

View file

@ -22,7 +22,7 @@ class WirePointer {
} }
public int offset_and_kind() { public int offset_and_kind() {
return this.buffer.getInt(buffer_offset * 8); return this.buffer.getInt(this.buffer_offset * 8);
} }
public byte kind() { public byte kind() {