enum defaults

This commit is contained in:
David Renshaw 2014-10-06 15:15:57 -04:00
parent f84e1fa430
commit 4773300ac3
2 changed files with 7 additions and 5 deletions

View file

@ -654,10 +654,10 @@ private:
ANY_POINTER ANY_POINTER
}; };
kj::StringTree makeEnumGetter(EnumSchema schema, kj::String member, uint offset, int indent) { kj::StringTree makeEnumGetter(EnumSchema schema, kj::String member, uint offset, kj::String defaultMaskParam, int indent) {
auto enumerants = schema.getEnumerants(); auto enumerants = schema.getEnumerants();
return kj::strTree( return kj::strTree(
spaces(indent), "switch(", member, ".getShortField(", offset, ")) {\n", spaces(indent), "switch(", member, ".getShortField(", offset, defaultMaskParam, ")) {\n",
KJ_MAP(e, enumerants) { KJ_MAP(e, enumerants) {
return kj::strTree(spaces(indent+1), "case ", e.getOrdinal(), " : return ", return kj::strTree(spaces(indent+1), "case ", e.getOrdinal(), " : return ",
javaFullName(schema), ".", javaFullName(schema), ".",
@ -849,7 +849,7 @@ private:
case schema::Type::ENUM: case schema::Type::ENUM:
kind = FieldKind::PRIMITIVE; kind = FieldKind::PRIMITIVE;
if (defaultBody.getEnum() != 0) { if (defaultBody.getEnum() != 0) {
defaultMask = kj::str(defaultBody.getEnum(), "u"); defaultMask = kj::str("(short)", defaultBody.getEnum());
} }
break; break;
@ -893,7 +893,7 @@ private:
unionDiscrim.check, unionDiscrim.check,
(typeBody.which() == schema::Type::ENUM ? (typeBody.which() == schema::Type::ENUM ?
makeEnumGetter(structSchema.getDependency(typeBody.getEnum().getTypeId()).asEnum(), makeEnumGetter(structSchema.getDependency(typeBody.getEnum().getTypeId()).asEnum(),
kj::str("_reader"), offset, indent + 2) : kj::str("_reader"), offset, kj::str(defaultMaskParam), indent + 2) :
(typeBody.which() == schema::Type::VOID ? (typeBody.which() == schema::Type::VOID ?
kj::strTree(spaces(indent), " return org.capnproto.Void.VOID;\n") : kj::strTree(spaces(indent), " return org.capnproto.Void.VOID;\n") :
kj::strTree(spaces(indent), " return _reader.get",toTitleCase(type),"Field(", offset, defaultMaskParam, ");\n"))), kj::strTree(spaces(indent), " return _reader.get",toTitleCase(type),"Field(", offset, defaultMaskParam, ");\n"))),
@ -906,7 +906,7 @@ private:
unionDiscrim.check, unionDiscrim.check,
(typeBody.which() == schema::Type::ENUM ? (typeBody.which() == schema::Type::ENUM ?
makeEnumGetter(structSchema.getDependency(typeBody.getEnum().getTypeId()).asEnum(), makeEnumGetter(structSchema.getDependency(typeBody.getEnum().getTypeId()).asEnum(),
kj::str("_builder"), offset, indent + 2) : kj::str("_builder"), offset, kj::str(defaultMaskParam), indent + 2) :
(typeBody.which() == schema::Type::VOID ? (typeBody.which() == schema::Type::VOID ?
kj::strTree(spaces(indent), " return org.capnproto.Void.VOID;\n") : kj::strTree(spaces(indent), " return org.capnproto.Void.VOID;\n") :
kj::strTree(spaces(indent), " return _builder.get",toTitleCase(type),"Field(", offset, defaultMaskParam, ");\n"))), kj::strTree(spaces(indent), " return _builder.get",toTitleCase(type),"Field(", offset, defaultMaskParam, ");\n"))),

View file

@ -273,6 +273,8 @@ object TestUtil {
} }
reader.getEnumField() should equal (TestEnum.CORGE);
reader.getVoidList().size() should equal (6); reader.getVoidList().size() should equal (6);
{ {
val listReader = reader.getBoolList(); val listReader = reader.getBoolList();