diff options
author | Mark Wiebe <mwwiebe@gmail.com> | 2011-01-07 20:24:25 -0800 |
---|---|---|
committer | Mark Wiebe <mwwiebe@gmail.com> | 2011-01-09 01:55:04 -0800 |
commit | 96182f80edb4b7fc251f542317642f49027a5126 (patch) | |
tree | a91dfbd33110dcac6e093ea21eda4aa4da9be33f | |
parent | 595d4530fb7c1957f173da1da1a00ea8714c1832 (diff) | |
download | numpy-96182f80edb4b7fc251f542317642f49027a5126.tar.gz |
ENH: iter: Add access functions for some buffering properties
-rw-r--r-- | numpy/core/code_generators/numpy_api.py | 21 | ||||
-rw-r--r-- | numpy/core/src/multiarray/new_iterator.c.src | 38 |
2 files changed, 50 insertions, 9 deletions
diff --git a/numpy/core/code_generators/numpy_api.py b/numpy/core/code_generators/numpy_api.py index a5d6def23..b6641fc6c 100644 --- a/numpy/core/code_generators/numpy_api.py +++ b/numpy/core/code_generators/numpy_api.py @@ -279,15 +279,18 @@ multiarray_funcs_api = { 'NpyIter_GotoCoords': 245, 'NpyIter_RemoveCoords': 246, 'NpyIter_HasIndex': 247, - 'NpyIter_GetIndexPtr': 248, - 'NpyIter_GotoIndex': 249, - 'NpyIter_GetDataPtrArray': 250, - 'NpyIter_GetDescrArray': 251, - 'NpyIter_GetObjectArray': 252, - 'NpyIter_GetIterView': 253, - 'NpyIter_GetReadFlags': 254, - 'NpyIter_GetWriteFlags': 255, - 'NpyIter_DebugPrint': 256, + 'NpyIter_IsBuffered': 248, + 'NpyIter_IsGrowInner': 249, + 'NpyIter_GetBufferSize': 250, + 'NpyIter_GetIndexPtr': 251, + 'NpyIter_GotoIndex': 252, + 'NpyIter_GetDataPtrArray': 253, + 'NpyIter_GetDescrArray': 254, + 'NpyIter_GetObjectArray': 255, + 'NpyIter_GetIterView': 256, + 'NpyIter_GetReadFlags': 257, + 'NpyIter_GetWriteFlags': 258, + 'NpyIter_DebugPrint': 259, } ufunc_types_api = { diff --git a/numpy/core/src/multiarray/new_iterator.c.src b/numpy/core/src/multiarray/new_iterator.c.src index cc6a81be0..221ab615d 100644 --- a/numpy/core/src/multiarray/new_iterator.c.src +++ b/numpy/core/src/multiarray/new_iterator.c.src @@ -1748,6 +1748,44 @@ NpyIter_GetIterSize(NpyIter *iter) } /*NUMPY_API + * Whether the iterator is buffered + */ +NPY_NO_EXPORT int +NpyIter_IsBuffered(NpyIter *iter) +{ + return (NIT_ITFLAGS(iter)&NPY_ITFLAG_BUFFER) != 0; +} + +/*NUMPY_API + * Whether the inner loop can grow if buffering is unneeded + */ +NPY_NO_EXPORT int +NpyIter_IsGrowInner(NpyIter *iter) +{ + return (NIT_ITFLAGS(iter)&NPY_ITFLAG_GROWINNER) != 0; +} + +/*NUMPY_API + * Gets the size of the buffer, or 0 if buffering is not enabled + */ +NPY_NO_EXPORT npy_intp +NpyIter_GetBufferSize(NpyIter *iter) +{ + npy_uint32 itflags = NIT_ITFLAGS(iter); + npy_intp ndim = NIT_NDIM(iter); + npy_intp niter = NIT_NITER(iter); + + if (itflags&NPY_ITFLAG_BUFFER) { + NpyIter_BufferData *bufferdata = NIT_BUFFERDATA(iter); + return NBF_BUFFERSIZE(bufferdata); + } + else { + return 0; + } + +} + +/*NUMPY_API * Gets the range of iteration indices being iterated */ NPY_NO_EXPORT void |