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

Function ArrayStatisticsOptionalValueEquals

cpp/src/arrow/compare.cc:1538–1562  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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