getters
This commit is contained in:
parent
2da0d65423
commit
77242cd15d
3 changed files with 72 additions and 13 deletions
|
@ -211,6 +211,18 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kj::Vector<kj::String> getTypeParameters(Schema schema) {
|
||||||
|
auto node = schema.getProto();
|
||||||
|
kj::Vector<kj::String> result;
|
||||||
|
if (node.getScopeId() != 0) {
|
||||||
|
Schema parent = schemaLoader.get(node.getScopeId());
|
||||||
|
result = getTypeParameters(parent);
|
||||||
|
}
|
||||||
|
for (auto parameter : node.getParameters()) {
|
||||||
|
result.add(kj::str(parameter.getName(), "_", kj::hex(node.getId())));
|
||||||
|
}
|
||||||
|
return kj::mv(result);
|
||||||
|
}
|
||||||
|
|
||||||
kj::String toUpperCase(kj::StringPtr name) {
|
kj::String toUpperCase(kj::StringPtr name) {
|
||||||
kj::Vector<char> result(name.size() + 4);
|
kj::Vector<char> result(name.size() + 4);
|
||||||
|
@ -891,7 +903,50 @@ private:
|
||||||
|
|
||||||
} else if (kind == FieldKind::INTERFACE) {
|
} else if (kind == FieldKind::INTERFACE) {
|
||||||
KJ_FAIL_REQUIRE("interfaces unimplemented");
|
KJ_FAIL_REQUIRE("interfaces unimplemented");
|
||||||
|
|
||||||
} else if (kind == FieldKind::ANY_POINTER) {
|
} else if (kind == FieldKind::ANY_POINTER) {
|
||||||
|
if (typeBody.getAnyPointer().isParameter()) {
|
||||||
|
auto brandParam = typeBody.getAnyPointer().getParameter();
|
||||||
|
auto structSchema = field.getContainingStruct();
|
||||||
|
auto typeParam =
|
||||||
|
kj::strTree(schemaLoader.get(brandParam.getScopeId()).getProto().getParameters()[brandParam.getParameterIndex()].getName(),
|
||||||
|
"_", kj::hex(brandParam.getScopeId()));;
|
||||||
|
|
||||||
|
return FieldText {
|
||||||
|
kj::strTree(
|
||||||
|
kj::mv(unionDiscrim.readerIsDef),
|
||||||
|
spaces(indent), " public boolean has", titleCase, "() {\n",
|
||||||
|
unionDiscrim.has,
|
||||||
|
spaces(indent), " return !_pointerFieldIsNull(", offset, ");\n",
|
||||||
|
spaces(indent), " }\n",
|
||||||
|
|
||||||
|
spaces(indent), " public ", typeParam.flatten(), "_Reader get", titleCase, "() {\n",
|
||||||
|
unionDiscrim.check,
|
||||||
|
spaces(indent), " return _getPointerField(", typeParam.flatten(), "_Factory, ", offset, ");\n",
|
||||||
|
spaces(indent), " }\n"),
|
||||||
|
|
||||||
|
kj::strTree(
|
||||||
|
kj::mv(unionDiscrim.builderIsDef),
|
||||||
|
spaces(indent), " public final boolean has", titleCase, "() {\n",
|
||||||
|
spaces(indent), " return !_pointerFieldIsNull(", offset, ");\n",
|
||||||
|
spaces(indent), " }\n",
|
||||||
|
|
||||||
|
spaces(indent), " public ", typeParam.flatten(), "_Builder get", titleCase, "() {\n",
|
||||||
|
unionDiscrim.check,
|
||||||
|
spaces(indent), " return _getPointerField(", typeParam.flatten(), "_Factory, ", offset, ");\n",
|
||||||
|
spaces(indent), " }\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(this.segment, this.pointers +",
|
||||||
|
offset, ");\n",
|
||||||
|
spaces(indent), " result.clear();\n",
|
||||||
|
spaces(indent), " return result;\n",
|
||||||
|
spaces(indent), " }\n",
|
||||||
|
"\n"),
|
||||||
|
};
|
||||||
|
};
|
||||||
return FieldText {
|
return FieldText {
|
||||||
kj::strTree(
|
kj::strTree(
|
||||||
kj::mv(unionDiscrim.readerIsDef),
|
kj::mv(unionDiscrim.readerIsDef),
|
||||||
|
@ -1090,19 +1145,6 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kj::Vector<kj::String> getTypeParameters(Schema schema) {
|
|
||||||
auto node = schema.getProto();
|
|
||||||
kj::Vector<kj::String> result;
|
|
||||||
if (node.getScopeId() != 0) {
|
|
||||||
Schema parent = schemaLoader.get(node.getScopeId());
|
|
||||||
result = getTypeParameters(parent);
|
|
||||||
}
|
|
||||||
for (auto parameter : node.getParameters()) {
|
|
||||||
result.add(kj::str(parameter.getName(), "_", kj::hex(node.getId())));
|
|
||||||
}
|
|
||||||
return kj::mv(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
StructText makeStructText(kj::StringPtr scope, kj::StringPtr name, StructSchema schema,
|
StructText makeStructText(kj::StringPtr scope, kj::StringPtr name, StructSchema schema,
|
||||||
kj::Array<kj::StringTree> nestedTypeDecls, int indent) {
|
kj::Array<kj::StringTree> nestedTypeDecls, int indent) {
|
||||||
auto proto = schema.getProto();
|
auto proto = schema.getProto();
|
||||||
|
|
|
@ -176,6 +176,10 @@ public class StructBuilder {
|
||||||
this.segment.buffer.putLong(pointer * 8, 0L);
|
this.segment.buffer.putLong(pointer * 8, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected final <T> T _getPointerField(FromPointerBuilder<T> factory, int index) {
|
||||||
|
return factory.fromPointerBuilder(this.segment, this.pointers + index);
|
||||||
|
}
|
||||||
|
|
||||||
protected final <T> T _getPointerField(FromPointerBuilderRefDefault<T> factory, int index,
|
protected final <T> T _getPointerField(FromPointerBuilderRefDefault<T> factory, int index,
|
||||||
SegmentReader defaultSegment, int defaultOffset) {
|
SegmentReader defaultSegment, int defaultOffset) {
|
||||||
return factory.fromPointerBuilderRefDefault(this.segment, this.pointers + index, defaultSegment, defaultOffset);
|
return factory.fromPointerBuilderRefDefault(this.segment, this.pointers + index, defaultSegment, defaultOffset);
|
||||||
|
|
|
@ -154,6 +154,19 @@ public class StructReader {
|
||||||
return this.segment.buffer.getLong((this.pointers + ptrIndex) * Constants.BYTES_PER_WORD) == 0;
|
return this.segment.buffer.getLong((this.pointers + ptrIndex) * Constants.BYTES_PER_WORD) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected final <T> T _getPointerField(FromPointerReader<T> factory, int ptrIndex) {
|
||||||
|
if (ptrIndex < this.pointerCount) {
|
||||||
|
return factory.fromPointerReader(this.segment,
|
||||||
|
this.pointers + ptrIndex,
|
||||||
|
this.nestingLimit);
|
||||||
|
} else {
|
||||||
|
return factory.fromPointerReader(SegmentReader.EMPTY,
|
||||||
|
0,
|
||||||
|
this.nestingLimit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected final <T> T _getPointerField(FromPointerReaderRefDefault<T> factory, int ptrIndex,
|
protected final <T> T _getPointerField(FromPointerReaderRefDefault<T> factory, int ptrIndex,
|
||||||
SegmentReader defaultSegment, int defaultOffset) {
|
SegmentReader defaultSegment, int defaultOffset) {
|
||||||
if (ptrIndex < this.pointerCount) {
|
if (ptrIndex < this.pointerCount) {
|
||||||
|
|
Loading…
Reference in a new issue