init methods for generic fields
This commit is contained in:
parent
77242cd15d
commit
4870faf255
14 changed files with 40 additions and 97 deletions
|
@ -936,13 +936,14 @@ private:
|
|||
spaces(indent), " return _getPointerField(", typeParam.flatten(), "_Factory, ", offset, ");\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,
|
||||
spaces(indent), " org.capnproto.AnyPointer.Builder result =\n",
|
||||
spaces(indent), " new org.capnproto.AnyPointer.Builder(this.segment, this.pointers +",
|
||||
offset, ");\n",
|
||||
spaces(indent), " result.clear();\n",
|
||||
spaces(indent), " return result;\n",
|
||||
spaces(indent), " return _initPointerField(", typeParam.flatten(), "_Factory, ", offset, ", 0);\n",
|
||||
spaces(indent), " }\n",
|
||||
|
||||
spaces(indent), " public ", typeParam.flatten(), "_Builder init", titleCase, "(int size) {\n",
|
||||
unionDiscrim.set,
|
||||
spaces(indent), " return _initPointerField(", typeParam.flatten(), "_Factory, ", offset, ", size);\n",
|
||||
spaces(indent), " }\n",
|
||||
"\n"),
|
||||
};
|
||||
|
@ -1016,7 +1017,7 @@ private:
|
|||
spaces(indent), " public final ", type, ".Builder init", titleCase, "() {\n",
|
||||
unionDiscrim.set,
|
||||
spaces(indent), " return ",
|
||||
"_initPointerField(", type, ".factory,", offset, ");\n",
|
||||
"_initPointerField(", type, ".factory,", offset, ", 0);\n",
|
||||
spaces(indent), " }\n"),
|
||||
};
|
||||
|
||||
|
@ -1065,7 +1066,7 @@ private:
|
|||
spaces(indent), " }\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"),
|
||||
};
|
||||
} else if (kind == FieldKind::LIST) {
|
||||
|
@ -1108,7 +1109,7 @@ private:
|
|||
|
||||
spaces(indent), " public final ", builderClass,
|
||||
" init", titleCase, "(int size) {\n",
|
||||
spaces(indent), " return _initSizedPointerField(", listFactory, ", ", offset, ", size);\n",
|
||||
spaces(indent), " return _initPointerField(", listFactory, ", ", offset, ", size);\n",
|
||||
spaces(indent), " }\n"),
|
||||
};
|
||||
} else {
|
||||
|
|
|
@ -29,6 +29,11 @@ public final class AnyPointer {
|
|||
public final Builder fromPointerBuilder(SegmentBuilder segment, int 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 {
|
||||
|
@ -68,12 +73,12 @@ public final class AnyPointer {
|
|||
return factory.fromPointerBuilder(this.segment, this.pointer);
|
||||
}
|
||||
|
||||
public final <T> T initAs(InitFromPointerBuilder<T> factory) {
|
||||
return factory.initFromPointerBuilder(this.segment, this.pointer);
|
||||
public final <T> T initAs(FromPointerBuilder<T> factory) {
|
||||
return factory.initFromPointerBuilder(this.segment, this.pointer, 0);
|
||||
}
|
||||
|
||||
public final <T> T initAs(InitSizedFromPointerBuilder<T> factory, int elementCount) {
|
||||
return factory.initSizedFromPointerBuilder(this.segment, this.pointer, elementCount);
|
||||
public final <T> T initAs(FromPointerBuilder<T> factory, int elementCount) {
|
||||
return factory.initFromPointerBuilder(this.segment, this.pointer, elementCount);
|
||||
}
|
||||
|
||||
public final void clear() {
|
||||
|
|
|
@ -28,8 +28,7 @@ public final class Data {
|
|||
FromPointerReader<Reader>,
|
||||
FromPointerBuilderBlobDefault<Builder>,
|
||||
FromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
InitSizedFromPointerBuilder<Builder> {
|
||||
SetPointerBuilder<Reader> {
|
||||
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
||||
int defaultOffset, int defaultSize) {
|
||||
return WireHelpers.readDataPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
||||
|
@ -51,7 +50,7 @@ public final class Data {
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,4 +23,5 @@ package org.capnproto;
|
|||
|
||||
public interface FromPointerBuilder<T> {
|
||||
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);
|
||||
}
|
||||
|
||||
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(
|
||||
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.ptr + (index * this.step / Constants.BITS_PER_BYTE)) / Constants.BYTES_PER_WORD,
|
||||
elementCount);
|
||||
|
|
|
@ -25,7 +25,6 @@ public abstract class ListFactory<Builder, Reader extends ListReader>
|
|||
implements ListBuilder.Factory<Builder>,
|
||||
FromPointerBuilder<Builder>,
|
||||
FromPointerBuilderRefDefault<Builder>,
|
||||
InitSizedFromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
ListReader.Factory<Reader>,
|
||||
FromPointerReader<Reader>,
|
||||
|
@ -68,7 +67,7 @@ public abstract class ListFactory<Builder, Reader extends ListReader>
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ public final class ListList {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
|
|
@ -44,7 +44,7 @@ public final class MessageBuilder {
|
|||
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);
|
||||
int location = rootSegment.allocate(1);
|
||||
if (location == SegmentBuilder.FAILED_ALLOCATION) {
|
||||
|
|
|
@ -190,12 +190,8 @@ public class StructBuilder {
|
|||
return factory.fromPointerBuilderBlobDefault(this.segment, this.pointers + index, defaultBuffer, defaultOffset, defaultSize);
|
||||
}
|
||||
|
||||
protected final <T> T _initPointerField(InitFromPointerBuilder<T> factory, int index) {
|
||||
return factory.initFromPointerBuilder(this.segment, this.pointers + index);
|
||||
}
|
||||
|
||||
protected final <T> T _initSizedPointerField(InitSizedFromPointerBuilder<T> factory, int index, int elementCount) {
|
||||
return factory.initSizedFromPointerBuilder(this.segment, this.pointers + index, elementCount);
|
||||
protected final <T> T _initPointerField(FromPointerBuilder<T> factory, int index, int elementCount) {
|
||||
return factory.initFromPointerBuilder(this.segment, this.pointers + index, elementCount);
|
||||
}
|
||||
|
||||
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>,
|
||||
FromPointerBuilderRefDefault<Builder>,
|
||||
StructBuilder.Factory<Builder>,
|
||||
InitFromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
FromPointerReader<Reader>,
|
||||
FromPointerReaderRefDefault<Reader>,
|
||||
|
@ -51,7 +50,7 @@ public abstract class StructFactory<Builder, Reader extends StructReader>
|
|||
return WireHelpers.getWritableStructPointer(this, pointer, segment, this.structSize(),
|
||||
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());
|
||||
}
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@ public final class StructList {
|
|||
defaultOffset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Builder<ElementBuilder> fromPointerBuilder(SegmentBuilder segment, int pointer) {
|
||||
return WireHelpers.getWritableStructListPointer(this,
|
||||
pointer,
|
||||
|
@ -66,7 +67,8 @@ public final class StructList {
|
|||
null, 0);
|
||||
}
|
||||
|
||||
public final Builder<ElementBuilder> initSizedFromPointerBuilder(SegmentBuilder segment, int pointer,
|
||||
@Override
|
||||
public final Builder<ElementBuilder> initFromPointerBuilder(SegmentBuilder segment, int pointer,
|
||||
int elementCount) {
|
||||
return WireHelpers.initStructListPointer(this, pointer, segment, elementCount, factory.structSize());
|
||||
}
|
||||
|
|
|
@ -29,8 +29,7 @@ public final class Text {
|
|||
FromPointerReader<Reader>,
|
||||
FromPointerBuilderBlobDefault<Builder>,
|
||||
FromPointerBuilder<Builder>,
|
||||
SetPointerBuilder<Reader>,
|
||||
InitSizedFromPointerBuilder<Builder> {
|
||||
SetPointerBuilder<Reader> {
|
||||
public final Reader fromPointerReaderBlobDefault(SegmentReader segment, int pointer, java.nio.ByteBuffer defaultBuffer,
|
||||
int defaultOffset, int defaultSize) {
|
||||
return WireHelpers.readTextPointer(segment, pointer, defaultBuffer, defaultOffset, defaultSize);
|
||||
|
@ -55,7 +54,7 @@ public final class Text {
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue