drat, this doesn't quite work

This commit is contained in:
David Renshaw 2014-10-28 18:23:51 -04:00
parent 3d8537521c
commit a578dd1332
3 changed files with 25 additions and 6 deletions

View file

@ -370,9 +370,16 @@ private:
} }
KJ_UNREACHABLE; KJ_UNREACHABLE;
} }
case schema::Type::ANY_POINTER: case schema::Type::ANY_POINTER: {
// Not used. KJ_IF_MAYBE(brandParam, type.getBrandParameter()) {
return kj::strTree(); return
kj::strTree(schemaLoader.get(brandParam->scopeId).getProto().getParameters()[brandParam->index].getName(),
"_", kj::hex(brandParam->scopeId), "_", suffix);
} else {
return kj::strTree("org.capnproto.AnyPointer.", suffix);
}
}
} }
KJ_UNREACHABLE; KJ_UNREACHABLE;
} }
@ -721,6 +728,16 @@ private:
case schema::Type::DATA : { case schema::Type::DATA : {
return kj::str("org.capnproto.Data.factory"); return kj::str("org.capnproto.Data.factory");
} }
case schema::Type::ANY_POINTER : {
KJ_IF_MAYBE(brandParam, type.getBrandParameter()) {
return
kj::str(schemaLoader.get(brandParam->scopeId).getProto().getParameters()[brandParam->index].getName(),
"_", kj::hex(brandParam->scopeId), "_Factory");
} else {
return kj::str("org.capnproto.AnyPointer.factory");
}
}
case schema::Type::STRUCT : { case schema::Type::STRUCT : {
auto structSchema = type.asStruct(); auto structSchema = type.asStruct();
auto node = structSchema.getProto(); auto node = structSchema.getProto();
@ -1530,14 +1547,14 @@ private:
kj::Vector<NodeText> nestedTexts(proto.getNestedNodes().size()); kj::Vector<NodeText> nestedTexts(proto.getNestedNodes().size());
for (auto nested: proto.getNestedNodes()) { for (auto nested: proto.getNestedNodes()) {
nestedTexts.add(makeNodeText( nestedTexts.add(makeNodeText(
subScope, nested.getName(), schemaLoader.get(nested.getId()), indent + 1)); subScope, nested.getName(), schemaLoader.getUnbound(nested.getId()), indent + 1));
}; };
if (proto.isStruct()) { if (proto.isStruct()) {
for (auto field: proto.getStruct().getFields()) { for (auto field: proto.getStruct().getFields()) {
if (field.isGroup()) { if (field.isGroup()) {
nestedTexts.add(makeNodeText(subScope, toTitleCase(field.getName()), nestedTexts.add(makeNodeText(subScope, toTitleCase(field.getName()),
schemaLoader.get(field.getGroup().getTypeId()), indent + 1)); schemaLoader.getUnbound(field.getGroup().getTypeId()), indent + 1));
} }
} }
} else if (proto.isInterface()) { } else if (proto.isInterface()) {
@ -1769,7 +1786,7 @@ private:
} }
auto nodeTexts = KJ_MAP(nested, node.getNestedNodes()) { auto nodeTexts = KJ_MAP(nested, node.getNestedNodes()) {
return makeNodeText("", nested.getName(), schemaLoader.get(nested.getId()), 1); return makeNodeText("", nested.getName(), schemaLoader.getUnbound(nested.getId()), 1);
}; };
kj::String separator = kj::str("// ", kj::repeat('=', 87), "\n"); kj::String separator = kj::str("// ", kj::repeat('=', 87), "\n");

View file

@ -325,6 +325,7 @@ struct TestNewVersion {
struct TestGenerics(Foo, Bar) { struct TestGenerics(Foo, Bar) {
foo @0 :Foo; foo @0 :Foo;
rev @1 :TestGenerics(Text, List(UInt8)); rev @1 :TestGenerics(Text, List(UInt8));
# dub @2 :TestGenerics(Foo, Bar);
# struct Inner { # struct Inner {
# foo @0 :Foo; # foo @0 :Foo;

View file

@ -35,6 +35,7 @@ public final class AnyPointer {
return result; return result;
} }
} }
public static final Factory factory = new Factory();
public final static class Reader { public final static class Reader {
final SegmentReader segment; final SegmentReader segment;