StructFactory
This commit is contained in:
parent
ec1142b8a1
commit
b55927b6ae
5 changed files with 30 additions and 28 deletions
|
@ -124,9 +124,9 @@ public class CarSales
|
|||
for (int i = 0; i < 50000; ++i) {
|
||||
MessageBuilder requestMessage = new MessageBuilder();
|
||||
MessageBuilder responseMessage = new MessageBuilder();
|
||||
ParkingLot.Builder request = requestMessage.initRoot(ParkingLot.Builder.factory);
|
||||
ParkingLot.Builder request = requestMessage.initRoot(ParkingLot.factory);
|
||||
long expected = testCase.setupRequest(rng, request);
|
||||
TotalValue.Builder response = responseMessage.initRoot(TotalValue.Builder.factory);
|
||||
TotalValue.Builder response = responseMessage.initRoot(TotalValue.factory);
|
||||
testCase.handleRequest(request.asReader(), response);
|
||||
if (!testCase.checkResponse(response.asReader(), expected)) {
|
||||
System.out.println("mismatch!");
|
||||
|
|
|
@ -919,7 +919,7 @@ private:
|
|||
spaces(indent), " public ", type, ".Reader",
|
||||
" get", titleCase, "() {\n",
|
||||
spaces(indent), " return ", type,
|
||||
".Reader.factory.fromStructReader(_reader.getPointerField(", offset,").getStruct());\n",
|
||||
".factory.fromStructReader(_reader.getPointerField(", offset,").getStruct());\n",
|
||||
spaces(indent), " }\n", "\n"),
|
||||
|
||||
kj::strTree(
|
||||
|
@ -929,7 +929,7 @@ private:
|
|||
spaces(indent), " }\n",
|
||||
spaces(indent), " public final ", type, ".Builder get", titleCase, "() {\n",
|
||||
spaces(indent), " return ", type,
|
||||
".Builder.factory.fromStructBuilder(_builder.getPointerField(", offset, ").getStruct(",
|
||||
".factory.fromStructBuilder(_builder.getPointerField(", offset, ").getStruct(",
|
||||
type, ".STRUCT_SIZE", "));\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public final void set", titleCase, "(", type, ".Reader value) {\n",
|
||||
|
@ -938,7 +938,7 @@ private:
|
|||
spaces(indent), " }\n",
|
||||
spaces(indent), " public final ", type, ".Builder init", titleCase, "() {\n",
|
||||
spaces(indent), " return ",
|
||||
type, ".Builder.factory.fromStructBuilder(_builder.getPointerField(", offset, ").initStruct(",
|
||||
type, ".factory.fromStructBuilder(_builder.getPointerField(", offset, ").initStruct(",
|
||||
type, ".STRUCT_SIZE", "));\n",
|
||||
spaces(indent), " }\n"),
|
||||
|
||||
|
@ -1065,8 +1065,8 @@ private:
|
|||
readerClass = kj::str("Reader<", elementReaderType, ">");
|
||||
elementBuilderType = kj::str(typeName(typeBody.getList().getElementType()), ".Builder");
|
||||
builderClass = kj::str("Builder<", elementBuilderType, ">");
|
||||
readerFactoryArg = kj::str(elementReaderType, ".factory,"),
|
||||
builderFactoryArg = kj::str(elementBuilderType, ".factory,"),
|
||||
readerFactoryArg = kj::str(typeName(typeBody.getList().getElementType()), ".factory, ");
|
||||
builderFactoryArg = kj::str(typeName(typeBody.getList().getElementType()), ".factory, ");
|
||||
fieldSize = kj::str(typeName(typeBody.getList().getElementType()),".STRUCT_SIZE.preferredListEncoding");
|
||||
break;
|
||||
}
|
||||
|
@ -1205,14 +1205,6 @@ private:
|
|||
int indent) {
|
||||
return kj::strTree(
|
||||
spaces(indent), "public static final class Reader {\n",
|
||||
spaces(indent),
|
||||
" public static class Factory implements org.capnproto.FromStructReader<Reader> {\n",
|
||||
spaces(indent),
|
||||
" public final Reader fromStructReader(org.capnproto.StructReader reader) {\n",
|
||||
spaces(indent), " return new Reader(reader);\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public static final Factory factory = new Factory();\n",
|
||||
spaces(indent), " public Reader(org.capnproto.StructReader base){ this._reader = base; }\n",
|
||||
"\n",
|
||||
(isUnion ?
|
||||
|
@ -1234,15 +1226,6 @@ private:
|
|||
bool isUnion = structNode.getDiscriminantCount() != 0;
|
||||
return kj::strTree(
|
||||
spaces(indent), "public static final class Builder {\n",
|
||||
spaces(indent), " public static class Factory implements org.capnproto.FromStructBuilder<Builder> {\n",
|
||||
spaces(indent), " public final Builder fromStructBuilder(org.capnproto.StructBuilder builder) {\n",
|
||||
spaces(indent), " return new Builder(builder);\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public final org.capnproto.StructSize structSize() {\n",
|
||||
spaces(indent), " return ", fullName, ".STRUCT_SIZE;\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public static final Factory factory = new Factory();\n",
|
||||
spaces(indent), " public Builder(org.capnproto.StructBuilder base){ this._builder = base; }\n",
|
||||
spaces(indent), " public org.capnproto.StructBuilder _builder;\n",
|
||||
(isUnion ?
|
||||
|
@ -1281,6 +1264,21 @@ private:
|
|||
",(short)", structNode.getPointerCount(),
|
||||
", org.capnproto.FieldSize.", FIELD_SIZE_NAMES[(int)structNode.getPreferredListEncoding()], ");\n"),
|
||||
|
||||
spaces(indent), " public static class Factory implements org.capnproto.StructFactory<Builder, Reader> {\n",
|
||||
spaces(indent),
|
||||
" public final Reader fromStructReader(org.capnproto.StructReader reader) {\n",
|
||||
spaces(indent), " return new Reader(reader);\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public final Builder fromStructBuilder(org.capnproto.StructBuilder builder) {\n",
|
||||
spaces(indent), " return new Builder(builder);\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public final org.capnproto.StructSize structSize() {\n",
|
||||
spaces(indent), " return ", fullName, ".STRUCT_SIZE;\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " }\n",
|
||||
spaces(indent), " public static final Factory factory = new Factory();\n",
|
||||
|
||||
|
||||
kj::strTree(makeReaderDef(fullName, name, structNode.getDiscriminantCount() != 0,
|
||||
structNode.getDiscriminantOffset(),
|
||||
KJ_MAP(f, fieldTexts) { return kj::mv(f.readerMethodDecls); },
|
||||
|
|
|
@ -9,7 +9,7 @@ class EncodingSuite extends FunSuite {
|
|||
|
||||
test("AllTypes") {
|
||||
val message = new MessageBuilder();
|
||||
val allTypes = message.initRoot(TestAllTypes.Builder.factory);
|
||||
val allTypes = message.initRoot(TestAllTypes.factory);
|
||||
TestUtil.initTestMessage(allTypes);
|
||||
TestUtil.checkTestMessage(allTypes);
|
||||
TestUtil.checkTestMessage(allTypes.asReader());
|
||||
|
@ -17,7 +17,7 @@ class EncodingSuite extends FunSuite {
|
|||
|
||||
test("AllTypesMultiSegment") {
|
||||
val message = new MessageBuilder(5, BuilderArena.AllocationStrategy.FIXED_SIZE);
|
||||
val allTypes = message.initRoot(TestAllTypes.Builder.factory);
|
||||
val allTypes = message.initRoot(TestAllTypes.factory);
|
||||
TestUtil.initTestMessage(allTypes);
|
||||
|
||||
TestUtil.checkTestMessage(allTypes);
|
||||
|
|
|
@ -16,7 +16,7 @@ public class AddressbookMain {
|
|||
|
||||
public static void writeAddressBook() throws java.io.IOException {
|
||||
MessageBuilder message = new MessageBuilder();
|
||||
AddressBook.Builder addressbook = message.initRoot(AddressBook.Builder.factory);
|
||||
AddressBook.Builder addressbook = message.initRoot(AddressBook.factory);
|
||||
StructList.Builder<Person.Builder> people = addressbook.initPeople(2);
|
||||
|
||||
Person.Builder alice = people.get(0);
|
||||
|
@ -48,7 +48,7 @@ public class AddressbookMain {
|
|||
|
||||
public static void printAddressBook() throws java.io.IOException {
|
||||
MessageReader message = InputStreamMessageReader.create(System.in);
|
||||
AddressBook.Reader addressbook = message.getRoot(AddressBook.Reader.factory);
|
||||
AddressBook.Reader addressbook = message.getRoot(AddressBook.factory);
|
||||
StructList.Reader<Person.Reader> people = addressbook.getPeople();
|
||||
int size = people.size();
|
||||
for(int ii = 0; ii < size; ++ii) {
|
||||
|
|
4
runtime/src/main/java/org/capnproto/StructFactory.java
Normal file
4
runtime/src/main/java/org/capnproto/StructFactory.java
Normal file
|
@ -0,0 +1,4 @@
|
|||
package org.capnproto;
|
||||
|
||||
public interface StructFactory<Builder, Reader> extends FromStructBuilder<Builder>, FromStructReader<Reader>{
|
||||
}
|
Loading…
Reference in a new issue