From edc75358bb9251ba08a840ef99d63bc874d4087b Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Sun, 11 May 2014 20:00:57 -0400 Subject: [PATCH] add some builder classes --- Makefile | 6 +++++- src/capnp/ListBuilder.java | 24 ++++++++++++++++++++++++ src/capnp/PointerBuilder.java | 11 +++++++++++ src/capnp/SegmentBuilder.java | 9 +++++++++ src/capnp/StructBuilder.java | 31 +++++++++++++++++++++++++++++++ src/capnp/StructReader.java | 1 - 6 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/capnp/ListBuilder.java create mode 100644 src/capnp/PointerBuilder.java create mode 100644 src/capnp/SegmentBuilder.java create mode 100644 src/capnp/StructBuilder.java diff --git a/Makefile b/Makefile index c92e9b4..e71500f 100644 --- a/Makefile +++ b/Makefile @@ -6,12 +6,16 @@ CAPNP_SOURCES=\ src/capnp/FromStructReader.java\ src/capnp/InputStreamMessageReader.java\ src/capnp/ListPointer.java\ + src/capnp/ListBuilder.java\ src/capnp/ListReader.java\ src/capnp/MessageReader.java\ + src/capnp/PointerBuilder.java\ src/capnp/PointerReader.java\ + src/capnp/SegmentBuilder.java\ src/capnp/SegmentReader.java\ - src/capnp/StructReader.java\ + src/capnp/StructBuilder.java\ src/capnp/StructPointer.java\ + src/capnp/StructReader.java\ src/capnp/StructList.java\ src/capnp/Text.java\ src/capnp/WireHelpers.java\ diff --git a/src/capnp/ListBuilder.java b/src/capnp/ListBuilder.java new file mode 100644 index 0000000..cb5edbe --- /dev/null +++ b/src/capnp/ListBuilder.java @@ -0,0 +1,24 @@ +package org.capnproto; + +public final class ListBuilder { + SegmentBuilder segment; + int ptr; // byte offset to front of list + int elementCount; + int step; // in bits + int structDataSize; // in bits + short structPointerCount; + + public ListBuilder(SegmentBuilder segment, int ptr, + int elementCount, int step, + int structDataSize, short structPointerCount) { + this.segment = segment; + this.ptr = ptr; + this.elementCount = elementCount; + this.step = step; + this.structDataSize = structDataSize; + this.structPointerCount = structPointerCount; + } + + + +} diff --git a/src/capnp/PointerBuilder.java b/src/capnp/PointerBuilder.java new file mode 100644 index 0000000..9c7ec75 --- /dev/null +++ b/src/capnp/PointerBuilder.java @@ -0,0 +1,11 @@ +package org.capnproto; + +public final class PointerBuilder { + public SegmentBuilder segment; + public int pointer; // word offset + + public PointerBuilder(SegmentBuilder segment, int pointer) { + this.segment = segment; + this.pointer = pointer; + } +} diff --git a/src/capnp/SegmentBuilder.java b/src/capnp/SegmentBuilder.java new file mode 100644 index 0000000..f280bf0 --- /dev/null +++ b/src/capnp/SegmentBuilder.java @@ -0,0 +1,9 @@ +package org.capnproto; + +import java.nio.ByteBuffer; + +public class SegmentBuilder extends SegmentReader { + public SegmentBuilder(ByteBuffer buf) { + super(buf); + } +} diff --git a/src/capnp/StructBuilder.java b/src/capnp/StructBuilder.java new file mode 100644 index 0000000..60590dd --- /dev/null +++ b/src/capnp/StructBuilder.java @@ -0,0 +1,31 @@ +package org.capnproto; + +public final class StructBuilder { + public SegmentBuilder segment; + public int data; //byte offset to data section + public int pointers; // word offset of pointer section + public int dataSize; // in bits + public short pointerCount; + public byte bit0Offset; + + public StructBuilder(SegmentBuilder segment, int data, + int pointers, int dataSize, short pointerCount, + byte bit0Offset) { + this.segment = segment; + this.data = data; + this.pointers = pointers; + this.dataSize = dataSize; + this.pointerCount = pointerCount; + this.bit0Offset = bit0Offset; + } + + + public int getIntField(int offset) { + return this.segment.ptr.getInt(this.data + offset * 4); + } + + public void setIntField(int offset, int value) { + this.segment.ptr.putInt(this.data + offset * 4, value); + } + +} diff --git a/src/capnp/StructReader.java b/src/capnp/StructReader.java index bc0229b..812d1f1 100644 --- a/src/capnp/StructReader.java +++ b/src/capnp/StructReader.java @@ -3,7 +3,6 @@ package org.capnproto; public class StructReader { public SegmentReader segment; public int data; //byte offset to data section - public int pointers; // word offset of pointer section public int dataSize; // in bits public short pointerCount;