MCPcopy Create free account
hub / github.com/Restream/reindexer / stringToVariant

Function stringToVariant

cpp_src/tools/stringstools.cc:355–377  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

353}
354
355Variant stringToVariant(std::string_view value) {
356 const auto kvt = detectValueType(value);
357 return kvt.EvaluateOneOf(
358 [value](KeyValueType::Int64) { return Variant(int64_t(stoll(value))); },
359 [value](KeyValueType::Int) { return Variant(int(stoi(value))); },
360 [value](KeyValueType::Double) {
361 using double_conversion::StringToDoubleConverter;
362 static const StringToDoubleConverter converter{StringToDoubleConverter::NO_FLAGS, NAN, NAN, nullptr, nullptr};
363 int countOfCharsParsedAsDouble = 0;
364 return Variant(converter.StringToDouble(value.data(), value.size(), &countOfCharsParsedAsDouble));
365 },
366 [value](KeyValueType::Float) {
367 using double_conversion::StringToDoubleConverter;
368 static const StringToDoubleConverter converter{StringToDoubleConverter::NO_FLAGS, NAN, NAN, nullptr, nullptr};
369 int countOfCharsParsedAsDouble = 0;
370 return Variant(converter.StringToFloat(value.data(), value.size(), &countOfCharsParsedAsDouble));
371 },
372 [value](KeyValueType::String) { return Variant(make_key_string(value.data(), value.length())); },
373 [value](KeyValueType::Bool) noexcept { return (value.size() == 4) ? Variant(true) : Variant(false); },
374 [value](KeyValueType::Uuid) { return Variant{Uuid{value}}; },
375 [](concepts::OneOf<KeyValueType::Undefined, KeyValueType::Null, KeyValueType::Composite, KeyValueType::Tuple,
376 KeyValueType::FloatVector> auto) noexcept { return Variant(); });
377}
378
379void utf8_to_utf16(std::string_view src, std::wstring& dst) {
380 dst.resize(src.length());

Callers 2

SegmentFromYAMLMethod · 0.85
SegmentFromJSONMethod · 0.85

Calls 9

detectValueTypeFunction · 0.85
stollFunction · 0.85
stoiFunction · 0.85
make_key_stringFunction · 0.85
EvaluateOneOfMethod · 0.80
lengthMethod · 0.80
VariantClass · 0.70
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected