@@ -3,7 +3,6 @@ use super::{
33 primitive:: { new_simple_type, PyCSimple } ,
44} ;
55use crate :: builtins:: {
6- self ,
76 slice:: PySlice ,
87 PyBytes , PyInt , PyList , PyRange , PyStr , PyType , PyTypeRef ,
98} ;
@@ -14,7 +13,7 @@ use crate::stdlib::ctypes::basics::{
1413 default_from_param, generic_get_buffer, get_size, BorrowValue as BorrowValueCData ,
1514 BorrowValueMut , PyCData , PyCDataFunctions , PyCDataMethods , PyCDataSequenceMethods , RawBuffer ,
1615} ;
17- use crate :: { AsObject , Context , PyObjectRef , PyRef , PyResult , TryFromObject , VirtualMachine } ;
16+ use crate :: { AsObject , Py , PyObjectRef , PyRef , PyResult , TryFromObject , VirtualMachine } ;
1817use rustpython_vm:: object:: PyPayload ;
1918use num_traits:: Signed ;
2019use std:: convert:: TryInto ;
@@ -23,6 +22,7 @@ use widestring::WideCString;
2322use crate :: class:: StaticType ;
2423use crate :: convert:: IntoObject ;
2524use crate :: protocol:: { PyBuffer , PyIter } ;
25+ use crate :: types:: AsBuffer ;
2626
2727// TODO: make sure that this is correct wrt windows and unix wstr
2828fn slice_to_obj ( ty : & str , b : & [ u8 ] , vm : & VirtualMachine ) -> PyResult {
@@ -256,7 +256,7 @@ fn array_slice_setitem(
256256 //Right now I'm setting one
257257 let size = length. map_or ( Ok ( 1 ) , |v| usize:: try_from_object ( vm, v) ) ?;
258258
259- for ( i, curr) in PyIterable :: try_from_object ( vm, _range. into_object ( vm) ) ?. iter ( vm) ?. enumerate ( ) {
259+ for ( i, curr) in PyIter :: try_from_object ( vm, _range. into_object ( vm) ) ?. iter ( vm) ?. enumerate ( ) {
260260 let idx = fix_index ( isize:: try_from_object ( vm, curr?) ?, size, vm) ? as usize ;
261261 let offset = idx * size;
262262 let item = obj. get_item ( i, vm) ?;
@@ -286,6 +286,7 @@ fn fix_index(index: isize, length: usize, vm: &VirtualMachine) -> PyResult<isize
286286#[ pyclass( module = "_ctypes" , name = "PyCArrayType" , base = "PyType" ) ]
287287pub struct PyCArrayMeta { }
288288
289+ #[ derive( PyPayload ) ]
289290#[ pyclass(
290291 module = "_ctypes" ,
291292 name = "Array" ,
@@ -327,8 +328,8 @@ impl<'a> BorrowValueMut<'a> for PyCArray {
327328 }
328329}
329330
330- impl BufferProtocol for PyCArray {
331- fn get_buffer ( zelf : & PyRef < Self > , vm : & VirtualMachine ) -> PyResult < Box < dyn Buffer > > {
331+ impl AsBuffer for PyCArray {
332+ fn as_buffer ( zelf : & Py < Self > , vm : & VirtualMachine ) -> PyResult < PyBuffer > {
332333 generic_get_buffer :: < Self > ( zelf, vm)
333334 }
334335}
0 commit comments