update typeName and javaFullName to take capnp::Type

This commit is contained in:
David Renshaw 2014-10-28 13:17:02 -04:00
parent 4870faf255
commit 6403f605aa

View file

@ -251,7 +251,7 @@ private:
return kj::mv(result); return kj::mv(result);
} }
kj::StringTree typeName(schema::Type::Reader type, kj::String suffix = nullptr) { kj::StringTree typeName(capnp::Type type, kj::String suffix = nullptr) {
switch (type.which()) { switch (type.which()) {
case schema::Type::VOID: return kj::strTree("org.capnproto.Void"); case schema::Type::VOID: return kj::strTree("org.capnproto.Void");
@ -270,16 +270,15 @@ private:
case schema::Type::TEXT: return kj::strTree(" org.capnproto.Text", suffix); case schema::Type::TEXT: return kj::strTree(" org.capnproto.Text", suffix);
case schema::Type::DATA: return kj::strTree(" org.capnproto.Data", suffix); case schema::Type::DATA: return kj::strTree(" org.capnproto.Data", suffix);
case schema::Type::ENUM: case schema::Type::ENUM: return javaFullName(type.asEnum());
return javaFullName(schemaLoader.get(type.getEnum().getTypeId()));
case schema::Type::STRUCT: case schema::Type::STRUCT:
return kj::strTree(javaFullName(schemaLoader.get(type.getStruct().getTypeId())), suffix); return kj::strTree(javaFullName(type.asStruct()), suffix);
case schema::Type::INTERFACE: case schema::Type::INTERFACE:
return javaFullName(schemaLoader.get(type.getInterface().getTypeId())); return javaFullName(type.asInterface());
case schema::Type::LIST: case schema::Type::LIST:
{ {
auto elementType = type.getList().getElementType(); auto elementType = type.asList().getElementType();
switch (elementType.which()) { switch (elementType.which()) {
case schema::Type::VOID: case schema::Type::VOID:
return kj::strTree(" org.capnproto.PrimitiveList.Void", suffix); return kj::strTree(" org.capnproto.PrimitiveList.Void", suffix);
@ -669,8 +668,8 @@ private:
); );
} }
kj::String makeListFactoryArg(schema::Type::Reader type) { kj::String makeListFactoryArg(capnp::Type type) {
auto elementType = type.getList().getElementType(); auto elementType = type.asList().getElementType();
switch (elementType.which()) { switch (elementType.which()) {
case schema::Type::STRUCT: case schema::Type::STRUCT:
return kj::str(typeName(elementType, kj::str(".listFactory"))); return kj::str(typeName(elementType, kj::str(".listFactory")));
@ -753,7 +752,7 @@ private:
FieldKind kind = FieldKind::PRIMITIVE; FieldKind kind = FieldKind::PRIMITIVE;
kj::String ownedType; kj::String ownedType;
kj::String type = typeName(slot.getType(), kj::str("")).flatten(); kj::String type = typeName(field.getType(), kj::str("")).flatten();
kj::StringPtr setterDefault; // only for void kj::StringPtr setterDefault; // only for void
kj::String defaultMask; // primitives only kj::String defaultMask; // primitives only
size_t defaultOffset = 0; // pointers only: offset of the default value within the schema. size_t defaultOffset = 0; // pointers only: offset of the default value within the schema.
@ -1075,9 +1074,9 @@ private:
kj::String defaultParams = defaultOffset == 0 ? kj::str("null, 0") : kj::str( kj::String defaultParams = defaultOffset == 0 ? kj::str("null, 0") : kj::str(
"Schemas.b_", kj::hex(typeId), ", ", defaultOffset); "Schemas.b_", kj::hex(typeId), ", ", defaultOffset);
kj::String listFactory = makeListFactoryArg(typeBody); kj::String listFactory = makeListFactoryArg(field.getType());
kj::String readerClass = kj::str(typeName(typeBody, kj::str(".Reader"))); kj::String readerClass = kj::str(typeName(field.getType(), kj::str(".Reader")));
kj::String builderClass = kj::str(typeName(typeBody, kj::str(".Builder"))); kj::String builderClass = kj::str(typeName(field.getType(), kj::str(".Builder")));
return FieldText { return FieldText {
kj::strTree( kj::strTree(
@ -1336,7 +1335,7 @@ private:
ConstText makeConstText(kj::StringPtr scope, kj::StringPtr name, ConstSchema schema, int indent) { ConstText makeConstText(kj::StringPtr scope, kj::StringPtr name, ConstSchema schema, int indent) {
auto proto = schema.getProto(); auto proto = schema.getProto();
auto constProto = proto.getConst(); auto constProto = proto.getConst();
auto type = constProto.getType(); auto type = schema.getType();
auto typeName_ = typeName(type).flatten(); auto typeName_ = typeName(type).flatten();
auto upperCase = toUpperCase(name); auto upperCase = toUpperCase(name);