summaryrefslogtreecommitdiffstats
path: root/libvirt-override.c
diff options
context:
space:
mode:
authorGuannan Ren <gren@redhat.com>2012-03-27 14:06:47 +0800
committerEric Blake <eblake@redhat.com>2012-03-28 08:54:06 -0600
commite967d582f973a4f37db1526f5e455ea643294740 (patch)
treeeedbb4f95a520ce3233224f4d0f29940b7fea66e /libvirt-override.c
parentdb3debebf058b47328df47137b505e80b4adca08 (diff)
downloadlibvirt-python-split-e967d582f973a4f37db1526f5e455ea643294740.tar.gz
libvirt-python-split-e967d582f973a4f37db1526f5e455ea643294740.tar.xz
libvirt-python-split-e967d582f973a4f37db1526f5e455ea643294740.zip
python: make python APIs use these helper functionsv0.9.11-rc2
*setPyVirTypedParameter *libvirt_virDomainGetCPUStats
Diffstat (limited to 'libvirt-override.c')
-rw-r--r--libvirt-override.c91
1 files changed, 22 insertions, 69 deletions
diff --git a/libvirt-override.c b/libvirt-override.c
index f55ef43..56f96ba 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -194,76 +194,38 @@ setPyVirTypedParameter(PyObject *info,
switch(params[i].type) {
case VIR_TYPED_PARAM_INT:
- {
- long long_val = PyInt_AsLong(value);
- if ((long_val == -1) && PyErr_Occurred())
- goto cleanup;
- if ((int)long_val == long_val) {
- temp->value.i = long_val;
- } else {
- PyErr_Format(PyExc_ValueError,
- "The value of "
- "attribute \"%s\" is out of int range", keystr);
+ if (libvirt_intUnwrap(value, &temp->value.i) < 0)
goto cleanup;
- }
- }
- break;
+ break;
+
case VIR_TYPED_PARAM_UINT:
- {
- long long_val = PyInt_AsLong(value);
- if ((long_val == -1) && PyErr_Occurred())
+ if (libvirt_uintUnwrap(value, &temp->value.ui) < 0)
goto cleanup;
- if ((unsigned int)long_val == long_val) {
- temp->value.ui = long_val;
- } else {
- PyErr_Format(PyExc_ValueError,
- "The value of "
- "attribute \"%s\" is out of int range", keystr);
- goto cleanup;
- }
- }
- break;
+ break;
+
case VIR_TYPED_PARAM_LLONG:
- {
- long long llong_val = PyLong_AsLongLong(value);
- if ((llong_val == -1) && PyErr_Occurred())
+ if (libvirt_longlongUnwrap(value, &temp->value.l) < 0)
goto cleanup;
- temp->value.l = llong_val;
- }
- break;
+ break;
+
case VIR_TYPED_PARAM_ULLONG:
- {
- unsigned long long ullong_val = PyLong_AsUnsignedLongLong(value);
- if ((ullong_val == -1) && PyErr_Occurred())
+ if (libvirt_ulonglongUnwrap(value, &temp->value.ul) < 0)
goto cleanup;
- temp->value.ul = ullong_val;
- }
- break;
+ break;
+
case VIR_TYPED_PARAM_DOUBLE:
- {
- double double_val = PyFloat_AsDouble(value);
- if ((double_val == -1) && PyErr_Occurred())
+ if (libvirt_doubleUnwrap(value, &temp->value.d) < 0)
goto cleanup;
- temp->value.d = double_val;
- }
- break;
+ break;
+
case VIR_TYPED_PARAM_BOOLEAN:
{
- /* Hack - Python's definition of Py_True breaks strict
- * aliasing rules, so can't directly compare
- */
- if (PyBool_Check(value)) {
- PyObject *hacktrue = PyBool_FromLong(1);
- temp->value.b = hacktrue == value ? 1 : 0;
- Py_DECREF(hacktrue);
- } else {
- PyErr_Format(PyExc_TypeError,
- "The value type of "
- "attribute \"%s\" must be bool", keystr);
+ bool b;
+ if (libvirt_boolUnwrap(value, &b) < 0)
goto cleanup;
- }
+ temp->value.b = b;
+ break;
}
- break;
case VIR_TYPED_PARAM_STRING:
{
char *string_val = PyString_AsString(value);
@@ -388,7 +350,8 @@ libvirt_virDomainGetCPUStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args)
int ncpus = -1, start_cpu = 0;
int sumparams = 0, nparams = -1;
int i, i_retval;
- unsigned int flags, totalflag;
+ unsigned int flags;
+ bool totalflag;
virTypedParameterPtr params = NULL, cpuparams;
if (!PyArg_ParseTuple(args, (char *)"OOi:virDomainGetCPUStats",
@@ -396,18 +359,8 @@ libvirt_virDomainGetCPUStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args)
return NULL;
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
- if (!PyBool_Check(totalbool)) {
- PyErr_Format(PyExc_TypeError,
- "The \"total\" attribute must be bool");
+ if (libvirt_boolUnwrap(totalbool, &totalflag) < 0)
return NULL;
- } else {
- /* Hack - Python's definition of Py_True breaks strict
- * aliasing rules, so can't directly compare
- */
- PyObject *hacktrue = PyBool_FromLong(1);
- totalflag = hacktrue == totalbool ? 1 : 0;
- Py_DECREF(hacktrue);
- }
if ((ret = PyList_New(0)) == NULL)
return NULL;