Skip to content

Commit 89c1026

Browse files
committed
pystrides_adaptor now holds signed integers
1 parent 96cf95d commit 89c1026

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

include/xtensor-python/pyarray.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ namespace xt
328328
using const_reference = typename base_type::const_reference;
329329
using pointer = typename base_type::pointer;
330330
using size_type = typename base_type::size_type;
331+
using difference_type = typename base_type::difference_type;
331332
using shape_type = typename base_type::shape_type;
332333
using strides_type = typename base_type::strides_type;
333334
using backstrides_type = typename base_type::backstrides_type;
@@ -745,7 +746,7 @@ namespace xt
745746
{
746747
m_shape = inner_shape_type(reinterpret_cast<size_type*>(PyArray_SHAPE(this->python_array())),
747748
static_cast<size_type>(PyArray_NDIM(this->python_array())));
748-
m_strides = inner_strides_type(reinterpret_cast<size_type*>(PyArray_STRIDES(this->python_array())),
749+
m_strides = inner_strides_type(reinterpret_cast<difference_type*>(PyArray_STRIDES(this->python_array())),
749750
static_cast<size_type>(PyArray_NDIM(this->python_array())));
750751

751752
if (L != layout_type::dynamic && !do_strides_match(m_shape, m_strides, L))

include/xtensor-python/pystrides_adaptor.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace xt
2727
{
2828
public:
2929

30-
using value_type = std::size_t;
30+
using value_type = std::ptrdiff_t;
3131
using const_reference = value_type;
3232
using const_pointer = const value_type*;
3333
using size_type = std::size_t;

test/test_pyarray.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "xtensor-python/pyarray.hpp"
1212

1313
#include "xtensor/xarray.hpp"
14+
#include "xtensor/xview.hpp"
1415

1516
#include "test_common.hpp"
1617

@@ -241,4 +242,11 @@ namespace xt
241242
EXPECT_TRUE(std::equal(sc2.begin(), sc2.end(), a.shape().begin()) && a.shape().size() == 1);
242243
EXPECT_EQ(ptr, a.data());
243244
}
245+
246+
TEST(pyarray, view)
247+
{
248+
xt::pyarray<int> arr = xt::zeros<int>({ 10 });
249+
auto v = xt::view(arr, xt::all());
250+
EXPECT_EQ(v(0), 0.);
251+
}
244252
}

test/test_pytensor.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "xtensor-python/pytensor.hpp"
1212

1313
#include "xtensor/xtensor.hpp"
14+
#include "xtensor/xview.hpp"
1415

1516
#include "test_common.hpp"
1617

@@ -231,4 +232,11 @@ namespace xt
231232
// and the second element is `0`.
232233
EXPECT_THROW(a.reshape({6, 5}), std::runtime_error);
233234
}
235+
236+
TEST(pytensor, view)
237+
{
238+
xt::pytensor<int, 1> arr = xt::zeros<int>({ 10 });
239+
auto v = xt::view(arr, xt::all());
240+
EXPECT_EQ(v(0), 0.);
241+
}
234242
}

0 commit comments

Comments
 (0)