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));
}
}