/* Initialize a line buffer */ int NI_InitLineBuffer(PyArrayObject *array, int axis, npy_intp size1, npy_intp size2, npy_intp buffer_lines, double *buffer_data, NI_ExtendMode extend_mode, double extend_value, NI_LineBuffer *buffer) { npy_intp line_length = 0, array_lines = 0, size; int ii; size = 1; for(ii = 0; ii < array->nd; ii++) size *= array->dimensions[ii]; /* check if the buffer is big enough: */ if (size > 0 && buffer_lines < 1) { PyErr_SetString(PyExc_RuntimeError, "buffer too small"); return 0; } /* Initialize a line iterator to move over the array: */ if (!NI_InitPointIterator(array, &(buffer->iterator))) return 0; if (!NI_LineIterator(&(buffer->iterator), axis)) return 0; line_length = array->nd > 0 ? array->dimensions[axis] : 1; if (line_length > 0) array_lines = line_length > 0 ? size / line_length : 1; /* initialize the buffer structure: */ buffer->array_data = (void *)PyArray_DATA(array); buffer->buffer_data = buffer_data; buffer->buffer_lines = buffer_lines; buffer->array_type = NI_CanonicalType(PyArray_DESCR(array)->type_num); buffer->array_lines = array_lines; buffer->next_line = 0; buffer->size1 = size1; buffer->size2 = size2; buffer->line_length = line_length; buffer->line_stride = array->nd > 0 ? array->strides[axis] : 0; buffer->extend_mode = extend_mode; buffer->extend_value = extend_value; return 1; }
/* Initialize a line buffer */ int NI_InitLineBuffer(PyArrayObject *array, int axis, npy_intp size1, npy_intp size2, npy_intp buffer_lines, double *buffer_data, NI_ExtendMode extend_mode, double extend_value, NI_LineBuffer *buffer) { npy_intp line_length = 0, array_lines = 0, size; size = PyArray_SIZE(array); /* check if the buffer is big enough: */ if (size > 0 && buffer_lines < 1) { PyErr_SetString(PyExc_RuntimeError, "buffer too small"); return 0; } /* Initialize a line iterator to move over the array: */ if (!NI_InitPointIterator(array, &(buffer->iterator))) return 0; if (!NI_LineIterator(&(buffer->iterator), axis)) return 0; line_length = PyArray_NDIM(array) > 0 ? PyArray_DIM(array, axis) : 1; if (line_length > 0) { array_lines = line_length > 0 ? size / line_length : 1; } /* initialize the buffer structure: */ buffer->array_data = (void *)PyArray_DATA(array); buffer->buffer_data = buffer_data; buffer->buffer_lines = buffer_lines; buffer->array_type = NI_CanonicalType(PyArray_TYPE(array)); buffer->array_lines = array_lines; buffer->next_line = 0; buffer->size1 = size1; buffer->size2 = size2; buffer->line_length = line_length; buffer->line_stride = PyArray_NDIM(array) > 0 ? PyArray_STRIDE(array, axis) : 0; buffer->extend_mode = extend_mode; buffer->extend_value = extend_value; return 1; }