From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> Replace use of the PyInt_FromLong and PyLong_FromLongLong with libvirt_{int,uint,longlong,ulonglong}Wrap helpers. This isolates the need for Python3 specific code in one place. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- libvirt-lxc-override.c | 2 +- libvirt-override.c | 104 ++++++++++++++++++++++++------------------------- typewrappers.c | 8 ++++ typewrappers.h | 1 + 4 files changed, 62 insertions(+), 53 deletions(-) diff --git a/libvirt-lxc-override.c b/libvirt-lxc-override.c index 60b41d8..ba97551 100644 --- a/libvirt-lxc-override.c +++ b/libvirt-lxc-override.c @@ -89,7 +89,7 @@ libvirt_lxc_virDomainLxcOpenNamespace(PyObject *self ATTRIBUTE_UNUSED, for (i = 0; i < c_retval; i++) { PyObject *item = NULL; - if ((item = PyInt_FromLong(fdlist[i])) == NULL) + if ((item = libvirt_intWrap(fdlist[i])) == NULL) goto error; if (PyList_Append(py_retval, item) < 0) { diff --git a/libvirt-override.c b/libvirt-override.c index 579ea43..3334c3f 100644 --- a/libvirt-override.c +++ b/libvirt-override.c @@ -86,19 +86,19 @@ getPyVirTypedParameter(const virTypedParameter *params, int nparams) for (i = 0; i < nparams; i++) { switch (params[i].type) { case VIR_TYPED_PARAM_INT: - val = PyInt_FromLong(params[i].value.i); + val = libvirt_intWrap(params[i].value.i); break; case VIR_TYPED_PARAM_UINT: - val = PyInt_FromLong(params[i].value.ui); + val = libvirt_intWrap(params[i].value.ui); break; case VIR_TYPED_PARAM_LLONG: - val = PyLong_FromLongLong(params[i].value.l); + val = libvirt_longlongWrap(params[i].value.l); break; case VIR_TYPED_PARAM_ULLONG: - val = PyLong_FromUnsignedLongLong(params[i].value.ul); + val = libvirt_ulonglongWrap(params[i].value.ul); break; case VIR_TYPED_PARAM_DOUBLE: @@ -493,11 +493,11 @@ libvirt_virDomainBlockStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { /* convert to a Python tuple of long objects */ if ((info = PyTuple_New(5)) == NULL) return VIR_PY_NONE; - PyTuple_SetItem(info, 0, PyLong_FromLongLong(stats.rd_req)); - PyTuple_SetItem(info, 1, PyLong_FromLongLong(stats.rd_bytes)); - PyTuple_SetItem(info, 2, PyLong_FromLongLong(stats.wr_req)); - PyTuple_SetItem(info, 3, PyLong_FromLongLong(stats.wr_bytes)); - PyTuple_SetItem(info, 4, PyLong_FromLongLong(stats.errs)); + PyTuple_SetItem(info, 0, libvirt_longlongWrap(stats.rd_req)); + PyTuple_SetItem(info, 1, libvirt_longlongWrap(stats.rd_bytes)); + PyTuple_SetItem(info, 2, libvirt_longlongWrap(stats.wr_req)); + PyTuple_SetItem(info, 3, libvirt_longlongWrap(stats.wr_bytes)); + PyTuple_SetItem(info, 4, libvirt_longlongWrap(stats.errs)); return info; } @@ -708,14 +708,14 @@ libvirt_virDomainInterfaceStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) /* convert to a Python tuple of long objects */ if ((info = PyTuple_New(8)) == NULL) return VIR_PY_NONE; - PyTuple_SetItem(info, 0, PyLong_FromLongLong(stats.rx_bytes)); - PyTuple_SetItem(info, 1, PyLong_FromLongLong(stats.rx_packets)); - PyTuple_SetItem(info, 2, PyLong_FromLongLong(stats.rx_errs)); - PyTuple_SetItem(info, 3, PyLong_FromLongLong(stats.rx_drop)); - PyTuple_SetItem(info, 4, PyLong_FromLongLong(stats.tx_bytes)); - PyTuple_SetItem(info, 5, PyLong_FromLongLong(stats.tx_packets)); - PyTuple_SetItem(info, 6, PyLong_FromLongLong(stats.tx_errs)); - PyTuple_SetItem(info, 7, PyLong_FromLongLong(stats.tx_drop)); + PyTuple_SetItem(info, 0, libvirt_longlongWrap(stats.rx_bytes)); + PyTuple_SetItem(info, 1, libvirt_longlongWrap(stats.rx_packets)); + PyTuple_SetItem(info, 2, libvirt_longlongWrap(stats.rx_errs)); + PyTuple_SetItem(info, 3, libvirt_longlongWrap(stats.rx_drop)); + PyTuple_SetItem(info, 4, libvirt_longlongWrap(stats.tx_bytes)); + PyTuple_SetItem(info, 5, libvirt_longlongWrap(stats.tx_packets)); + PyTuple_SetItem(info, 6, libvirt_longlongWrap(stats.tx_errs)); + PyTuple_SetItem(info, 7, libvirt_longlongWrap(stats.tx_drop)); return info; } @@ -744,28 +744,28 @@ libvirt_virDomainMemoryStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { for (i = 0; i < nr_stats; i++) { if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_SWAP_IN) PyDict_SetItem(info, libvirt_constcharPtrWrap("swap_in"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_SWAP_OUT) PyDict_SetItem(info, libvirt_constcharPtrWrap("swap_out"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_MAJOR_FAULT) PyDict_SetItem(info, libvirt_constcharPtrWrap("major_fault"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_MINOR_FAULT) PyDict_SetItem(info, libvirt_constcharPtrWrap("minor_fault"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_UNUSED) PyDict_SetItem(info, libvirt_constcharPtrWrap("unused"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_AVAILABLE) PyDict_SetItem(info, libvirt_constcharPtrWrap("available"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON) PyDict_SetItem(info, libvirt_constcharPtrWrap("actual"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); else if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_RSS) PyDict_SetItem(info, libvirt_constcharPtrWrap("rss"), - PyLong_FromUnsignedLongLong(stats[i].val)); + libvirt_ulonglongWrap(stats[i].val)); } return info; } @@ -796,7 +796,7 @@ libvirt_virDomainGetSchedulerType(PyObject *self ATTRIBUTE_UNUSED, } PyTuple_SetItem(info, 0, libvirt_constcharPtrWrap(c_retval)); - PyTuple_SetItem(info, 1, PyInt_FromLong((long)nparams)); + PyTuple_SetItem(info, 1, libvirt_intWrap((long)nparams)); VIR_FREE(c_retval); return info; } @@ -1590,19 +1590,19 @@ libvirt_virDomainGetVcpus(PyObject *self ATTRIBUTE_UNUSED, if (info == NULL) goto cleanup; - if ((item = PyInt_FromLong((long)cpuinfo[i].number)) == NULL || + if ((item = libvirt_intWrap((long)cpuinfo[i].number)) == NULL || PyTuple_SetItem(info, 0, item) < 0) goto itemError; - if ((item = PyInt_FromLong((long)cpuinfo[i].state)) == NULL || + if ((item = libvirt_intWrap((long)cpuinfo[i].state)) == NULL || PyTuple_SetItem(info, 1, item) < 0) goto itemError; - if ((item = PyLong_FromLongLong((long long)cpuinfo[i].cpuTime)) == NULL || + if ((item = libvirt_longlongWrap((long long)cpuinfo[i].cpuTime)) == NULL || PyTuple_SetItem(info, 2, item) < 0) goto itemError; - if ((item = PyInt_FromLong((long)cpuinfo[i].cpu)) == NULL || + if ((item = libvirt_intWrap((long)cpuinfo[i].cpu)) == NULL || PyTuple_SetItem(info, 3, item) < 0) goto itemError; @@ -1984,15 +1984,15 @@ libvirt_virGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUT if ((info = PyTuple_New(9)) == NULL) return VIR_PY_NONE; - PyTuple_SetItem(info, 0, PyInt_FromLong((long) err->code)); - PyTuple_SetItem(info, 1, PyInt_FromLong((long) err->domain)); + PyTuple_SetItem(info, 0, libvirt_intWrap((long) err->code)); + PyTuple_SetItem(info, 1, libvirt_intWrap((long) err->domain)); PyTuple_SetItem(info, 2, libvirt_constcharPtrWrap(err->message)); - PyTuple_SetItem(info, 3, PyInt_FromLong((long) err->level)); + PyTuple_SetItem(info, 3, libvirt_intWrap((long) err->level)); PyTuple_SetItem(info, 4, libvirt_constcharPtrWrap(err->str1)); PyTuple_SetItem(info, 5, libvirt_constcharPtrWrap(err->str2)); PyTuple_SetItem(info, 6, libvirt_constcharPtrWrap(err->str3)); - PyTuple_SetItem(info, 7, PyInt_FromLong((long) err->int1)); - PyTuple_SetItem(info, 8, PyInt_FromLong((long) err->int2)); + PyTuple_SetItem(info, 7, libvirt_intWrap((long) err->int1)); + PyTuple_SetItem(info, 8, libvirt_intWrap((long) err->int2)); return info; } @@ -2017,15 +2017,15 @@ libvirt_virConnGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) if ((info = PyTuple_New(9)) == NULL) return VIR_PY_NONE; - PyTuple_SetItem(info, 0, PyInt_FromLong((long) err->code)); - PyTuple_SetItem(info, 1, PyInt_FromLong((long) err->domain)); + PyTuple_SetItem(info, 0, libvirt_intWrap((long) err->code)); + PyTuple_SetItem(info, 1, libvirt_intWrap((long) err->domain)); PyTuple_SetItem(info, 2, libvirt_constcharPtrWrap(err->message)); - PyTuple_SetItem(info, 3, PyInt_FromLong((long) err->level)); + PyTuple_SetItem(info, 3, libvirt_intWrap((long) err->level)); PyTuple_SetItem(info, 4, libvirt_constcharPtrWrap(err->str1)); PyTuple_SetItem(info, 5, libvirt_constcharPtrWrap(err->str2)); PyTuple_SetItem(info, 6, libvirt_constcharPtrWrap(err->str3)); - PyTuple_SetItem(info, 7, PyInt_FromLong((long) err->int1)); - PyTuple_SetItem(info, 8, PyInt_FromLong((long) err->int2)); + PyTuple_SetItem(info, 7, libvirt_intWrap((long) err->int1)); + PyTuple_SetItem(info, 8, libvirt_intWrap((long) err->int2)); return info; } @@ -2053,15 +2053,15 @@ libvirt_virErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, virErrorPtr err) PyTuple_SetItem(list, 0, libvirt_virPythonErrorFuncCtxt); PyTuple_SetItem(list, 1, info); Py_XINCREF(libvirt_virPythonErrorFuncCtxt); - PyTuple_SetItem(info, 0, PyInt_FromLong((long) err->code)); - PyTuple_SetItem(info, 1, PyInt_FromLong((long) err->domain)); + PyTuple_SetItem(info, 0, libvirt_intWrap((long) err->code)); + PyTuple_SetItem(info, 1, libvirt_intWrap((long) err->domain)); PyTuple_SetItem(info, 2, libvirt_constcharPtrWrap(err->message)); - PyTuple_SetItem(info, 3, PyInt_FromLong((long) err->level)); + PyTuple_SetItem(info, 3, libvirt_intWrap((long) err->level)); PyTuple_SetItem(info, 4, libvirt_constcharPtrWrap(err->str1)); PyTuple_SetItem(info, 5, libvirt_constcharPtrWrap(err->str2)); PyTuple_SetItem(info, 6, libvirt_constcharPtrWrap(err->str3)); - PyTuple_SetItem(info, 7, PyInt_FromLong((long) err->int1)); - PyTuple_SetItem(info, 8, PyInt_FromLong((long) err->int2)); + PyTuple_SetItem(info, 7, libvirt_intWrap((long) err->int1)); + PyTuple_SetItem(info, 8, libvirt_intWrap((long) err->int2)); /* TODO pass conn and dom if available */ result = PyEval_CallObject(libvirt_virPythonErrorFuncHandler, list); Py_XDECREF(list); @@ -2135,7 +2135,7 @@ static int virConnectCredCallbackWrapper(virConnectCredentialPtr cred, pycreditem = PyList_New(5); Py_INCREF(Py_None); PyTuple_SetItem(pycred, i, pycreditem); - PyList_SetItem(pycreditem, 0, PyInt_FromLong((long) cred[i].type)); + PyList_SetItem(pycreditem, 0, libvirt_intWrap((long) cred[i].type)); PyList_SetItem(pycreditem, 1, libvirt_constcharPtrWrap(cred[i].prompt)); if (cred[i].challenge) { PyList_SetItem(pycreditem, 2, libvirt_constcharPtrWrap(cred[i].challenge)); @@ -2265,7 +2265,7 @@ libvirt_virGetVersion(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) return VIR_PY_NONE; if (type == NULL) - return PyInt_FromLong(libVer); + return libvirt_intWrap(libVer); else return Py_BuildValue((char *) "kk", libVer, typeVer); } @@ -2293,7 +2293,7 @@ libvirt_virConnectGetVersion(PyObject *self ATTRIBUTE_UNUSED, if (c_retval == -1) return VIR_PY_INT_FAIL; - return PyInt_FromLong(hvVersion); + return libvirt_intWrap(hvVersion); } #if LIBVIR_CHECK_VERSION(1, 1, 3) @@ -2373,7 +2373,7 @@ libvirt_virConnectGetLibVersion(PyObject *self ATTRIBUTE_UNUSED, if (c_retval == -1) return VIR_PY_INT_FAIL; - return PyInt_FromLong(libVer); + return libvirt_intWrap(libVer); } static PyObject * @@ -2741,7 +2741,7 @@ libvirt_virDomainRevertToSnapshot(PyObject *self ATTRIBUTE_UNUSED, if (c_retval < 0) return VIR_PY_INT_FAIL; - return PyInt_FromLong(c_retval); + return libvirt_intWrap(c_retval); } static PyObject * @@ -7187,7 +7187,7 @@ libvirt_virNodeGetCPUMap(PyObject *self ATTRIBUTE_UNUSED, goto error; /* 0: number of CPUs */ - if ((pycpunum = PyLong_FromLong(i_retval)) == NULL || + if ((pycpunum = libvirt_intWrap(i_retval)) == NULL || PyTuple_SetItem(ret, 0, pycpunum) < 0) goto error; @@ -7206,7 +7206,7 @@ libvirt_virNodeGetCPUMap(PyObject *self ATTRIBUTE_UNUSED, goto error; /* 2: number of online CPUs */ - if ((pyonline = PyLong_FromLong(online)) == NULL || + if ((pyonline = libvirt_uintWrap(online)) == NULL || PyTuple_SetItem(ret, 2, pyonline) < 0) goto error; diff --git a/typewrappers.c b/typewrappers.c index 1e99554..c230e0f 100644 --- a/typewrappers.c +++ b/typewrappers.c @@ -44,6 +44,14 @@ libvirt_intWrap(int val) } PyObject * +libvirt_uintWrap(uint val) +{ + PyObject *ret; + ret = PyInt_FromLong((long) val); + return ret; +} + +PyObject * libvirt_longWrap(long val) { PyObject *ret; diff --git a/typewrappers.h b/typewrappers.h index 7068426..6bb193c 100644 --- a/typewrappers.h +++ b/typewrappers.h @@ -157,6 +157,7 @@ typedef struct { } PyvirVoidPtr_Object; PyObject * libvirt_intWrap(int val); +PyObject * libvirt_uintWrap(uint val); PyObject * libvirt_longWrap(long val); PyObject * libvirt_ulongWrap(unsigned long val); PyObject * libvirt_longlongWrap(long long val); -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list