Loading native/jni/src/utils/int_array_view.h +8 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ #ifndef LATINIME_INT_ARRAY_VIEW_H #define LATINIME_INT_ARRAY_VIEW_H #include <array> #include <cstdint> #include <cstdlib> #include <cstring> #include <vector> #include "defines.h" Loading Loading @@ -103,6 +104,12 @@ class IntArrayView { return IntArrayView(mPtr + n, mSize - n); } template <size_t N> void copyToArray(std::array<int, N> *const buffer, const size_t offset) const { ASSERT(mSize + offset <= N); memmove(buffer->data() + offset, mPtr, sizeof(int) * mSize); } private: DISALLOW_ASSIGNMENT_OPERATOR(IntArrayView); Loading native/jni/tests/utils/int_array_view_test.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <gtest/gtest.h> #include <array> #include <vector> namespace latinime { Loading Loading @@ -89,5 +90,26 @@ TEST(IntArrayViewTest, TestSkip) { } } TEST(IntArrayViewTest, TestCopyToArray) { // "{{" to suppress warning. std::array<int, 7> buffer = {{10, 20, 30, 40, 50, 60, 70}}; const std::vector<int> intVector = {3, 2, 1, 0, -1, -2}; IntArrayView intArrayView(intVector); intArrayView.limit(0).copyToArray(&buffer, 0); EXPECT_EQ(10, buffer[0]); EXPECT_EQ(20, buffer[1]); intArrayView.limit(1).copyToArray(&buffer, 0); EXPECT_EQ(intVector[0], buffer[0]); EXPECT_EQ(20, buffer[1]); intArrayView.limit(1).copyToArray(&buffer, 1); EXPECT_EQ(intVector[0], buffer[0]); EXPECT_EQ(intVector[0], buffer[1]); intArrayView.copyToArray(&buffer, 0); for (size_t i = 0; i < intArrayView.size(); ++i) { EXPECT_EQ(intVector[i], buffer[i]); } EXPECT_EQ(70, buffer[6]); } } // namespace } // namespace latinime Loading
native/jni/src/utils/int_array_view.h +8 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ #ifndef LATINIME_INT_ARRAY_VIEW_H #define LATINIME_INT_ARRAY_VIEW_H #include <array> #include <cstdint> #include <cstdlib> #include <cstring> #include <vector> #include "defines.h" Loading Loading @@ -103,6 +104,12 @@ class IntArrayView { return IntArrayView(mPtr + n, mSize - n); } template <size_t N> void copyToArray(std::array<int, N> *const buffer, const size_t offset) const { ASSERT(mSize + offset <= N); memmove(buffer->data() + offset, mPtr, sizeof(int) * mSize); } private: DISALLOW_ASSIGNMENT_OPERATOR(IntArrayView); Loading
native/jni/tests/utils/int_array_view_test.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #include <gtest/gtest.h> #include <array> #include <vector> namespace latinime { Loading Loading @@ -89,5 +90,26 @@ TEST(IntArrayViewTest, TestSkip) { } } TEST(IntArrayViewTest, TestCopyToArray) { // "{{" to suppress warning. std::array<int, 7> buffer = {{10, 20, 30, 40, 50, 60, 70}}; const std::vector<int> intVector = {3, 2, 1, 0, -1, -2}; IntArrayView intArrayView(intVector); intArrayView.limit(0).copyToArray(&buffer, 0); EXPECT_EQ(10, buffer[0]); EXPECT_EQ(20, buffer[1]); intArrayView.limit(1).copyToArray(&buffer, 0); EXPECT_EQ(intVector[0], buffer[0]); EXPECT_EQ(20, buffer[1]); intArrayView.limit(1).copyToArray(&buffer, 1); EXPECT_EQ(intVector[0], buffer[0]); EXPECT_EQ(intVector[0], buffer[1]); intArrayView.copyToArray(&buffer, 0); for (size_t i = 0; i < intArrayView.size(); ++i) { EXPECT_EQ(intVector[i], buffer[i]); } EXPECT_EQ(70, buffer[6]); } } // namespace } // namespace latinime