/* The struct is declared here but it shouldn't be considered public. Don't access those fields directly, use the functions instead! */ /* this is wrong, PyMemoryViewObject should use PyObject_VAR_HEAD, and use ob_data[1] to hold the shapes, strides, and offsets for the view. Then we should use specialized allocators (that break the cpyext model) to allocate ob_data = malloc(sizeof(Py_ssize_t) * view.ndims * 3) */ typedef struct { PyObject_HEAD Py_buffer view; } PyMemoryViewObject;