| 855 | } |
| 856 | |
| 857 | Status GetDictConverter(const std::shared_ptr<DataType>& type, |
| 858 | std::shared_ptr<JSONConverter>* out) { |
| 859 | std::shared_ptr<JSONConverter> res; |
| 860 | |
| 861 | const auto value_type = checked_cast<const DictionaryType&>(*type).value_type(); |
| 862 | |
| 863 | #define SIMPLE_CONVERTER_CASE(ID, CLASS, TYPE) \ |
| 864 | case ID: \ |
| 865 | res = std::make_shared<CLASS<DictionaryBuilder<TYPE>>>(type); \ |
| 866 | break; |
| 867 | |
| 868 | #define PARAM_CONVERTER_CASE(ID, CLASS, TYPE) \ |
| 869 | case ID: \ |
| 870 | res = std::make_shared<CLASS<TYPE, DictionaryBuilder<TYPE>>>(type); \ |
| 871 | break; |
| 872 | |
| 873 | switch (value_type->id()) { |
| 874 | PARAM_CONVERTER_CASE(Type::INT8, IntegerConverter, Int8Type) |
| 875 | PARAM_CONVERTER_CASE(Type::INT16, IntegerConverter, Int16Type) |
| 876 | PARAM_CONVERTER_CASE(Type::INT32, IntegerConverter, Int32Type) |
| 877 | PARAM_CONVERTER_CASE(Type::INT64, IntegerConverter, Int64Type) |
| 878 | PARAM_CONVERTER_CASE(Type::UINT8, IntegerConverter, UInt8Type) |
| 879 | PARAM_CONVERTER_CASE(Type::UINT16, IntegerConverter, UInt16Type) |
| 880 | PARAM_CONVERTER_CASE(Type::UINT32, IntegerConverter, UInt32Type) |
| 881 | PARAM_CONVERTER_CASE(Type::UINT64, IntegerConverter, UInt64Type) |
| 882 | PARAM_CONVERTER_CASE(Type::FLOAT, FloatConverter, FloatType) |
| 883 | PARAM_CONVERTER_CASE(Type::DOUBLE, FloatConverter, DoubleType) |
| 884 | PARAM_CONVERTER_CASE(Type::STRING, StringConverter, StringType) |
| 885 | PARAM_CONVERTER_CASE(Type::BINARY, StringConverter, BinaryType) |
| 886 | PARAM_CONVERTER_CASE(Type::LARGE_STRING, StringConverter, LargeStringType) |
| 887 | PARAM_CONVERTER_CASE(Type::LARGE_BINARY, StringConverter, LargeBinaryType) |
| 888 | PARAM_CONVERTER_CASE(Type::STRING_VIEW, StringConverter, StringViewType) |
| 889 | PARAM_CONVERTER_CASE(Type::BINARY_VIEW, StringConverter, BinaryViewType) |
| 890 | SIMPLE_CONVERTER_CASE(Type::FIXED_SIZE_BINARY, FixedSizeBinaryConverter, |
| 891 | FixedSizeBinaryType) |
| 892 | SIMPLE_CONVERTER_CASE(Type::DECIMAL32, Decimal32Converter, Decimal32Type) |
| 893 | SIMPLE_CONVERTER_CASE(Type::DECIMAL64, Decimal64Converter, Decimal64Type) |
| 894 | SIMPLE_CONVERTER_CASE(Type::DECIMAL128, Decimal128Converter, Decimal128Type) |
| 895 | SIMPLE_CONVERTER_CASE(Type::DECIMAL256, Decimal256Converter, Decimal256Type) |
| 896 | default: |
| 897 | return ConversionNotImplemented(type); |
| 898 | } |
| 899 | |
| 900 | #undef SIMPLE_CONVERTER_CASE |
| 901 | #undef PARAM_CONVERTER_CASE |
| 902 | |
| 903 | RETURN_NOT_OK(res->Init()); |
| 904 | *out = res; |
| 905 | return Status::OK(); |
| 906 | } |
| 907 | |
| 908 | Status GetConverter(const std::shared_ptr<DataType>& type, |
| 909 | std::shared_ptr<JSONConverter>* out) { |
no test coverage detected