示例#1
0
文件: _cmormodule.c 项目: PCMDI/cmor
static PyObject *PyCMOR_close(PyObject * self, PyObject * args)
{
    signal(signal_to_catch, signal_handler);
    PyObject *var;
    int varid, ierr;
    int dofile = 0;
    int dopreserve = 0;
    int preserved_id;
    char file_name[CMOR_MAX_STRING];

    if (!PyArg_ParseTuple(args, "Oii", &var, &dofile, &dopreserve)) {
        return NULL;
    }

    if (var == Py_None) {
        ierr = cmor_close();
        if (ierr != 0) {
            return NULL;
        } else {
            return (Py_BuildValue("i", ierr));
        }
    } else {
#if PY_MAJOR_VERSION >= 3
        varid = (int)PyLong_AsLong(var);
#else
        varid = (int)PyInt_AsLong(var);
#endif

        if (dopreserve == 1) {
            if (dofile == 1) {
                ierr = cmor_close_variable(varid, &file_name[0], &preserved_id);
            } else {
                ierr = cmor_close_variable(varid, NULL, &preserved_id);
            }
        } else {
            if (dofile == 1) {
                ierr = cmor_close_variable(varid, &file_name[0], NULL);
            } else {
                ierr = cmor_close_variable(varid, NULL, NULL);
            }
        }
    }

    if (ierr != 0 || raise_exception) {
        raise_exception = 0;
        PyErr_Format(CMORError, exception_message, "close");
        return NULL;
    } else {
        if (dofile == 1) {
            return (Py_BuildValue("s", file_name));
        } else {
            return (Py_BuildValue("i", ierr));
        }
    }
}
示例#2
0
文件: _cmormodule.c 项目: AZed/uvcdat
static PyObject *
  PyCMOR_close(PyObject *self,PyObject *args)
{
  PyObject *var;
  int varid,ierr;
  int dofile=0;
  int dopreserve=0;
  int preserved_id;
  char file_name[CMOR_MAX_STRING];
  if (!PyArg_ParseTuple(args,"Oii",&var,&dofile,&dopreserve)) {
    return NULL;
  }
  
  if (var == Py_None ) {
    ierr = cmor_close();
    if (ierr!=0) {
      return NULL;
    }
    else {
      return Py_BuildValue("i",ierr);
    }
  }
  else {
    varid = (int)PyInt_AsLong(var);

    if (dopreserve==1) {
      if (dofile==1) { 
	ierr = cmor_close_variable(varid,&file_name[0],&preserved_id);
      }
      else {
	ierr = cmor_close_variable(varid,NULL,&preserved_id);
      }
    }
    else {
      if (dofile==1) { 
	ierr = cmor_close_variable(varid,&file_name[0],NULL);
      }
      else {
	ierr = cmor_close_variable(varid,NULL,NULL);
      }
    }
  }

  if (ierr!=0) {
    return NULL;
  }
  else {
    if (dofile==1) {
      return Py_BuildValue("s",file_name);
    }
    else {
      return Py_BuildValue("i",ierr);
    }
  }
}