| 906 | } |
| 907 | |
| 908 | Status GetConverter(const std::shared_ptr<DataType>& type, |
| 909 | std::shared_ptr<JSONConverter>* out) { |
| 910 | if (type->id() == Type::DICTIONARY) { |
| 911 | return GetDictConverter(type, out); |
| 912 | } |
| 913 | |
| 914 | std::shared_ptr<JSONConverter> res; |
| 915 | |
| 916 | #define SIMPLE_CONVERTER_CASE(ID, CLASS) \ |
| 917 | case ID: \ |
| 918 | res = std::make_shared<CLASS>(type); \ |
| 919 | break; |
| 920 | |
| 921 | switch (type->id()) { |
| 922 | SIMPLE_CONVERTER_CASE(Type::INT8, IntegerConverter<Int8Type>) |
| 923 | SIMPLE_CONVERTER_CASE(Type::INT16, IntegerConverter<Int16Type>) |
| 924 | SIMPLE_CONVERTER_CASE(Type::INT32, IntegerConverter<Int32Type>) |
| 925 | SIMPLE_CONVERTER_CASE(Type::INT64, IntegerConverter<Int64Type>) |
| 926 | SIMPLE_CONVERTER_CASE(Type::UINT8, IntegerConverter<UInt8Type>) |
| 927 | SIMPLE_CONVERTER_CASE(Type::UINT16, IntegerConverter<UInt16Type>) |
| 928 | SIMPLE_CONVERTER_CASE(Type::UINT32, IntegerConverter<UInt32Type>) |
| 929 | SIMPLE_CONVERTER_CASE(Type::UINT64, IntegerConverter<UInt64Type>) |
| 930 | SIMPLE_CONVERTER_CASE(Type::TIMESTAMP, TimestampConverter) |
| 931 | SIMPLE_CONVERTER_CASE(Type::DATE32, IntegerConverter<Date32Type>) |
| 932 | SIMPLE_CONVERTER_CASE(Type::DATE64, IntegerConverter<Date64Type>) |
| 933 | SIMPLE_CONVERTER_CASE(Type::TIME32, IntegerConverter<Time32Type>) |
| 934 | SIMPLE_CONVERTER_CASE(Type::TIME64, IntegerConverter<Time64Type>) |
| 935 | SIMPLE_CONVERTER_CASE(Type::DURATION, IntegerConverter<DurationType>) |
| 936 | SIMPLE_CONVERTER_CASE(Type::NA, NullConverter) |
| 937 | SIMPLE_CONVERTER_CASE(Type::BOOL, BooleanConverter) |
| 938 | SIMPLE_CONVERTER_CASE(Type::HALF_FLOAT, IntegerConverter<HalfFloatType>) |
| 939 | SIMPLE_CONVERTER_CASE(Type::FLOAT, FloatConverter<FloatType>) |
| 940 | SIMPLE_CONVERTER_CASE(Type::DOUBLE, FloatConverter<DoubleType>) |
| 941 | SIMPLE_CONVERTER_CASE(Type::LIST, VarLengthListLikeConverter<ListType>) |
| 942 | SIMPLE_CONVERTER_CASE(Type::LARGE_LIST, VarLengthListLikeConverter<LargeListType>) |
| 943 | SIMPLE_CONVERTER_CASE(Type::LIST_VIEW, VarLengthListLikeConverter<ListViewType>) |
| 944 | SIMPLE_CONVERTER_CASE(Type::LARGE_LIST_VIEW, |
| 945 | VarLengthListLikeConverter<LargeListViewType>) |
| 946 | SIMPLE_CONVERTER_CASE(Type::MAP, MapConverter) |
| 947 | SIMPLE_CONVERTER_CASE(Type::FIXED_SIZE_LIST, FixedSizeListConverter) |
| 948 | SIMPLE_CONVERTER_CASE(Type::STRUCT, StructConverter) |
| 949 | SIMPLE_CONVERTER_CASE(Type::STRING, StringConverter<StringType>) |
| 950 | SIMPLE_CONVERTER_CASE(Type::BINARY, StringConverter<BinaryType>) |
| 951 | SIMPLE_CONVERTER_CASE(Type::LARGE_STRING, StringConverter<LargeStringType>) |
| 952 | SIMPLE_CONVERTER_CASE(Type::LARGE_BINARY, StringConverter<LargeBinaryType>) |
| 953 | SIMPLE_CONVERTER_CASE(Type::STRING_VIEW, StringConverter<StringViewType>) |
| 954 | SIMPLE_CONVERTER_CASE(Type::BINARY_VIEW, StringConverter<BinaryViewType>) |
| 955 | SIMPLE_CONVERTER_CASE(Type::FIXED_SIZE_BINARY, FixedSizeBinaryConverter<>) |
| 956 | SIMPLE_CONVERTER_CASE(Type::DECIMAL32, Decimal32Converter<>) |
| 957 | SIMPLE_CONVERTER_CASE(Type::DECIMAL64, Decimal64Converter<>) |
| 958 | SIMPLE_CONVERTER_CASE(Type::DECIMAL128, Decimal128Converter<>) |
| 959 | SIMPLE_CONVERTER_CASE(Type::DECIMAL256, Decimal256Converter<>) |
| 960 | SIMPLE_CONVERTER_CASE(Type::SPARSE_UNION, UnionConverter) |
| 961 | SIMPLE_CONVERTER_CASE(Type::DENSE_UNION, UnionConverter) |
| 962 | SIMPLE_CONVERTER_CASE(Type::INTERVAL_MONTHS, IntegerConverter<MonthIntervalType>) |
| 963 | SIMPLE_CONVERTER_CASE(Type::INTERVAL_DAY_TIME, DayTimeIntervalConverter) |
| 964 | SIMPLE_CONVERTER_CASE(Type::INTERVAL_MONTH_DAY_NANO, MonthDayNanoIntervalConverter) |
| 965 | default: |
no test coverage detected