[libvirt] [PATCH 1/2] python: Add new helper functions for python to C integral conversion

Eric Blake eblake at redhat.com
Mon Mar 26 23:03:17 UTC 2012


On 03/26/2012 12:10 AM, Guannan Ren wrote:
>     int libvirt_intUnwrap(PyObject *obj, int *val);
>     int libvirt_uintUnwrap(PyObject *obj, unsigned int *val);
>     int libvirt_longUnwrap(PyObject *obj, long *val);
>     int libvirt_ulongUnwrap(PyObject *obj, unsigned long *val);
>     int libvirt_longlongUnwrap(PyObject *obj, long long *val);
>     int libvirt_ulonglongUnwrap(PyObject *obj, unsigned long long *val);
>     int libvirt_doubleUnwrap(PyObject *obj, double *val);
>     int libvirt_boolUnwrap(PyObject *obj, bool *val);
> ---
>  python/typewrappers.c |  142 +++++++++++++++++++++++++++++++++++++++++++++++++
>  python/typewrappers.h |    9 +++
>  2 files changed, 151 insertions(+), 0 deletions(-)
> 

> +int
> +libvirt_boolUnwrap(PyObject *obj, bool *val)
> +{
> +    int ret = -1;
> +
> +    /* We only accept PyInt_Type, PyLong_Type and PyBool_Type
> +     * as the boolean representation.

Why?

> +     */
> +    if (PyInt_Check(obj) ||
> +        PyLong_Check(obj) || PyBool_Check(obj)) {
> +        ret = PyObject_IsTrue(obj);

Why not blindly use PyObject_IsTrue(obj), and accept _all_ objects that
can be converted to python truth values, rather than forcing things to
be PyInt, PyBool, or PyLong?

ACK to the rest of the patch, but I think we want libvirt_boolUnwrap to
be more forgiving.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120326/d4870884/attachment-0001.sig>


More information about the libvir-list mailing list