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

Function ArrayStatisticsOptionalValueEquals

cpp/src/arrow/compare.cc:1536–1560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1534
1535template <typename Type>
1536bool ArrayStatisticsOptionalValueEquals(const std::optional<Type>& left,
1537 const std::optional<Type>& right,
1538 const EqualOptions& options) {
1539 if (!left.has_value() || !right.has_value()) {
1540 return left.has_value() == right.has_value();
1541 } else if constexpr (std::is_same_v<Type, double>) {
1542 return DoubleEquals(left.value(), right.value(), options);
1543 } else if (left->index() != right->index()) {
1544 return false;
1545 } else {
1546 auto EqualsVisitor = [&](const auto& v1, const auto& v2) {
1547 using type_1 = std::decay_t<decltype(v1)>;
1548 using type_2 = std::decay_t<decltype(v2)>;
1549 if constexpr (std::conjunction_v<std::is_same<type_1, double>,
1550 std::is_same<type_2, double>>) {
1551 return DoubleEquals(v1, v2, options);
1552 } else if constexpr (std::is_same_v<type_1, type_2>) {
1553 return v1 == v2;
1554 }
1555 Unreachable("The types are different.");
1556 return false;
1557 };
1558 return std::visit(EqualsVisitor, left.value(), right.value());
1559 }
1560}
1561
1562bool ArrayStatisticsEqualsImpl(const ArrayStatistics& left, const ArrayStatistics& right,
1563 const EqualOptions& equal_options) {

Callers 1

Calls 4

DoubleEqualsFunction · 0.85
UnreachableFunction · 0.85
valueMethod · 0.45
indexMethod · 0.45

Tested by

no test coverage detected