private ResolvedType typeOf()

in tensorflow-core/tensorflow-core-generator/src/main/java/org/tensorflow/op/generator/TypeResolver.java [212:265]


  private ResolvedType typeOf(AttrDef attr, boolean fromInput) {
    if (known.containsKey(attr.getName())) {
      return known.get(attr.getName());
    }

    boolean iterable = false;
    String typeName = attr.getType();
    if (typeName.startsWith("list(")) {
      iterable = true;
      typeName = typeName.substring(5, typeName.length() - 1);
    }

    ResolvedType types;

    switch (typeName) {
      case "string":
        types = new ResolvedType(STRING, AttributeType.STRING);
        break;
      case "int":
        types = new ResolvedType(TypeName.LONG, AttributeType.INT);
        break;
      case "float":
        types = new ResolvedType(TypeName.FLOAT, AttributeType.FLOAT);
        break;
      case "bool":
        types = new ResolvedType(TypeName.BOOLEAN, AttributeType.BOOL);
        break;
      case "shape":
        types = new ResolvedType(Names.Shape, AttributeType.SHAPE);
        break;
      case "tensor":
        types = new ResolvedType(Names.Tensor, AttributeType.TENSOR);
        break;
      case "type":
        TypeName family = typeFamily(attr);
        TypeName type =
            iterable ? WildcardTypeName.subtypeOf(family) : nextGeneric().withBounds(family);
        types = new ResolvedType(type, TypeName.get(DataType.class), AttributeType.TYPE);
        break;
      case "func":
        // TODO add attribute type once supported
        types = new ResolvedType(Names.ConcreteFunction);
        break;
      default:
        throw new IllegalArgumentException("No Java type for " + typeName);
    }

    types = types.withIterable(iterable);
    known.put(attr.getName(), types);
    if (fromInput) {
      reachedFromInput.add(attr.getName());
    }
    return types;
  }