From: "Daniel P. Berrange" <berrange(a)redhat.com>
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(a)redhat.com>
---
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