From 1d69d9a7abbdb4951005a4b94ceae777c98aca24 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Wed, 15 Oct 2014 21:43:57 -0400 Subject: [PATCH] a bit more --- .../main/java/org/capnproto/WireHelpers.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/runtime/src/main/java/org/capnproto/WireHelpers.java b/runtime/src/main/java/org/capnproto/WireHelpers.java index a26d614..9b6ab65 100644 --- a/runtime/src/main/java/org/capnproto/WireHelpers.java +++ b/runtime/src/main/java/org/capnproto/WireHelpers.java @@ -517,10 +517,25 @@ final class WireHelpers { //# List of pointers. ListPointer.set(allocation.segment.buffer, allocation.refOffset, ElementSize.POINTER, value.elementCount); for (int i = 0; i < value.elementCount; ++i) { - //copyPointer(segment); + copyPointer(allocation.segment, allocation.ptr + i, + value.segment, value.ptr + i, value.nestingLimit); } } else { //# List of data. + byte elementSize = ElementSize.VOID; + switch (value.step) { + case 0: elementSize = ElementSize.VOID; break; + case 1: elementSize = ElementSize.BIT; break; + case 8: elementSize = ElementSize.BYTE; break; + case 16: elementSize = ElementSize.TWO_BYTES; break; + case 32: elementSize = ElementSize.FOUR_BYTES; break; + case 64: elementSize = ElementSize.EIGHT_BYTES; break; + default: + throw new Error("invalid list step size: " + value.step); + } + + ListPointer.set(allocation.segment.buffer, allocation.refOffset, elementSize, value.elementCount); + // memcpy } } else { //# List of structs.