static PyObject *PyCMOR_grid(PyObject * self, PyObject * args) { signal(signal_to_catch, signal_handler); int ierr; PyObject *axes_obj, *lat_obj, *lon_obj, *blat_obj, *blon_obj; PyArrayObject *axes_arr = NULL, *lat_arr = NULL, *lon_arr = NULL, *blat_arr = NULL, *blon_arr = NULL; void *axes, *lon, *lat, *blon, *blat; char type; int nvert, ndims; int id; char itype; if (!PyArg_ParseTuple (args, "iOcOOiOO", &ndims, &axes_obj, &itype, &lat_obj, &lon_obj, &nvert, &blat_obj, &blon_obj)) return NULL; type = itype; axes_arr = (PyArrayObject *) PyArray_ContiguousFromObject(axes_obj, NPY_NOTYPE, 1, 0); axes = (void *)PyArray_DATA(axes_arr); if (lat_obj == Py_None) { lat = NULL; } else { lat_arr = (PyArrayObject *) PyArray_ContiguousFromObject(lat_obj, NPY_NOTYPE, 1, 0); lat = (void *)PyArray_DATA(lat_arr); } if (lon_obj == Py_None) { lon = NULL; } else { lon_arr = (PyArrayObject *) PyArray_ContiguousFromObject(lon_obj, NPY_NOTYPE, 1, 0); lon = (void *)PyArray_DATA(lon_arr); } if (blat_obj == Py_None) { blat = NULL; } else { blat_arr = (PyArrayObject *) PyArray_ContiguousFromObject(blat_obj, NPY_NOTYPE, 1, 0); blat = (void *)PyArray_DATA(blat_arr); } if (blon_obj == Py_None) { blon = NULL; } else { blon_arr = (PyArrayObject *) PyArray_ContiguousFromObject(blon_obj, NPY_NOTYPE, 1, 0); blon = (void *)PyArray_DATA(blon_arr); } ierr = cmor_grid(&id, ndims, axes, type, lat, lon, nvert, blat, blon); if (axes_arr != NULL) { Py_DECREF(axes_arr); } if (lat_arr != NULL) { Py_DECREF(lat_arr); } if (blat_arr != NULL) { Py_DECREF(blat_arr); } if (lon_arr != NULL) { Py_DECREF(lon_arr); } if (blon_arr != NULL) { Py_DECREF(blon_arr); } if (ierr != 0 || raise_exception) { raise_exception = 0; PyErr_Format(CMORError, exception_message, "grid"); return NULL; } return (Py_BuildValue("i", id)); }
static PyObject * PyCMOR_grid(PyObject *self,PyObject *args) { int ierr; PyObject *axes_obj,*lat_obj,*lon_obj,*blat_obj,*blon_obj; PyArrayObject *axes_arr=NULL,*lat_arr=NULL,*lon_arr=NULL,*blat_arr=NULL,*blon_arr=NULL; void *axes,*lon,*lat,*blon,*blat; char type; int nvert,ndims; int id; char itype; /* HUGE assumtion here is that the data is contiguous! */ if (!PyArg_ParseTuple(args,"iOcOOiOO",&ndims,&axes_obj,&itype,&lat_obj,&lon_obj,&nvert,&blat_obj,&blon_obj)) return NULL; type = itype; axes_arr = (PyArrayObject *) PyArray_ContiguousFromObject(axes_obj,PyArray_NOTYPE,1,0); axes = (void *) axes_arr->data; if (lat_obj == Py_None) { lat = NULL; } else { lat_arr = (PyArrayObject *) PyArray_ContiguousFromObject(lat_obj,PyArray_NOTYPE,1,0); lat = (void *)lat_arr->data; } if (lon_obj == Py_None) { lon = NULL; } else { lon_arr = (PyArrayObject *) PyArray_ContiguousFromObject(lon_obj,PyArray_NOTYPE,1,0); lon = (void *)lon_arr->data; } if (blat_obj == Py_None) { blat = NULL; } else { blat_arr = (PyArrayObject *) PyArray_ContiguousFromObject(blat_obj,PyArray_NOTYPE,1,0); blat = (void *)blat_arr->data; } if (blon_obj == Py_None) { blon = NULL; } else { blon_arr = (PyArrayObject *) PyArray_ContiguousFromObject(blon_obj,PyArray_NOTYPE,1,0); blon = (void *)blon_arr->data; } ierr = cmor_grid(&id,ndims,axes,type,lat,lon,nvert,blat,blon); if (axes_arr!=NULL) {Py_DECREF(axes_arr);} if (lat_arr!=NULL) {Py_DECREF(lat_arr);} if (blat_arr!=NULL) {Py_DECREF(blat_arr);} if (lon_arr!=NULL) {Py_DECREF(lon_arr);} if (blon_arr!=NULL) {Py_DECREF(blon_arr);} if (ierr != 0 ) return NULL; return Py_BuildValue("i",id); }