Lines Matching full:ndim

223 /* Fast contiguity test. Caller must ensure suboffsets==NULL and ndim==1. */
243 with the same logical structure: format, itemsize, ndim and shape
244 are identical, with ndim > 0.
250 /* Assumptions: ndim >= 1. The macro tests for a corner case that should
253 (view->suboffsets && view->suboffsets[dest->ndim-1] >= 0)
258 assert(dest->ndim > 0 && src->ndim > 0); in last_dim_is_contiguous()
261 dest->strides[dest->ndim-1] == dest->itemsize && in last_dim_is_contiguous()
262 src->strides[src->ndim-1] == src->itemsize); in last_dim_is_contiguous()
296 if (dest->ndim != src->ndim) in equiv_shape()
299 for (i = 0; i < dest->ndim; i++) { in equiv_shape()
326 copied with very little overhead. Assumptions: ndim == 1, mem == NULL or
357 have the same ndim, shape and itemsize. */
359 copy_rec(const Py_ssize_t *shape, Py_ssize_t ndim, Py_ssize_t itemsize, in copy_rec() argument
366 assert(ndim >= 1); in copy_rec()
368 if (ndim == 1) { in copy_rec()
380 copy_rec(shape+1, ndim-1, itemsize, in copy_rec()
394 assert(dest->ndim == 1); in copy_single()
426 assert(dest->ndim > 0); in copy_buffer()
432 mem = PyMem_Malloc(dest->shape[dest->ndim-1] * dest->itemsize); in copy_buffer()
439 copy_rec(dest->shape, dest->ndim, dest->itemsize, in copy_buffer()
456 assert(view->ndim > 0); in init_strides_from_shape()
458 view->strides[view->ndim-1] = view->itemsize; in init_strides_from_shape()
459 for (i = view->ndim-2; i >= 0; i--) in init_strides_from_shape()
469 assert(view->ndim > 0); in init_fortran_strides_from_shape()
472 for (i = 1; i < view->ndim; i++) in init_fortran_strides_from_shape()
477 or 'A' (Any). Assumptions: src has PyBUF_FULL information, src->ndim >= 1,
486 assert(src->ndim >= 1); in buffer_to_contiguous()
490 strides = PyMem_Malloc(src->ndim * (sizeof *src->strides)); in buffer_to_contiguous()
544 if (src->ndim == 0) { in init_shape_strides()
549 if (src->ndim == 1) { in init_shape_strides()
555 for (i = 0; i < src->ndim; i++) in init_shape_strides()
558 for (i = 0; i < src->ndim; i++) in init_shape_strides()
575 for (i = 0; i < src->ndim; i++) in init_suboffsets()
586 for (i = 0; i < view->ndim; i++) in init_len()
600 switch (view->ndim) { in init_flags()
628 memory_alloc(int ndim) in memory_alloc() argument
633 PyObject_GC_NewVar(PyMemoryViewObject, &PyMemoryView_Type, 3*ndim); in memory_alloc()
641 mv->view.ndim = ndim; in memory_alloc()
643 mv->view.strides = mv->ob_array + ndim; in memory_alloc()
644 mv->view.suboffsets = mv->ob_array + 2 * ndim; in memory_alloc()
668 if (src->ndim > PyBUF_MAX_NDIM) { in mbuf_add_view()
675 mv = memory_alloc(src->ndim); in mbuf_add_view()
693 need to be initialized. Use 'ndim' instead of src->ndim to determine the
696 Assumption: ndim <= PyBUF_MAX_NDIM. */
699 int ndim) in mbuf_add_incomplete_view() argument
707 assert(ndim <= PyBUF_MAX_NDIM); in mbuf_add_incomplete_view()
709 mv = memory_alloc(ndim); in mbuf_add_incomplete_view()
830 Assumptions: src has PyBUF_FULL_RO information, src->ndim > 0.
849 assert(src->ndim > 0); in memory_from_contiguous_copy()
866 mv = (PyMemoryViewObject *)mbuf_add_incomplete_view(mbuf, NULL, src->ndim); in memory_from_contiguous_copy()
877 for (i = 0; i < src->ndim; i++) { in memory_from_contiguous_copy()
1002 fb = PyMem_Malloc(sizeof *fb + 3 * src->ndim * (sizeof *fb->array)); in PyBuffer_ToContiguous()
1007 fb->view.ndim = src->ndim; in PyBuffer_ToContiguous()
1009 fb->view.strides = fb->array + src->ndim; in PyBuffer_ToContiguous()
1010 fb->view.suboffsets = fb->array + 2 * src->ndim; in PyBuffer_ToContiguous()
1202 assert(view->ndim >= 1); in cast_to_1D()
1203 assert(Py_SIZE(mv) == 3*view->ndim); in cast_to_1D()
1205 assert(view->strides == mv->ob_array + view->ndim); in cast_to_1D()
1206 assert(view->suboffsets == mv->ob_array + 2*view->ndim); in cast_to_1D()
1241 view->ndim = 1; in cast_to_1D()
1257 copy_shape(Py_ssize_t *shape, const PyObject *seq, Py_ssize_t ndim, in copy_shape() argument
1263 for (i = 0; i < ndim; i++) { in copy_shape()
1296 cast_to_ND(PyMemoryViewObject *mv, const PyObject *shape, int ndim) in cast_to_ND() argument
1301 assert(view->ndim == 1); /* ndim from cast_to_1D() */ in cast_to_ND()
1302 assert(Py_SIZE(mv) == 3*(ndim==0?1:ndim)); /* ndim of result array */ in cast_to_ND()
1304 assert(view->strides == mv->ob_array + (ndim==0?1:ndim)); in cast_to_ND()
1307 view->ndim = ndim; in cast_to_ND()
1308 if (view->ndim == 0) { in cast_to_ND()
1314 len = copy_shape(view->shape, shape, ndim, view->itemsize); in cast_to_ND()
1337 for (i = 0; i < view->ndim; i++) in zero_in_shape()
1371 Py_ssize_t ndim = 1; in memoryview_cast_impl() local
1380 if ((shape || self->view.ndim != 1) && zero_in_shape(self)) { in memoryview_cast_impl()
1387 ndim = PySequence_Fast_GET_SIZE(shape); in memoryview_cast_impl()
1388 if (ndim > PyBUF_MAX_NDIM) { in memoryview_cast_impl()
1394 if (self->view.ndim != 1 && ndim != 1) { in memoryview_cast_impl()
1402 mbuf_add_incomplete_view(self->mbuf, &self->view, ndim==0 ? 1 : (int)ndim); in memoryview_cast_impl()
1408 if (shape && cast_to_ND(mv, shape, (int)ndim) < 0) in memoryview_cast_impl()
1511 view->ndim = 1; in memory_getbuf()
2066 /* Base case for multi-dimensional unpacking. Assumption: ndim == 1. */
2093 Assumption: ndim >= 1. */
2095 tolist_rec(PyMemoryViewObject *self, const char *ptr, Py_ssize_t ndim, const Py_ssize_t *shape, in tolist_rec() argument
2102 assert(ndim >= 1); in tolist_rec()
2106 if (ndim == 1) in tolist_rec()
2115 item = tolist_rec(self, xptr, ndim-1, shape+1, in tolist_rec()
2148 if (view->ndim == 0) { in memoryview_tolist_impl()
2151 else if (view->ndim == 1) { in memoryview_tolist_impl()
2157 return tolist_rec(self, view->buf, view->ndim, view->shape, in memoryview_tolist_impl()
2322 if (nindices > view->ndim) { in ptr_from_tuple()
2325 view->ndim, nindices); in ptr_from_tuple()
2357 if (view->ndim == 0) { in memory_item()
2361 if (view->ndim == 1) { in memory_item()
2388 if (nindices < view->ndim) { in memory_item_multi()
2478 if (view->ndim == 0) { in memory_subscript()
2554 if (view->ndim == 0) { in memory_ass_sub()
2569 if (1 < view->ndim) { in memory_ass_sub()
2583 if (PySlice_Check(key) && view->ndim == 1) { in memory_ass_sub()
2611 if (PyTuple_GET_SIZE(key) < view->ndim) { in memory_ass_sub()
2626 "to ndim = 1"); in memory_ass_sub()
2638 return self->view.ndim == 0 ? 1 : self->view.shape[0]; in memory_length()
2777 /* Base case for recursive array comparisons. Assumption: ndim == 1. */
2799 logical structure. Assumption: ndim >= 1. */
2802 Py_ssize_t ndim, const Py_ssize_t *shape, in cmp_rec() argument
2810 assert(ndim >= 1); in cmp_rec()
2815 if (ndim == 1) { in cmp_rec()
2825 equal = cmp_rec(xp, xq, ndim-1, shape+1, in cmp_rec()
2901 if (vv->ndim == 0) { in memory_richcompare()
2905 else if (vv->ndim == 1) { in memory_richcompare()
2912 equal = cmp_rec(vv->buf, ww->buf, vv->ndim, vv->shape, in memory_richcompare()
3060 return _IntTupleFromSsizet(self->view.ndim, self->view.shape); in memory_shape_get()
3067 return _IntTupleFromSsizet(self->view.ndim, self->view.strides); in memory_strides_get()
3074 return _IntTupleFromSsizet(self->view.ndim, self->view.suboffsets); in memory_suboffsets_get()
3088 return PyLong_FromLong(self->view.ndim); in memory_ndim_get()
3128 "A tuple of ndim integers giving the shape of the memory\n"
3131 "A tuple of ndim integers giving the size in bytes to access\n"
3149 {"ndim", (getter)memory_ndim_get, NULL, memory_ndim_doc},
3236 int ndims = obj->view.ndim; in memory_iter()