From 31f6d30169f506f11d9657439c0ffc86d2866a14 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Sat, 10 May 2014 12:02:38 -0400 Subject: [PATCH] LOL it's factory time --- Makefile | 1 + src/capnp/ListReader.java | 28 ++++++++++++++++++++++++++++ src/capnp/StructFactory.java | 5 +++++ src/capnp/StructList.java | 16 ++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 src/capnp/StructFactory.java diff --git a/Makefile b/Makefile index 95f0094..dd31171 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ CAPNP_SOURCES=\ src/capnp/ListReader.java\ src/capnp/PointerReader.java\ src/capnp/SegmentReader.java\ + src/capnp/StructFactory.java\ src/capnp/StructReader.java\ src/capnp/StructList.java\ src/capnp/Text.java\ diff --git a/src/capnp/ListReader.java b/src/capnp/ListReader.java index 73fe4b4..c5fd58f 100644 --- a/src/capnp/ListReader.java +++ b/src/capnp/ListReader.java @@ -10,6 +10,34 @@ public class ListReader { int nestingLimit; + public ListReader () { + this.segment = null; + this.ptr = 0; + this.elementCount = 0; + this.step = 0; + this.structDataSize = 0; + this.structPointerCount = 0; + this.nestingLimit = 0x7fffffff; + } + + public ListReader(SegmentReader segment, int ptr, + int elementCount, int step, + int structDataSize, short structPointerCount, + int nestingLimit) { + this.segment = segment; + this.ptr = ptr; + this.elementCount = elementCount; + this.step = step; + this.structDataSize = structDataSize; + this.structPointerCount = structPointerCount; + this.nestingLimit = nestingLimit; + + } + + public int size() { + return this.elementCount; + } + public StructReader getStructElement(int index) { // TODO check nesting limit diff --git a/src/capnp/StructFactory.java b/src/capnp/StructFactory.java new file mode 100644 index 0000000..15c041b --- /dev/null +++ b/src/capnp/StructFactory.java @@ -0,0 +1,5 @@ +package capnp; + +public interface StructFactory { + public abstract T createFromStructReader(StructReader reader); +} diff --git a/src/capnp/StructList.java b/src/capnp/StructList.java index 56de86e..047b1b3 100644 --- a/src/capnp/StructList.java +++ b/src/capnp/StructList.java @@ -4,5 +4,21 @@ package capnp; public class StructList { public static class Reader { public ListReader reader; + public StructFactory factory; + + public Reader(ListReader reader, StructFactory factory) { + this.reader = reader; + this.factory = factory; + } + + public int size() { + return this.reader.size(); + } + + public T get(int index) { + StructReader sr = this.reader.getStructElement(index); + return this.factory.createFromStructReader(sr); + } } + }