Lines Matching defs: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);
261 dest->strides[dest->ndim-1] == dest->itemsize &&
262 src->strides[src->ndim-1] == src->itemsize);
296 if (dest->ndim != src->ndim)
299 for (i = 0; i < dest->ndim; i++) {
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,
366 assert(ndim >= 1);
368 if (ndim == 1) {
380 copy_rec(shape+1, ndim-1, itemsize,
394 assert(dest->ndim == 1);
426 assert(dest->ndim > 0);
432 mem = PyMem_Malloc(dest->shape[dest->ndim-1] * dest->itemsize);
439 copy_rec(dest->shape, dest->ndim, dest->itemsize,
456 assert(view->ndim > 0);
458 view->strides[view->ndim-1] = view->itemsize;
459 for (i = view->ndim-2; i >= 0; i--)
469 assert(view->ndim > 0);
472 for (i = 1; i < view->ndim; i++)
477 or 'A' (Any). Assumptions: src has PyBUF_FULL information, src->ndim >= 1,
486 assert(src->ndim >= 1);
490 strides = PyMem_Malloc(src->ndim * (sizeof *src->strides));
544 if (src->ndim == 0) {
549 if (src->ndim == 1) {
555 for (i = 0; i < src->ndim; i++)
558 for (i = 0; i < src->ndim; i++)
575 for (i = 0; i < src->ndim; i++)
586 for (i = 0; i < view->ndim; i++)
600 switch (view->ndim) {
628 memory_alloc(int ndim)
633 PyObject_GC_NewVar(PyMemoryViewObject, &PyMemoryView_Type, 3*ndim);
641 mv->view.ndim = ndim;
643 mv->view.strides = mv->ob_array + ndim;
644 mv->view.suboffsets = mv->ob_array + 2 * ndim;
668 if (src->ndim > PyBUF_MAX_NDIM) {
675 mv = memory_alloc(src->ndim);
693 need to be initialized. Use 'ndim' instead of src->ndim to determine the
696 Assumption: ndim <= PyBUF_MAX_NDIM. */
699 int ndim)
707 assert(ndim <= PyBUF_MAX_NDIM);
709 mv = memory_alloc(ndim);
830 Assumptions: src has PyBUF_FULL_RO information, src->ndim > 0.
849 assert(src->ndim > 0);
866 mv = (PyMemoryViewObject *)mbuf_add_incomplete_view(mbuf, NULL, src->ndim);
877 for (i = 0; i < src->ndim; i++) {
1002 fb = PyMem_Malloc(sizeof *fb + 3 * src->ndim * (sizeof *fb->array));
1007 fb->view.ndim = src->ndim;
1009 fb->view.strides = fb->array + src->ndim;
1010 fb->view.suboffsets = fb->array + 2 * src->ndim;
1202 assert(view->ndim >= 1);
1203 assert(Py_SIZE(mv) == 3*view->ndim);
1205 assert(view->strides == mv->ob_array + view->ndim);
1206 assert(view->suboffsets == mv->ob_array + 2*view->ndim);
1241 view->ndim = 1;
1257 copy_shape(Py_ssize_t *shape, const PyObject *seq, Py_ssize_t ndim,
1263 for (i = 0; i < ndim; i++) {
1296 cast_to_ND(PyMemoryViewObject *mv, const PyObject *shape, int ndim)
1301 assert(view->ndim == 1); /* ndim from cast_to_1D() */
1302 assert(Py_SIZE(mv) == 3*(ndim==0?1:ndim)); /* ndim of result array */
1304 assert(view->strides == mv->ob_array + (ndim==0?1:ndim));
1307 view->ndim = ndim;
1308 if (view->ndim == 0) {
1314 len = copy_shape(view->shape, shape, ndim, view->itemsize);
1337 for (i = 0; i < view->ndim; i++)
1371 Py_ssize_t ndim = 1;
1380 if ((shape || self->view.ndim != 1) && zero_in_shape(self)) {
1387 ndim = PySequence_Fast_GET_SIZE(shape);
1388 if (ndim > PyBUF_MAX_NDIM) {
1394 if (self->view.ndim != 1 && ndim != 1) {
1402 mbuf_add_incomplete_view(self->mbuf, &self->view, ndim==0 ? 1 : (int)ndim);
1408 if (shape && cast_to_ND(mv, shape, (int)ndim) < 0)
1511 view->ndim = 1;
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,
2102 assert(ndim >= 1);
2106 if (ndim == 1)
2115 item = tolist_rec(self, xptr, ndim-1, shape+1,
2148 if (view->ndim == 0) {
2151 else if (view->ndim == 1) {
2157 return tolist_rec(self, view->buf, view->ndim, view->shape,
2322 if (nindices > view->ndim) {
2325 view->ndim, nindices);
2357 if (view->ndim == 0) {
2361 if (view->ndim == 1) {
2388 if (nindices < view->ndim) {
2478 if (view->ndim == 0) {
2554 if (view->ndim == 0) {
2569 if (1 < view->ndim) {
2583 if (PySlice_Check(key) && view->ndim == 1) {
2611 if (PyTuple_GET_SIZE(key) < view->ndim) {
2626 "to ndim = 1");
2638 return self->view.ndim == 0 ? 1 : self->view.shape[0];
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,
2810 assert(ndim >= 1);
2815 if (ndim == 1) {
2825 equal = cmp_rec(xp, xq, ndim-1, shape+1,
2901 if (vv->ndim == 0) {
2905 else if (vv->ndim == 1) {
2912 equal = cmp_rec(vv->buf, ww->buf, vv->ndim, vv->shape,
3060 return _IntTupleFromSsizet(self->view.ndim, self->view.shape);
3067 return _IntTupleFromSsizet(self->view.ndim, self->view.strides);
3074 return _IntTupleFromSsizet(self->view.ndim, self->view.suboffsets);
3088 return PyLong_FromLong(self->view.ndim);
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;