This commit is contained in:
David Renshaw 2014-05-10 17:56:28 -04:00
parent c3ac2bb786
commit 1d36fffae0

View file

@ -529,7 +529,8 @@ private:
DiscriminantChecks makeDiscriminantChecks(kj::StringPtr scope, DiscriminantChecks makeDiscriminantChecks(kj::StringPtr scope,
kj::StringPtr memberName, kj::StringPtr memberName,
StructSchema containingStruct) { StructSchema containingStruct,
int indent) {
auto discrimOffset = containingStruct.getProto().getStruct().getDiscriminantOffset(); auto discrimOffset = containingStruct.getProto().getStruct().getDiscriminantOffset();
kj::String titleCase = toTitleCase(memberName); kj::String titleCase = toTitleCase(memberName);
@ -545,8 +546,8 @@ private:
" _builder.setDataField<", scope, "Which>(\n" " _builder.setDataField<", scope, "Which>(\n"
" ", discrimOffset, " * ::capnp::ELEMENTS, ", " ", discrimOffset, " * ::capnp::ELEMENTS, ",
scope, upperCase, ");\n"), scope, upperCase, ");\n"),
kj::strTree(" inline bool is", titleCase, "() const;\n"), kj::strTree(spaces(indent), " public bool is", titleCase, "();\n"),
kj::strTree(" inline bool is", titleCase, "();\n"), kj::strTree(spaces(indent), " public bool is", titleCase, "();\n"),
kj::strTree( kj::strTree(
"inline bool ", scope, "Reader::is", titleCase, "() const {\n" "inline bool ", scope, "Reader::is", titleCase, "() const {\n"
" return which() == ", scope, upperCase, ";\n" " return which() == ", scope, upperCase, ";\n"
@ -581,7 +582,7 @@ private:
DiscriminantChecks unionDiscrim; DiscriminantChecks unionDiscrim;
if (hasDiscriminantValue(proto)) { if (hasDiscriminantValue(proto)) {
unionDiscrim = makeDiscriminantChecks(scope, proto.getName(), field.getContainingStruct()); unionDiscrim = makeDiscriminantChecks(scope, proto.getName(), field.getContainingStruct(), indent);
} }
switch (proto.which()) { switch (proto.which()) {
@ -1044,7 +1045,7 @@ private:
" struct ", name, ";\n"), " struct ", name, ";\n"),
kj::strTree( kj::strTree(
"public static class ", fullName, " {\n", spaces(indent), "public static class ", fullName, " {\n",
kj::strTree(makeReaderDef(fullName, name, structNode.getDiscriminantCount() != 0, kj::strTree(makeReaderDef(fullName, name, structNode.getDiscriminantCount() != 0,
KJ_MAP(f, fieldTexts) { return kj::mv(f.readerMethodDecls); }, KJ_MAP(f, fieldTexts) { return kj::mv(f.readerMethodDecls); },
indent + 1)), indent + 1)),
@ -1058,8 +1059,8 @@ private:
} }
}, },
" };\n"), " };\n"),
KJ_MAP(n, nestedTypeDecls) { return kj::mv(n); }, KJ_MAP(n, nestedTypeDecls) { return kj::mv(n); },
"};\n" spaces(indent), "};\n"
"\n"), "\n"),
kj::strTree( kj::strTree(
@ -1297,7 +1298,7 @@ private:
NodeTextNoSchema top = makeNodeTextWithoutNested( NodeTextNoSchema top = makeNodeTextWithoutNested(
namespace_, scope, name, schema, namespace_, scope, name, schema,
KJ_MAP(n, nestedTexts) { return kj::mv(n.outerTypeDecl); }, indent); KJ_MAP(n, nestedTexts) { return kj::mv(n.outerTypeDef); }, indent);
return NodeText { return NodeText {
kj::mv(top.outerTypeDecl), kj::mv(top.outerTypeDecl),
@ -1526,27 +1527,12 @@ private:
KJ_MAP(n, nodeTexts) { return kj::mv(n.outerTypeDef); }, KJ_MAP(n, nodeTexts) { return kj::mv(n.outerTypeDef); },
KJ_MAP(n, namespaceParts) { return kj::strTree("} // namespace\n"); }, "\n", KJ_MAP(n, namespaceParts) { return kj::strTree("} // namespace\n"); }, "\n",
separator, "\n"
"namespace capnp {\n"
"namespace schemas {\n"
"\n",
KJ_MAP(n, nodeTexts) { return kj::mv(n.capnpSchemaDecls); },
"\n"
"} // namespace schemas\n"
"namespace _ { // private\n"
"\n",
KJ_MAP(n, nodeTexts) { return kj::mv(n.capnpPrivateDecls); },
"\n"
"} // namespace _ (private)\n"
"} // namespace capnp\n"
"\n", separator, "\n", "\n", separator, "\n",
KJ_MAP(n, namespaceParts) { return kj::strTree("namespace ", n, " {\n"); }, "\n", KJ_MAP(n, namespaceParts) { return kj::strTree("namespace ", n, " {\n"); }, "\n",
KJ_MAP(n, nodeTexts) { return kj::mv(n.readerBuilderDefs); }, KJ_MAP(n, nodeTexts) { return kj::mv(n.readerBuilderDefs); },
separator, "\n", separator, "\n",
KJ_MAP(n, nodeTexts) { return kj::mv(n.inlineMethodDefs); }, KJ_MAP(n, nodeTexts) { return kj::mv(n.inlineMethodDefs); },
KJ_MAP(n, namespaceParts) { return kj::strTree("} // namespace\n"); }, "\n", KJ_MAP(n, namespaceParts) { return kj::strTree("} // namespace\n"); }, "\n"),
"#endif // CAPNP_INCLUDED_", kj::hex(node.getId()), "_\n"),
kj::strTree( kj::strTree(
"// Generated by Cap'n Proto compiler, DO NOT EDIT\n" "// Generated by Cap'n Proto compiler, DO NOT EDIT\n"