Merge pull request #91 from vaci/copy-any-pointer
set AnyPointer from AnyPointer
This commit is contained in:
commit
449bf8b2b2
2 changed files with 26 additions and 3 deletions
|
@ -844,6 +844,17 @@ public class EncodingTest {
|
|||
Assert.assertEquals(listReader.get(0).getInt8Field(), 11);
|
||||
TestUtil.checkTestMessage(listReader.get(1));
|
||||
}
|
||||
|
||||
@org.junit.Test
|
||||
public void testCopyAnyPointer() {
|
||||
MessageBuilder message1 = new MessageBuilder();
|
||||
Test.TestAllTypes.Builder root1 = message1.initRoot(Test.TestAllTypes.factory);
|
||||
TestUtil.initTestMessage(root1);
|
||||
|
||||
MessageBuilder message2 = new MessageBuilder();
|
||||
AnyPointer.Builder root2 = message2.initRoot(AnyPointer.factory);
|
||||
root2.setAs(AnyPointer.factory, message1.getRoot(AnyPointer.factory).asReader());
|
||||
|
||||
TestUtil.checkTestMessage(root2.getAs(Test.TestAllTypes.factory));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,10 @@
|
|||
package org.capnproto;
|
||||
|
||||
public final class AnyPointer {
|
||||
public static final class Factory implements PointerFactory<Builder, Reader> {
|
||||
public static final class Factory
|
||||
implements PointerFactory<Builder, Reader>,
|
||||
SetPointerBuilder<Builder, Reader>
|
||||
{
|
||||
public final Reader fromPointerReader(SegmentReader segment, int pointer, int nestingLimit) {
|
||||
return new Reader(segment, pointer, nestingLimit);
|
||||
}
|
||||
|
@ -34,6 +37,15 @@ public final class AnyPointer {
|
|||
result.clear();
|
||||
return result;
|
||||
}
|
||||
public void setPointerBuilder(SegmentBuilder segment, int pointer, Reader value) {
|
||||
if (value.isNull()) {
|
||||
WireHelpers.zeroObject(segment, pointer);
|
||||
WireHelpers.zeroPointerAndFars(segment, pointer);
|
||||
}
|
||||
else {
|
||||
WireHelpers.copyPointer(segment, pointer, value.segment, value.pointer, value.nestingLimit);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static final Factory factory = new Factory();
|
||||
|
||||
|
|
Loading…
Reference in a new issue