예제 #1
0
static PyObject*
PyDistLookup___deepcopy__(
    PyDistLookup* self,
    PyObject* memo,
    /*@unused@*/ PyObject* kwds) {

  PyDistLookup* copy;
  PyObject*     obj_copy;
  int           i = 0;

  copy = (PyDistLookup*)PyDistLookup_new(&PyDistLookupType, NULL, NULL);
  if (copy == NULL) {
    return NULL;
  }

  for (i = 0; i < 2; ++i) {
    copy->x.naxis[i] = self->x.naxis[i];
    copy->x.crpix[i] = self->x.crpix[i];
    copy->x.crval[i] = self->x.crval[i];
    copy->x.cdelt[i] = self->x.cdelt[i];
  }

  if (self->py_data) {
    obj_copy = get_deepcopy((PyObject*)self->py_data, memo);
    if (obj_copy == NULL) {
      Py_DECREF(copy);
      return NULL;
    }
    PyDistLookup_set_data(copy, (PyObject*)obj_copy, NULL);
    Py_DECREF(obj_copy);
  }

  return (PyObject*)copy;
}
예제 #2
0
파일: astropy_wcs.c 프로젝트: phn/astropy
static int
_deepcopy_helper(
    Wcs* copy,
    PyObject* item,
    int (*function)(Wcs*, PyObject*, void*),
    PyObject* memo) {
    PyObject* obj_copy;

    if (item) {
        obj_copy = get_deepcopy(item, memo);
        if (obj_copy == NULL) {
            return 1;
        }

        if (function(copy, obj_copy, NULL)) {
            Py_DECREF(obj_copy);
            return 1;
        }

        Py_DECREF(obj_copy);
    }

    return 0;
}