From 91a93734e13b26563526ded799a543c506109139 Mon Sep 17 00:00:00 2001 From: Vaci Koblizek Date: Tue, 10 Nov 2020 11:34:26 +0000 Subject: [PATCH] generalise AnyPointer setAs AnyPointer --- .../test/java/org/capnproto/EncodingTest.java | 4 +-- .../main/java/org/capnproto/AnyPointer.java | 26 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/compiler/src/test/java/org/capnproto/EncodingTest.java b/compiler/src/test/java/org/capnproto/EncodingTest.java index c0f2d64..1f10853 100644 --- a/compiler/src/test/java/org/capnproto/EncodingTest.java +++ b/compiler/src/test/java/org/capnproto/EncodingTest.java @@ -853,10 +853,8 @@ public class EncodingTest { MessageBuilder message2 = new MessageBuilder(); AnyPointer.Builder root2 = message2.initRoot(AnyPointer.factory); - root2.set(message1.getRoot(AnyPointer.factory).asReader()); + root2.setAs(AnyPointer.factory, message1.getRoot(AnyPointer.factory).asReader()); TestUtil.checkTestMessage(root2.getAs(Test.TestAllTypes.factory)); } } - - diff --git a/runtime/src/main/java/org/capnproto/AnyPointer.java b/runtime/src/main/java/org/capnproto/AnyPointer.java index fe8ee04..12c0e6c 100644 --- a/runtime/src/main/java/org/capnproto/AnyPointer.java +++ b/runtime/src/main/java/org/capnproto/AnyPointer.java @@ -22,7 +22,10 @@ package org.capnproto; public final class AnyPointer { - public static final class Factory implements PointerFactory { + public static final class Factory + implements PointerFactory, + SetPointerBuilder + { 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(); @@ -86,18 +98,6 @@ public final class AnyPointer { factory.setPointerBuilder(this.segment, this.pointer, reader); } - public void set(AnyPointer.Reader reader) { - if (reader.isNull()) { - WireHelpers.zeroObject(this.segment, this.pointer); - WireHelpers.zeroPointerAndFars(this.segment, this.pointer); - } - else { - WireHelpers.copyPointer( - this.segment, this.pointer, - reader.segment, reader.pointer, reader.nestingLimit); - } - } - public final Reader asReader() { return new Reader(segment, pointer, java.lang.Integer.MAX_VALUE); }