MCPcopy Create free account
hub / github.com/apache/arrow / GetDictConverter

Function GetDictConverter

cpp/src/arrow/json/from_string.cc:857–906  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

855}
856
857Status 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
908Status GetConverter(const std::shared_ptr<DataType>& type,
909 std::shared_ptr<JSONConverter>* out) {

Callers 1

GetConverterFunction · 0.85

Calls 5

ConversionNotImplementedFunction · 0.85
OKFunction · 0.70
value_typeMethod · 0.45
idMethod · 0.45
InitMethod · 0.45

Tested by

no test coverage detected