(
&self,
value: PyObjectRef,
start: OptionalArg<isize>,
stop: OptionalArg<isize>,
vm: &VirtualMachine,
)
| 769 | |
| 770 | #[pymethod] |
| 771 | fn index( |
| 772 | &self, |
| 773 | value: PyObjectRef, |
| 774 | start: OptionalArg<isize>, |
| 775 | stop: OptionalArg<isize>, |
| 776 | vm: &VirtualMachine, |
| 777 | ) -> PyResult<usize> { |
| 778 | self.try_not_released(vm)?; |
| 779 | if self.desc.ndim() != 1 { |
| 780 | return Err( |
| 781 | vm.new_not_implemented_error("multi-dimensional sub-views are not implemented") |
| 782 | ); |
| 783 | } |
| 784 | let len = self.desc.dim_desc[0].0; |
| 785 | let start = start.unwrap_or(0); |
| 786 | let stop = stop.unwrap_or(len as isize); |
| 787 | |
| 788 | let start = if start < 0 { |
| 789 | (start + len as isize).max(0) as usize |
| 790 | } else { |
| 791 | (start as usize).min(len) |
| 792 | }; |
| 793 | let stop = if stop < 0 { |
| 794 | (stop + len as isize).max(0) as usize |
| 795 | } else { |
| 796 | (stop as usize).min(len) |
| 797 | }; |
| 798 | |
| 799 | for i in start..stop { |
| 800 | let item = self.getitem_by_idx(i as isize, vm)?; |
| 801 | if vm.bool_eq(&item, &value)? { |
| 802 | return Ok(i); |
| 803 | } |
| 804 | } |
| 805 | Err(vm.new_value_error("memoryview.index(x): x not in memoryview")) |
| 806 | } |
| 807 | |
| 808 | fn cast_to_1d(&self, format: PyUtf8StrRef, vm: &VirtualMachine) -> PyResult<Self> { |
| 809 | let format_str = format.as_str(); |
nothing calls this directly
no test coverage detected