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

Function GetConverter

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

Source from the content-addressed store, hash-verified

906}
907
908Status 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:

Callers 7

InitMethod · 0.70
InitMethod · 0.70
InitMethod · 0.70
InitMethod · 0.70
InitMethod · 0.70
ArrayFromJSONStringFunction · 0.70
ScalarFromJSONStringFunction · 0.70

Calls 5

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

Tested by

no test coverage detected