PySequence: use usize everywhere

See #1667
This commit is contained in:
Georg Brandl 2021-08-17 08:54:31 +02:00
parent 2979fb8268
commit b55d62dd3e
1 changed files with 24 additions and 24 deletions

View File

@ -1,7 +1,8 @@
// Copyright (c) 2017-present PyO3 Project and Contributors
use crate::err::{self, PyDowncastError, PyErr, PyResult};
use crate::ffi::{self, Py_ssize_t};
use crate::ffi;
use crate::internal_tricks::get_ssize_index;
use crate::types::{PyAny, PyList, PyTuple};
use crate::AsPyPointer;
use crate::{FromPyObject, PyTryFrom, ToBorrowedObject};
@ -17,13 +18,12 @@ impl PySequence {
///
/// This is equivalent to the Python expression `len(self)`.
#[inline]
#[allow(clippy::len_without_is_empty)]
pub fn len(&self) -> PyResult<isize> {
pub fn len(&self) -> PyResult<usize> {
let v = unsafe { ffi::PySequence_Size(self.as_ptr()) };
if v == -1 {
Err(PyErr::api_call_failed(self.py()))
} else {
Ok(v as isize)
Ok(v as usize)
}
}
@ -52,15 +52,14 @@ impl PySequence {
/// Returns the result of repeating a sequence object `count` times.
///
/// This is equivalent to the Python expression `self * count`.
/// NB: Python accepts negative counts; it returns an empty Sequence.
#[inline]
pub fn repeat(&self, count: isize) -> PyResult<&PySequence> {
pub fn repeat(&self, count: usize) -> PyResult<&PySequence> {
unsafe {
let ptr = self
.py()
.from_owned_ptr_or_err::<PyAny>(ffi::PySequence_Repeat(
self.as_ptr(),
count as Py_ssize_t,
get_ssize_index(count),
))?;
Ok(&*(ptr as *const PyAny as *const PySequence))
}
@ -84,11 +83,10 @@ impl PySequence {
/// Repeats the sequence object `count` times and updates `self`.
///
/// This is equivalent to the Python statement `self *= count`.
/// NB: Python accepts negative counts; it empties the Sequence.
#[inline]
pub fn in_place_repeat(&self, count: isize) -> PyResult<()> {
pub fn in_place_repeat(&self, count: usize) -> PyResult<()> {
unsafe {
let ptr = ffi::PySequence_InPlaceRepeat(self.as_ptr(), count as Py_ssize_t);
let ptr = ffi::PySequence_InPlaceRepeat(self.as_ptr(), get_ssize_index(count));
if ptr.is_null() {
Err(PyErr::api_call_failed(self.py()))
} else {
@ -103,8 +101,10 @@ impl PySequence {
#[inline]
pub fn get_item(&self, index: usize) -> PyResult<&PyAny> {
unsafe {
self.py()
.from_owned_ptr_or_err(ffi::PySequence_GetItem(self.as_ptr(), index as Py_ssize_t))
self.py().from_owned_ptr_or_err(ffi::PySequence_GetItem(
self.as_ptr(),
get_ssize_index(index),
))
}
}
@ -112,12 +112,12 @@ impl PySequence {
///
/// This is equivalent to the Python expression `self[begin:end]`.
#[inline]
pub fn get_slice(&self, begin: isize, end: isize) -> PyResult<&PyAny> {
pub fn get_slice(&self, begin: usize, end: usize) -> PyResult<&PyAny> {
unsafe {
self.py().from_owned_ptr_or_err(ffi::PySequence_GetSlice(
self.as_ptr(),
begin as Py_ssize_t,
end as Py_ssize_t,
get_ssize_index(begin),
get_ssize_index(end),
))
}
}
@ -126,7 +126,7 @@ impl PySequence {
///
/// This is equivalent to the Python statement `self[i] = v`.
#[inline]
pub fn set_item<I>(&self, i: isize, item: I) -> PyResult<()>
pub fn set_item<I>(&self, i: usize, item: I) -> PyResult<()>
where
I: ToBorrowedObject,
{
@ -134,7 +134,7 @@ impl PySequence {
item.with_borrowed_ptr(self.py(), |item| {
err::error_on_minusone(
self.py(),
ffi::PySequence_SetItem(self.as_ptr(), i as Py_ssize_t, item),
ffi::PySequence_SetItem(self.as_ptr(), get_ssize_index(i), item),
)
})
}
@ -144,11 +144,11 @@ impl PySequence {
///
/// This is equivalent to the Python statement `del self[i]`.
#[inline]
pub fn del_item(&self, i: isize) -> PyResult<()> {
pub fn del_item(&self, i: usize) -> PyResult<()> {
unsafe {
err::error_on_minusone(
self.py(),
ffi::PySequence_DelItem(self.as_ptr(), i as Py_ssize_t),
ffi::PySequence_DelItem(self.as_ptr(), get_ssize_index(i)),
)
}
}
@ -157,14 +157,14 @@ impl PySequence {
///
/// This is equivalent to the Python statement `self[i1:i2] = v`.
#[inline]
pub fn set_slice(&self, i1: isize, i2: isize, v: &PyAny) -> PyResult<()> {
pub fn set_slice(&self, i1: usize, i2: usize, v: &PyAny) -> PyResult<()> {
unsafe {
err::error_on_minusone(
self.py(),
ffi::PySequence_SetSlice(
self.as_ptr(),
i1 as Py_ssize_t,
i2 as Py_ssize_t,
get_ssize_index(i1),
get_ssize_index(i2),
v.as_ptr(),
),
)
@ -175,11 +175,11 @@ impl PySequence {
///
/// This is equivalent to the Python statement `del self[i1:i2]`.
#[inline]
pub fn del_slice(&self, i1: isize, i2: isize) -> PyResult<()> {
pub fn del_slice(&self, i1: usize, i2: usize) -> PyResult<()> {
unsafe {
err::error_on_minusone(
self.py(),
ffi::PySequence_DelSlice(self.as_ptr(), i1 as Py_ssize_t, i2 as Py_ssize_t),
ffi::PySequence_DelSlice(self.as_ptr(), get_ssize_index(i1), get_ssize_index(i2)),
)
}
}