static ArrowType asType()

in c/src/main/java/org/apache/arrow/c/Format.java [246:336]


  static ArrowType asType(String format, long flags)
      throws NumberFormatException, UnsupportedOperationException, IllegalStateException {
    switch (format) {
      case "n":
        return new ArrowType.Null();
      case "b":
        return new ArrowType.Bool();
      case "c":
        return new ArrowType.Int(8, true);
      case "C":
        return new ArrowType.Int(8, false);
      case "s":
        return new ArrowType.Int(16, true);
      case "S":
        return new ArrowType.Int(16, false);
      case "i":
        return new ArrowType.Int(32, true);
      case "I":
        return new ArrowType.Int(32, false);
      case "l":
        return new ArrowType.Int(64, true);
      case "L":
        return new ArrowType.Int(64, false);
      case "e":
        return new ArrowType.FloatingPoint(FloatingPointPrecision.HALF);
      case "f":
        return new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE);
      case "g":
        return new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE);
      case "z":
        return new ArrowType.Binary();
      case "Z":
        return new ArrowType.LargeBinary();
      case "u":
        return new ArrowType.Utf8();
      case "U":
        return new ArrowType.LargeUtf8();
      case "tdD":
        return new ArrowType.Date(DateUnit.DAY);
      case "tdm":
        return new ArrowType.Date(DateUnit.MILLISECOND);
      case "tts":
        return new ArrowType.Time(TimeUnit.SECOND, 32);
      case "ttm":
        return new ArrowType.Time(TimeUnit.MILLISECOND, 32);
      case "ttu":
        return new ArrowType.Time(TimeUnit.MICROSECOND, 64);
      case "ttn":
        return new ArrowType.Time(TimeUnit.NANOSECOND, 64);
      case "tDs":
        return new ArrowType.Duration(TimeUnit.SECOND);
      case "tDm":
        return new ArrowType.Duration(TimeUnit.MILLISECOND);
      case "tDu":
        return new ArrowType.Duration(TimeUnit.MICROSECOND);
      case "tDn":
        return new ArrowType.Duration(TimeUnit.NANOSECOND);
      case "tiM":
        return new ArrowType.Interval(IntervalUnit.YEAR_MONTH);
      case "tiD":
        return new ArrowType.Interval(IntervalUnit.DAY_TIME);
      case "tin":
        return new ArrowType.Interval(IntervalUnit.MONTH_DAY_NANO);
      case "+l":
        return new ArrowType.List();
      case "+L":
        return new ArrowType.LargeList();
      case "+s":
        return new ArrowType.Struct();
      case "+m":
        boolean keysSorted = (flags & Flags.ARROW_FLAG_MAP_KEYS_SORTED) != 0;
        return new ArrowType.Map(keysSorted);
      case "vu":
        return new ArrowType.Utf8View();
      case "vz":
        return new ArrowType.BinaryView();
      case "+vl":
        return new ArrowType.ListView();
      case "+vL":
        return new ArrowType.LargeListView();
      case "+r":
        return new ArrowType.RunEndEncoded();
      default:
        String[] parts = format.split(":", 2);
        if (parts.length == 2) {
          return parseComplexFormat(parts[0], parts[1]);
        }
        throw new UnsupportedOperationException(
            String.format("Format %s is not supported", format));
    }
  }