This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new 3540b857 chore: Fix compiler warnings on Windows (#521)
3540b857 is described below
commit 3540b8578bd78fc77787babe06b9931e2634d600
Author: Dewey Dunnington <[email protected]>
AuthorDate: Tue Jun 11 21:37:08 2024 +0000
chore: Fix compiler warnings on Windows (#521)
Some minor changes to correct usage that resulted in compiler warnings
when opening this up and doing a naive build in VSCode on Windows.
---
src/nanoarrow/array_test.cc | 43 +++++++++++++++++++++++++------------------
src/nanoarrow/utils_test.cc | 6 +++---
2 files changed, 28 insertions(+), 21 deletions(-)
diff --git a/src/nanoarrow/array_test.cc b/src/nanoarrow/array_test.cc
index e6b0364f..90f29e8c 100644
--- a/src/nanoarrow/array_test.cc
+++ b/src/nanoarrow/array_test.cc
@@ -19,7 +19,6 @@
#include <gtest/gtest.h>
#include <cmath>
#include <cstdint>
-#include <type_traits>
#include <arrow/array.h>
#include <arrow/array/builder_binary.h>
@@ -821,7 +820,7 @@ TEST(ArrayTest, ArrayTestAppendToHalfFloatArray) {
EXPECT_EQ(data_buffer[1], 0);
EXPECT_EQ(data_buffer[2], 0);
EXPECT_FLOAT_EQ(ArrowHalfFloatToFloat(data_buffer[3]), 3.0);
- EXPECT_FLOAT_EQ(ArrowHalfFloatToFloat(data_buffer[4]), 3.138672);
+ EXPECT_FLOAT_EQ(ArrowHalfFloatToFloat(data_buffer[4]),
static_cast<float>(3.138672));
EXPECT_FLOAT_EQ(ArrowHalfFloatToFloat(data_buffer[5]),
std::numeric_limits<float>::max());
EXPECT_TRUE(std::isnan(ArrowHalfFloatToFloat(data_buffer[6])));
@@ -2585,6 +2584,20 @@ TEST(ArrayTest, ArrayViewTestSparseUnionGet) {
ArrowArrayRelease(&array);
}
+// In Arrow C++, HalfFloatType::ctype gives uint16_t; however, this is not
+// the "value type" that would correspond to what
ArrowArrayViewGetDoubleUnsafe()
+// or ArrowArrayAppendDouble() do since they operate on the logical/represented
+// value.
+template <typename TypeClass, typename BuilderValueT>
+BuilderValueT logical_value_to_builder_value(int64_t value) {
+ return static_cast<BuilderValueT>(value);
+}
+
+template <>
+uint16_t logical_value_to_builder_value<HalfFloatType, uint16_t>(int64_t
value) {
+ return ArrowFloatToHalfFloat(static_cast<float>(value));
+}
+
template <typename TypeClass>
void TestGetFromNumericArrayView() {
struct ArrowArray array;
@@ -2593,19 +2606,16 @@ void TestGetFromNumericArrayView() {
struct ArrowError error;
auto type = TypeTraits<TypeClass>::type_singleton();
+ using value_type = typename TypeClass::c_type;
// Array with nulls
auto builder = NumericBuilder<TypeClass>();
- if (type->id() == Type::HALF_FLOAT) {
- ARROW_EXPECT_OK(builder.Append(ArrowFloatToHalfFloat(1)));
- ARROW_EXPECT_OK(builder.AppendNulls(2));
- ARROW_EXPECT_OK(builder.Append(ArrowFloatToHalfFloat(4)));
- } else {
- ARROW_EXPECT_OK(builder.Append(1));
- ARROW_EXPECT_OK(builder.AppendNulls(2));
- ARROW_EXPECT_OK(builder.Append(4));
- }
+ ARROW_EXPECT_OK(
+ builder.Append(logical_value_to_builder_value<TypeClass,
value_type>(1)));
+ ARROW_EXPECT_OK(builder.AppendNulls(2));
+ ARROW_EXPECT_OK(
+ builder.Append(logical_value_to_builder_value<TypeClass,
value_type>(4)));
auto maybe_arrow_array = builder.Finish();
ARROW_EXPECT_OK(maybe_arrow_array);
@@ -2638,13 +2648,10 @@ void TestGetFromNumericArrayView() {
// Array without nulls (Arrow does not allocate the validity buffer)
builder = NumericBuilder<TypeClass>();
- if (type->id() == Type::HALF_FLOAT) {
- ARROW_EXPECT_OK(builder.Append(ArrowFloatToHalfFloat(1)));
- ARROW_EXPECT_OK(builder.Append(ArrowFloatToHalfFloat(2)));
- } else {
- ARROW_EXPECT_OK(builder.Append(1));
- ARROW_EXPECT_OK(builder.Append(2));
- }
+ ARROW_EXPECT_OK(
+ builder.Append(logical_value_to_builder_value<TypeClass,
value_type>(1)));
+ ARROW_EXPECT_OK(
+ builder.Append(logical_value_to_builder_value<TypeClass,
value_type>(2)));
maybe_arrow_array = builder.Finish();
ARROW_EXPECT_OK(maybe_arrow_array);
diff --git a/src/nanoarrow/utils_test.cc b/src/nanoarrow/utils_test.cc
index 24892a6e..3a63df4d 100644
--- a/src/nanoarrow/utils_test.cc
+++ b/src/nanoarrow/utils_test.cc
@@ -618,7 +618,7 @@ TEST(MaybeTest, ConstructionAndConversion) {
}
TEST(RandomAccessRangeTest, ConstructionAndPrinting) {
- auto square = [](int i) { return i * i; };
+ auto square = [](int64_t i) { return i * i; };
// the range is usable as a constant
const nanoarrow::internal::RandomAccessRange<decltype(square)>
squares{square, 4};
@@ -628,8 +628,8 @@ TEST(RandomAccessRangeTest, ConstructionAndPrinting) {
// since the range is usable as a constant, we can iterate through it
multiple times and
// it will work
- int sum = 0;
- for (int i : squares) {
+ int64_t sum = 0;
+ for (int64_t i : squares) {
sum += i;
}
EXPECT_EQ(sum, 1 + 4 + 9);