diff --git a/src/capnp/PointerBuilder.java b/src/capnp/PointerBuilder.java index f461ed9..24faeed 100644 --- a/src/capnp/PointerBuilder.java +++ b/src/capnp/PointerBuilder.java @@ -13,5 +13,8 @@ public final class PointerBuilder { return WireHelpers.initStructListPointer(this.pointer, this.segment, elementCount, elementSize); } + public final void setText(Text.Reader value) { + WireHelpers.setTextPointer(this.pointer, this.segment, value); + } } diff --git a/src/capnp/SegmentBuilder.java b/src/capnp/SegmentBuilder.java index f280bf0..db4c7e4 100644 --- a/src/capnp/SegmentBuilder.java +++ b/src/capnp/SegmentBuilder.java @@ -3,7 +3,18 @@ package org.capnproto; import java.nio.ByteBuffer; public class SegmentBuilder extends SegmentReader { + public int pos = 0; + public SegmentBuilder(ByteBuffer buf) { super(buf); } + + private final int currentSize() { + throw new Error("unimplemented"); + } + + public final int allocate(int amount) { + throw new Error("unimplemented"); + // if (amount > ... this.currentSize() + } } diff --git a/src/capnp/StructBuilder.java b/src/capnp/StructBuilder.java index d6d8007..3ff05c0 100644 --- a/src/capnp/StructBuilder.java +++ b/src/capnp/StructBuilder.java @@ -35,4 +35,8 @@ public final class StructBuilder { this.segment.buffer.putInt(this.data + offset * 4, value); } + public final PointerBuilder getPointerField(int index) { + return new PointerBuilder(this.segment, this.pointers + index); + } + } diff --git a/src/capnp/Text.java b/src/capnp/Text.java index f577d87..5bad020 100644 --- a/src/capnp/Text.java +++ b/src/capnp/Text.java @@ -15,7 +15,19 @@ public class Text { this.size = size; } - public String toString() { + public Reader(String value) { + try { + byte[] bytes = value.getBytes("UTF-8"); + this.buffer = ByteBuffer.wrap(bytes); + this.offset = 0; + this.size = bytes.length; + } catch (java.io.UnsupportedEncodingException e) { + throw new Error("UTF-8 is unsupported"); + } + } + + @Override + public final String toString() { byte[] bytes = new byte[this.size]; this.buffer.position(this.offset); @@ -27,6 +39,7 @@ public class Text { return "unsupported encoding"; // XXX } } + } } diff --git a/src/capnp/WireHelpers.java b/src/capnp/WireHelpers.java index c4c4fb1..02f85e2 100644 --- a/src/capnp/WireHelpers.java +++ b/src/capnp/WireHelpers.java @@ -2,6 +2,13 @@ package org.capnproto; final class WireHelpers { + public static int allocate(int ref, + SegmentBuilder segment, + int amount, + byte kind) { + throw new Error("unimplemented"); + } + public static ListBuilder initListPointer(int refOffset, SegmentBuilder segment, int elementCount, @@ -24,6 +31,18 @@ final class WireHelpers { throw new Error("unimplemented"); } + public static void initTextPointer(int refOffset, + SegmentBuilder segment, + int size) { + throw new Error("unimplemented"); + } + + public static void setTextPointer(int refOffset, + SegmentBuilder segment, + Text.Reader value) { + throw new Error("unimplemented"); + } + public static StructReader readStructPointer(SegmentReader segment, int refOffset, int nestingLimit) {