init methods for generic fields
This commit is contained in:
parent
77242cd15d
commit
4870faf255
14 changed files with 40 additions and 97 deletions
|
@ -932,19 +932,20 @@ private:
|
||||||
spaces(indent), " }\n",
|
spaces(indent), " }\n",
|
||||||
|
|
||||||
spaces(indent), " public ", typeParam.flatten(), "_Builder get", titleCase, "() {\n",
|
spaces(indent), " public ", typeParam.flatten(), "_Builder get", titleCase, "() {\n",
|
||||||
unionDiscrim.check,
|
unionDiscrim.check,
|
||||||
spaces(indent), " return _getPointerField(", typeParam.flatten(), "_Factory, ", offset, ");\n",
|
spaces(indent), " return _getPointerField(", typeParam.flatten(), "_Factory, ", offset, ");\n",
|
||||||
spaces(indent), " }\n",
|
spaces(indent), " }\n",
|
||||||
|
|
||||||
spaces(indent), " public org.capnproto.AnyPointer.Builder init", titleCase, "() {\n",
|
spaces(indent), " public ", typeParam.flatten(), "_Builder init", titleCase, "() {\n",
|
||||||
unionDiscrim.set,
|
unionDiscrim.set,
|
||||||
spaces(indent), " org.capnproto.AnyPointer.Builder result =\n",
|
spaces(indent), " return _initPointerField(", typeParam.flatten(), "_Factory, ", offset, ", 0);\n",
|
||||||
spaces(indent), " new org.capnproto.AnyPointer.Builder(this.segment, this.pointers +",
|
spaces(indent), " }\n",
|
||||||
offset, ");\n",
|
|
||||||
spaces(indent), " result.clear();\n",
|
spaces(indent), " public ", typeParam.flatten(), "_Builder init", titleCase, "(int size) {\n",
|
||||||
spaces(indent), " return result;\n",
|
unionDiscrim.set,
|
||||||
spaces(indent), " }\n",
|
spaces(indent), " return _initPointerField(", typeParam.flatten(), "_Factory, ", offset, ", size);\n",
|
||||||
"\n"),
|
spaces(indent), " }\n",
|
||||||
|
"\n"),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
return FieldText {
|
return FieldText {
|
||||||
|
@ -1016,7 +1017,7 @@ private:
|
||||||
spaces(indent), " public final ", type, ".Builder init", titleCase, "() {\n",
|
spaces(indent), " public final ", type, ".Builder init", titleCase, "() {\n",
|
||||||
unionDiscrim.set,
|
unionDiscrim.set,
|
||||||
spaces(indent), " return ",
|
spaces(indent), " return ",
|
||||||
"_initPointerField(", type, ".factory,", offset, ");\n",
|
"_initPointerField(", type, ".factory,", offset, ", 0);\n",
|
||||||
spaces(indent), " }\n"),
|
spaces(indent), " }\n"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1065,7 +1066,7 @@ private:
|
||||||
spaces(indent), " }\n",
|
spaces(indent), " }\n",
|
||||||
|
|
||||||
spaces(indent), " public final ", type, ".Builder init", titleCase, "(int size) {\n",
|
spaces(indent), " public final ", type, ".Builder init", titleCase, "(int size) {\n",
|
||||||
spaces(indent), " return _initSizedPointerField(", factory, ", ", offset, ", size);\n",
|
spaces(indent), " return _initPointerField(", factory, ", ", offset, ", size);\n",
|
||||||
spaces(indent), " }\n"),
|
spaces(indent), " }\n"),
|
||||||
};
|
};
|
||||||
} else if (kind == FieldKind::LIST) {
|
} else if (kind == FieldKind::LIST) {
|
||||||
|
@ -1108,7 +1109,7 @@ private:
|
||||||
|
|
||||||
spaces(indent), " public final ", builderClass,
|
spaces(indent), " public final ", builderClass,
|
||||||
" init", titleCase, "(int size) {\n",
|
" init", titleCase, "(int size) {\n",
|
||||||
spaces(indent), " return _initSizedPointerField(", listFactory, ", ", offset, ", size);\n",
|
spaces(indent), " return _initPointerField(", listFactory, ", ", offset, ", size);\n",
|
||||||
spaces(indent), " }\n"),
|
spaces(indent), " }\n"),
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -29,6 +29,11 @@ public final class AnyPointer {
|
||||||
public final Builder fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
public final Builder fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||||
return new Builder(segment, pointer);
|
return new Builder(segment, pointer);
|
||||||
}
|
}
|
||||||
|
public final Builder initFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount) {
|
||||||
|
Builder result = new Builder(segment, pointer);
|
||||||
|
result.clear();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public final static class Reader {
|
public final static class Reader {
|
||||||
|
@ -68,12 +73,12 @@ public final class AnyPointer {
|
||||||
return factory.fromPointerBuilder(this.segment, this.pointer);
|
return factory.fromPointerBuilder(this.segment, this.pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final <T> T initAs(InitFromPointerBuilder<T> factory) {
|
public final <T> T initAs(FromPointerBuilder<T> factory) {
|
||||||
return factory.initFromPointerBuilder(this.segment, this.pointer);
|
return factory.initFromPointerBuilder(this.segment, this.pointer, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final <T> T initAs(InitSizedFromPointerBuilder<T> factory, int elementCount) {
|
public final <T> T initAs(FromPointerBuilder<T> factory, int elementCount) {
|
||||||
return factory.initSizedFromPointerBuilder(this.segment, this.pointer, elementCount);
|
return factory.initFromPointerBuilder(this.segment, this.pointer, elementCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void clear() {
|
public final void clear() {
|
||||||
|
|
|
@ -28,8 +28,7 @@ public final class Data {
|
||||||
FromPointerReader<Reader>,
|
FromPointerReader<Reader>,
|
||||||
FromPointerBuilderBlobDefault<Builder>,
|
FromPointerBuilderBlobDefault<Builder>,
|
||||||
FromPointerBuilder<Builder>,
|
FromPointerBuilder<Builder>,
|
||||||
SetPointerBuilder<Reader>,
|
SetPointerBuilder<Reader> {
|
||||||
InitSizedFromPointerBuilder<Builder> {
|
|
||||||
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
||||||
int defaultOffset, int defaultSize) {
|
int defaultOffset, int defaultSize) {
|
||||||
return WireHelpers.readDataPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
return WireHelpers.readDataPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
||||||
|
@ -51,7 +50,7 @@ public final class Data {
|
||||||
null, 0, 0);
|
null, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Builder initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int size) {
|
public final Builder initFromPointerBuilder(SegmentBuilder segment, int pointer, int size) {
|
||||||
return WireHelpers.initDataPointer(pointer, segment, size);
|
return WireHelpers.initDataPointer(pointer, segment, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,4 +23,5 @@ package org.capnproto;
|
||||||
|
|
||||||
public interface FromPointerBuilder<T> {
|
public interface FromPointerBuilder<T> {
|
||||||
T fromPointerBuilder(SegmentBuilder segment, int pointer);
|
T fromPointerBuilder(SegmentBuilder segment, int pointer);
|
||||||
|
T initFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
// Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
|
|
||||||
// Licensed under the MIT License:
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
|
||||||
// in the Software without restriction, including without limitation the rights
|
|
||||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
// copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
// THE SOFTWARE.
|
|
||||||
|
|
||||||
package org.capnproto;
|
|
||||||
|
|
||||||
public interface InitFromPointerBuilder<T> {
|
|
||||||
T initFromPointerBuilder(SegmentBuilder segment, int pointer);
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
// Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
|
|
||||||
// Licensed under the MIT License:
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
|
||||||
// in the Software without restriction, including without limitation the rights
|
|
||||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
// copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in
|
|
||||||
// all copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
// THE SOFTWARE.
|
|
||||||
|
|
||||||
package org.capnproto;
|
|
||||||
|
|
||||||
public interface InitSizedFromPointerBuilder<T> {
|
|
||||||
T initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount);
|
|
||||||
}
|
|
|
@ -131,14 +131,8 @@ public class ListBuilder {
|
||||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD);
|
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final <T> T _initPointerElement(InitFromPointerBuilder<T> factory, int index) {
|
protected final <T> T _initPointerElement(FromPointerBuilder<T> factory, int index, int elementCount) {
|
||||||
return factory.initFromPointerBuilder(
|
return factory.initFromPointerBuilder(
|
||||||
this.segment,
|
|
||||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected final <T> T _initSizedPointerElement(InitSizedFromPointerBuilder<T> factory, int index, int elementCount) {
|
|
||||||
return factory.initSizedFromPointerBuilder(
|
|
||||||
this.segment,
|
this.segment,
|
||||||
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD,
|
(this.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD,
|
||||||
elementCount);
|
elementCount);
|
||||||
|
|
|
@ -25,7 +25,6 @@ public abstract class ListFactory<Builder, Reader extends ListReader>
|
||||||
implements ListBuilder.Factory<Builder>,
|
implements ListBuilder.Factory<Builder>,
|
||||||
FromPointerBuilder<Builder>,
|
FromPointerBuilder<Builder>,
|
||||||
FromPointerBuilderRefDefault<Builder>,
|
FromPointerBuilderRefDefault<Builder>,
|
||||||
InitSizedFromPointerBuilder<Builder>,
|
|
||||||
SetPointerBuilder<Reader>,
|
SetPointerBuilder<Reader>,
|
||||||
ListReader.Factory<Reader>,
|
ListReader.Factory<Reader>,
|
||||||
FromPointerReader<Reader>,
|
FromPointerReader<Reader>,
|
||||||
|
@ -68,7 +67,7 @@ public abstract class ListFactory<Builder, Reader extends ListReader>
|
||||||
null, 0);
|
null, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount) {
|
public Builder initFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount) {
|
||||||
return WireHelpers.initListPointer(this, pointer, segment, elementCount, this.elementSize);
|
return WireHelpers.initListPointer(this, pointer, segment, elementCount, this.elementSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ public final class ListList {
|
||||||
}
|
}
|
||||||
|
|
||||||
public final T init(int index, int size) {
|
public final T init(int index, int size) {
|
||||||
return _initSizedPointerElement(this.factory, index, size);
|
return _initPointerElement(this.factory, index, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final T get(int index) {
|
public final T get(int index) {
|
||||||
|
|
|
@ -44,7 +44,7 @@ public final class MessageBuilder {
|
||||||
throw new Error("unimplemented");
|
throw new Error("unimplemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> T initRoot(InitFromPointerBuilder<T> factory) {
|
public <T> T initRoot(FromPointerBuilder<T> factory) {
|
||||||
SegmentBuilder rootSegment = this.arena.segments.get(0);
|
SegmentBuilder rootSegment = this.arena.segments.get(0);
|
||||||
int location = rootSegment.allocate(1);
|
int location = rootSegment.allocate(1);
|
||||||
if (location == SegmentBuilder.FAILED_ALLOCATION) {
|
if (location == SegmentBuilder.FAILED_ALLOCATION) {
|
||||||
|
|
|
@ -190,12 +190,8 @@ public class StructBuilder {
|
||||||
return factory.fromPointerBuilderBlobDefault(this.segment, this.pointers + index, defaultBuffer, defaultOffset, defaultSize);
|
return factory.fromPointerBuilderBlobDefault(this.segment, this.pointers + index, defaultBuffer, defaultOffset, defaultSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final <T> T _initPointerField(InitFromPointerBuilder<T> factory, int index) {
|
protected final <T> T _initPointerField(FromPointerBuilder<T> factory, int index, int elementCount) {
|
||||||
return factory.initFromPointerBuilder(this.segment, this.pointers + index);
|
return factory.initFromPointerBuilder(this.segment, this.pointers + index, elementCount);
|
||||||
}
|
|
||||||
|
|
||||||
protected final <T> T _initSizedPointerField(InitSizedFromPointerBuilder<T> factory, int index, int elementCount) {
|
|
||||||
return factory.initSizedFromPointerBuilder(this.segment, this.pointers + index, elementCount);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final <Reader> void _setPointerField(SetPointerBuilder<Reader> factory, int index, Reader value) {
|
protected final <Reader> void _setPointerField(SetPointerBuilder<Reader> factory, int index, Reader value) {
|
||||||
|
|
|
@ -25,7 +25,6 @@ public abstract class StructFactory<Builder, Reader extends StructReader>
|
||||||
implements FromPointerBuilder<Builder>,
|
implements FromPointerBuilder<Builder>,
|
||||||
FromPointerBuilderRefDefault<Builder>,
|
FromPointerBuilderRefDefault<Builder>,
|
||||||
StructBuilder.Factory<Builder>,
|
StructBuilder.Factory<Builder>,
|
||||||
InitFromPointerBuilder<Builder>,
|
|
||||||
SetPointerBuilder<Reader>,
|
SetPointerBuilder<Reader>,
|
||||||
FromPointerReader<Reader>,
|
FromPointerReader<Reader>,
|
||||||
FromPointerReaderRefDefault<Reader>,
|
FromPointerReaderRefDefault<Reader>,
|
||||||
|
@ -51,7 +50,7 @@ public abstract class StructFactory<Builder, Reader extends StructReader>
|
||||||
return WireHelpers.getWritableStructPointer(this, pointer, segment, this.structSize(),
|
return WireHelpers.getWritableStructPointer(this, pointer, segment, this.structSize(),
|
||||||
null, 0);
|
null, 0);
|
||||||
}
|
}
|
||||||
public final Builder initFromPointerBuilder(SegmentBuilder segment, int pointer) {
|
public final Builder initFromPointerBuilder(SegmentBuilder segment, int pointer, int elementCount) {
|
||||||
return WireHelpers.initStructPointer(this, pointer, segment, this.structSize());
|
return WireHelpers.initStructPointer(this, pointer, segment, this.structSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ public final class StructList {
|
||||||
defaultOffset);
|
defaultOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public final Builder<ElementBuilder> fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
public final Builder<ElementBuilder> fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||||
return WireHelpers.getWritableStructListPointer(this,
|
return WireHelpers.getWritableStructListPointer(this,
|
||||||
pointer,
|
pointer,
|
||||||
|
@ -66,8 +67,9 @@ public final class StructList {
|
||||||
null, 0);
|
null, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Builder<ElementBuilder> initSizedFromPointerBuilder(SegmentBuilder segment, int pointer,
|
@Override
|
||||||
int elementCount) {
|
public final Builder<ElementBuilder> initFromPointerBuilder(SegmentBuilder segment, int pointer,
|
||||||
|
int elementCount) {
|
||||||
return WireHelpers.initStructListPointer(this, pointer, segment, elementCount, factory.structSize());
|
return WireHelpers.initStructListPointer(this, pointer, segment, elementCount, factory.structSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,8 +29,7 @@ public final class Text {
|
||||||
FromPointerReader<Reader>,
|
FromPointerReader<Reader>,
|
||||||
FromPointerBuilderBlobDefault<Builder>,
|
FromPointerBuilderBlobDefault<Builder>,
|
||||||
FromPointerBuilder<Builder>,
|
FromPointerBuilder<Builder>,
|
||||||
SetPointerBuilder<Reader>,
|
SetPointerBuilder<Reader> {
|
||||||
InitSizedFromPointerBuilder<Builder> {
|
|
||||||
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
||||||
int defaultOffset, int defaultSize) {
|
int defaultOffset, int defaultSize) {
|
||||||
return WireHelpers.readTextPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
return WireHelpers.readTextPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
||||||
|
@ -55,7 +54,7 @@ public final class Text {
|
||||||
null, 0, 0);
|
null, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final Builder initSizedFromPointerBuilder(SegmentBuilder segment, int pointer, int size) {
|
public final Builder initFromPointerBuilder(SegmentBuilder segment, int pointer, int size) {
|
||||||
return WireHelpers.initTextPointer(pointer, segment, size);
|
return WireHelpers.initTextPointer(pointer, segment, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue