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

Function _putzero

numpy/core/src/multiarray/shape.c:315–347  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

313
314
315static void
316_putzero(char *optr, PyObject *zero, PyArray_Descr *dtype)
317{
318 if (!PyDataType_FLAGCHK(dtype, NPY_ITEM_REFCOUNT)) {
319 memset(optr, 0, dtype->elsize);
320 }
321 else if (PyDataType_HASFIELDS(dtype)) {
322 PyObject *key, *value, *title = NULL;
323 PyArray_Descr *new;
324 int offset;
325 Py_ssize_t pos = 0;
326 while (PyDict_Next(dtype->fields, &pos, &key, &value)) {
327 if (NPY_TITLE_KEY(key, value)) {
328 continue;
329 }
330 if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset, &title)) {
331 return;
332 }
333 _putzero(optr + offset, zero, new);
334 }
335 }
336 else {
337 npy_intp i;
338 npy_intp nsize = dtype->elsize / sizeof(zero);
339
340 for (i = 0; i < nsize; i++) {
341 Py_INCREF(zero);
342 memcpy(optr, &zero, sizeof(zero));
343 optr += sizeof(zero);
344 }
345 }
346 return;
347}
348
349
350/*

Callers 1

PyArray_ResizeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected