fix one bug, find another
This commit is contained in:
parent
1f1a5bfd9a
commit
fbb23f625e
5 changed files with 10 additions and 8 deletions
|
@ -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() + ": ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
Loading…
Reference in a new issue