MCPcopy Create free account
hub / github.com/numpy/numpy / NpyIter_GetIterIndex

Function NpyIter_GetIterIndex

numpy/core/src/multiarray/nditer_api.c:691–723  ·  view source on GitHub ↗

NUMPY_API * Gets the current iteration index */

Source from the content-addressed store, hash-verified

689 * Gets the current iteration index
690 */
691NPY_NO_EXPORT npy_intp
692NpyIter_GetIterIndex(NpyIter *iter)
693{
694 npy_uint32 itflags = NIT_ITFLAGS(iter);
695 int idim, ndim = NIT_NDIM(iter);
696 int nop = NIT_NOP(iter);
697
698 /* iterindex is only used if NPY_ITER_RANGED or NPY_ITER_BUFFERED was set */
699 if (itflags&(NPY_ITFLAG_RANGE|NPY_ITFLAG_BUFFER)) {
700 return NIT_ITERINDEX(iter);
701 }
702 else {
703 npy_intp iterindex;
704 NpyIter_AxisData *axisdata;
705 npy_intp sizeof_axisdata;
706
707 iterindex = 0;
708 if (ndim == 0) {
709 return 0;
710 }
711 sizeof_axisdata = NIT_AXISDATA_SIZEOF(itflags, ndim, nop);
712 axisdata = NIT_INDEX_AXISDATA(NIT_AXISDATA(iter), ndim-1);
713
714 for (idim = ndim-2; idim >= 0; --idim) {
715 iterindex += NAD_INDEX(axisdata);
716 NIT_ADVANCE_AXISDATA(axisdata, -1);
717 iterindex *= NAD_SHAPE(axisdata);
718 }
719 iterindex += NAD_INDEX(axisdata);
720
721 return iterindex;
722 }
723}
724
725/*NUMPY_API
726 * Whether the buffer allocation is being delayed

Callers 1

npyiter_iterindex_getFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected