generate init methods for AnyPointer fields

This commit is contained in:
David Renshaw 2014-10-02 11:54:37 -04:00
parent 811286806d
commit 6ce41d20bd
2 changed files with 14 additions and 21 deletions

View file

@ -898,20 +898,19 @@ private:
spaces(indent), " return new org.capnproto.AnyPointer.Builder(_builder.getPointerField(", spaces(indent), " return new org.capnproto.AnyPointer.Builder(_builder.getPointerField(",
offset, "));\n", offset, "));\n",
spaces(indent), " }\n", spaces(indent), " }\n",
//" inline ::capnp::AnyPointer::Builder init", titleCase, "();\n"
spaces(indent), " public org.capnproto.AnyPointer.Builder init", titleCase, "() {\n",
unionDiscrim.set,
spaces(indent), " org.capnproto.AnyPointer.Builder result =\n",
spaces(indent), " new org.capnproto.AnyPointer.Builder(_builder.getPointerField(",
offset, "));\n",
spaces(indent), " result.clear();\n",
spaces(indent), " return result;\n",
spaces(indent), " }\n",
"\n"), "\n"),
kj::strTree(), kj::strTree(),
kj::strTree()
kj::strTree(
"inline ::capnp::AnyPointer::Builder ", scope, "Builder::init", titleCase, "() {\n",
unionDiscrim.set,
" auto result = ::capnp::AnyPointer::Builder(\n"
" _builder.getPointerField(", offset, " * ::capnp::POINTERS));\n"
" result.clear();\n"
" return result;\n"
"}\n"
"\n")
}; };
} else if (kind == FieldKind::STRUCT) { } else if (kind == FieldKind::STRUCT) {
@ -1189,16 +1188,6 @@ private:
kj::strTree( kj::strTree(
kj::mv(unionDiscrim.isDefs), kj::mv(unionDiscrim.isDefs),
"inline ", type, "::Reader ", scope, "Reader::get", titleCase, "() const {\n",
unionDiscrim.check,
" return ::capnp::_::PointerHelpers<", type, ">::get(\n"
" _reader.getPointerField(", offset, " * ::capnp::POINTERS)", defaultParam, ");\n"
"}\n"
"inline ", type, "::Builder ", scope, "Builder::get", titleCase, "() {\n",
unionDiscrim.check,
" return ::capnp::_::PointerHelpers<", type, ">::get(\n"
" _builder.getPointerField(", offset, " * ::capnp::POINTERS)", defaultParam, ");\n"
"}\n",
kind == FieldKind::STRUCT && !hasDiscriminantValue(proto) kind == FieldKind::STRUCT && !hasDiscriminantValue(proto)
? kj::strTree( ? kj::strTree(
"inline ", type, "::Pipeline ", scope, "Pipeline::get", titleCase, "() {\n", "inline ", type, "::Pipeline ", scope, "Pipeline::get", titleCase, "() {\n",

View file

@ -24,6 +24,10 @@ public final class AnyPointer {
public final <T> T initAsStruct(FromStructBuilder<T> factory) { public final <T> T initAsStruct(FromStructBuilder<T> factory) {
return factory.fromStructBuilder(this.builder.initStruct(factory.structSize())); return factory.fromStructBuilder(this.builder.initStruct(factory.structSize()));
} }
public final void clear() {
this.builder.clear();
}
} }
} }