include raw schemas in generated code

This commit is contained in:
David Renshaw 2014-09-10 14:26:57 -04:00
parent 1aec5ea929
commit 4506d8d735

View file

@ -1464,10 +1464,24 @@ private:
auto schemaLiteral = kj::StringTree(KJ_MAP(w, rawSchema) { auto schemaLiteral = kj::StringTree(KJ_MAP(w, rawSchema) {
const byte* bytes = reinterpret_cast<const byte*>(&w); const byte* bytes = reinterpret_cast<const byte*>(&w);
return kj::strTree(KJ_MAP(i, kj::range<uint>(0, sizeof(word))) { return kj::strTree(
auto text = kj::toCharSequence(kj::implicitCast<int8_t>(bytes[i])); "\"",
return kj::strTree(kj::repeat(' ', 4 - text.size()), text, ","); KJ_MAP(i, kj::range<uint>(0, sizeof(word))) {
}); switch(bytes[i]) {
case 0x0a:
return kj::strTree("\\n");
case 0x0d:
return kj::strTree("\\r");
case 0x22:
return kj::strTree("\\\"");
case 0x5c:
return kj::strTree("\\\\");
default:
auto text = kj::hex(bytes[i]);
return kj::strTree("\\u", kj::repeat('0', 4 - text.size()), text);
}
},
"\" +");
}, "\n "); }, "\n ");
std::set<uint64_t> deps; std::set<uint64_t> deps;
@ -1501,10 +1515,9 @@ private:
// Java limits method code size to 64KB. Maybe we should use class.getResource()? // Java limits method code size to 64KB. Maybe we should use class.getResource()?
auto schemaDef = kj::strTree( auto schemaDef = kj::strTree(
"public static final class b_", hexId, " {\n", "public static final byte[] b_", hexId, " = org.capnproto.GeneratedClassSupport.decodeRawBytes(\n",
" public static final byte[] bytes =\n", " ", kj::mv(schemaLiteral), " \"\"",
" {", kj::mv(schemaLiteral), " };\n", ");\n");
"}\n");
/* /*
deps.size() == 0 ? kj::strTree() : kj::strTree( deps.size() == 0 ? kj::strTree() : kj::strTree(
"static const ::capnp::_::RawSchema* const d_", hexId, "[] = {\n", "static const ::capnp::_::RawSchema* const d_", hexId, "[] = {\n",
@ -1708,9 +1721,9 @@ private:
"public final class ", outerClassname, " {\n", "public final class ", outerClassname, " {\n",
KJ_MAP(n, nodeTexts) { return kj::mv(n.outerTypeDef); }, KJ_MAP(n, nodeTexts) { return kj::mv(n.outerTypeDef); },
"\n", "\n",
//"public static final class Schemas {\n", "public static final class Schemas {\n",
//KJ_MAP(n, nodeTexts) { return kj::mv(n.capnpSchemaDefs); }, KJ_MAP(n, nodeTexts) { return kj::mv(n.capnpSchemaDefs); },
//"}\n", "}\n",
"}\n", "}\n",
"\n") "\n")
}; };