makeListListFactoryArg
This commit is contained in:
parent
da13c77541
commit
fcad26acb6
2 changed files with 23 additions and 8 deletions
|
@ -659,6 +659,25 @@ private:
|
|||
);
|
||||
}
|
||||
|
||||
kj::String makeListListFactoryArg(schema::Type::Reader type) {
|
||||
auto elementType = type.getList().getElementType();
|
||||
switch (elementType.which()) {
|
||||
case schema::Type::STRUCT:
|
||||
return kj::str("new org.capnproto.StructList.Factory(",
|
||||
typeName(elementType), ".factory), ");
|
||||
case schema::Type::LIST:
|
||||
return kj::str("new org.capnproto.ListList.Factory(",
|
||||
makeListListFactoryArg(elementType),
|
||||
"), ");
|
||||
case schema::Type::ENUM:
|
||||
return kj::str("new org.capnproto.EnumList.Factory(",
|
||||
typeName(elementType),
|
||||
".values()), ");
|
||||
default:
|
||||
return kj::str(typeName(type), ".factory, ");
|
||||
}
|
||||
}
|
||||
|
||||
FieldText makeFieldText(kj::StringPtr scope, StructSchema::Field field, int indent) {
|
||||
auto proto = field.getProto();
|
||||
kj::String titleCase = toTitleCase(proto.getName());
|
||||
|
@ -1070,8 +1089,8 @@ private:
|
|||
readerClass = kj::str("Reader<", elementReaderType, ">");
|
||||
elementBuilderType = kj::str(typeName(typeBody.getList().getElementType()), ".Builder");
|
||||
builderClass = kj::str("Builder<", elementBuilderType, ">");
|
||||
readerFactoryArg = kj::str(typeName(typeBody.getList().getElementType()), ".factory, ");
|
||||
builderFactoryArg = kj::str(typeName(typeBody.getList().getElementType()), ".factory, ");
|
||||
readerFactoryArg = makeListListFactoryArg(typeBody.getList().getElementType());
|
||||
builderFactoryArg = kj::str(readerFactoryArg);
|
||||
break;
|
||||
case schema::Type::ANY_POINTER:
|
||||
primitiveElement = false;
|
||||
|
@ -1096,10 +1115,6 @@ private:
|
|||
fieldSize = kj::str(typeName(typeBody.getList().getElementType()),".STRUCT_SIZE.preferredListEncoding");
|
||||
break;
|
||||
}
|
||||
if (primitiveElement) {
|
||||
elementReaderType = kj::str(typeName(typeBody.getList().getElementType()));
|
||||
elementBuilderType = kj::str(typeName(typeBody.getList().getElementType()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -223,8 +223,8 @@ struct TestLists {
|
|||
listP @6 :List(StructP);
|
||||
|
||||
int32ListList @7 :List(List(Int32));
|
||||
#textListList @8 :List(List(Text));
|
||||
#structListList @9 :List(List(TestAllTypes));
|
||||
textListList @8 :List(List(Text));
|
||||
structListList @9 :List(List(TestAllTypes));
|
||||
#boolListListList @10 :List(List(List(Bool)));
|
||||
#enumListList @11 :List(List(TestEnum));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue