preallocate StructList factories. remove makeListListFactoryArg
This commit is contained in:
parent
6e9a325ca5
commit
7aead0ce75
1 changed files with 5 additions and 30 deletions
|
@ -668,43 +668,16 @@ 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, kj::str(".Builder")),", ",
|
|
||||||
typeName(elementType, kj::str(".Reader")), ">(",
|
|
||||||
typeName(elementType, kj::str("")), ".factory)");
|
|
||||||
case schema::Type::LIST:
|
|
||||||
return kj::str("new org.capnproto.ListList.Factory<",
|
|
||||||
typeName(elementType, kj::str(".Builder")),", ",
|
|
||||||
typeName(elementType, kj::str(".Reader")), ">(",
|
|
||||||
makeListListFactoryArg(elementType),
|
|
||||||
")");
|
|
||||||
case schema::Type::ENUM:
|
|
||||||
return kj::str("new org.capnproto.EnumList.Factory<",
|
|
||||||
typeName(elementType), ">(",
|
|
||||||
typeName(elementType, kj::str("")),
|
|
||||||
".values())");
|
|
||||||
default:
|
|
||||||
return kj::str(typeName(type, kj::str("")), ".factory");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
kj::String makeListFactoryArg(schema::Type::Reader type) {
|
kj::String makeListFactoryArg(schema::Type::Reader type) {
|
||||||
auto elementType = type.getList().getElementType();
|
auto elementType = type.getList().getElementType();
|
||||||
switch (elementType.which()) {
|
switch (elementType.which()) {
|
||||||
case schema::Type::STRUCT:
|
case schema::Type::STRUCT:
|
||||||
return kj::str("new org.capnproto.StructList.Factory<",
|
return kj::str(typeName(elementType, kj::str(".listFactory")));
|
||||||
typeName(elementType, kj::str(".Builder")),", ",
|
|
||||||
typeName(elementType, kj::str(".Reader")), ">(",
|
|
||||||
typeName(elementType, kj::str("")), ".factory)");
|
|
||||||
case schema::Type::LIST:
|
case schema::Type::LIST:
|
||||||
return kj::str("new org.capnproto.ListList.Factory<",
|
return kj::str("new org.capnproto.ListList.Factory<",
|
||||||
typeName(elementType, kj::str(".Builder")),", ",
|
typeName(elementType, kj::str(".Builder")),", ",
|
||||||
typeName(elementType, kj::str(".Reader")), ">(",
|
typeName(elementType, kj::str(".Reader")), ">(",
|
||||||
makeListListFactoryArg(elementType),
|
makeListFactoryArg(elementType),
|
||||||
")");
|
")");
|
||||||
case schema::Type::ENUM:
|
case schema::Type::ENUM:
|
||||||
return kj::str("new org.capnproto.EnumList.Factory<",
|
return kj::str("new org.capnproto.EnumList.Factory<",
|
||||||
|
@ -1184,7 +1157,7 @@ private:
|
||||||
",(short)", structNode.getPointerCount(),
|
",(short)", structNode.getPointerCount(),
|
||||||
", org.capnproto.FieldSize.", FIELD_SIZE_NAMES[(int)structNode.getPreferredListEncoding()], ");\n"),
|
", org.capnproto.FieldSize.", FIELD_SIZE_NAMES[(int)structNode.getPreferredListEncoding()], ");\n"),
|
||||||
|
|
||||||
spaces(indent), " public static class Factory extends org.capnproto.StructFactory<Builder, Reader> {\n",
|
spaces(indent), " public static final class Factory extends org.capnproto.StructFactory<Builder, Reader> {\n",
|
||||||
spaces(indent),
|
spaces(indent),
|
||||||
" public final Reader constructReader(org.capnproto.SegmentReader segment, int data,",
|
" public final Reader constructReader(org.capnproto.SegmentReader segment, int data,",
|
||||||
"int pointers, int dataSize, short pointerCount, byte bit0Offset, int nestingLimit) {\n",
|
"int pointers, int dataSize, short pointerCount, byte bit0Offset, int nestingLimit) {\n",
|
||||||
|
@ -1203,6 +1176,8 @@ private:
|
||||||
|
|
||||||
spaces(indent), " }\n",
|
spaces(indent), " }\n",
|
||||||
spaces(indent), " public static final Factory factory = new Factory();\n",
|
spaces(indent), " public static final Factory factory = new Factory();\n",
|
||||||
|
spaces(indent), " public static final org.capnproto.StructList.Factory<Builder,Reader> listFactory =\n",
|
||||||
|
spaces(indent), " new org.capnproto.StructList.Factory<Builder, Reader>(factory);\n",
|
||||||
|
|
||||||
|
|
||||||
kj::strTree(makeReaderDef(fullName, name, schema,
|
kj::strTree(makeReaderDef(fullName, name, schema,
|
||||||
|
|
Loading…
Reference in a new issue