diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-08-03 13:00:16 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-08-03 13:00:16 +0300 |
commit | 42d65ef5cc9bd4b9c398957efc95828ec0f63e49 (patch) | |
tree | 7eb27e6bba4c996e1ac80a8c5e3054caf849f700 /source/blender/python/generic | |
parent | 0f690e218620ec1f3340ea12b722c3a7a055a76f (diff) |
Add bool parser for PyArg_ParseTuple
Use for mathutils.bvhtree
Diffstat (limited to 'source/blender/python/generic')
-rw-r--r-- | source/blender/python/generic/py_capi_utils.c | 18 | ||||
-rw-r--r-- | source/blender/python/generic/py_capi_utils.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index d53e5629693..9e6ffe91848 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -1024,3 +1024,21 @@ int PyC_RunString_AsNumber(const char *expr, double *value, const char *filename return error_ret; } + +/** + * Use with PyArg_ParseTuple's "O&" formatting. + */ +int PyC_ParseBool(PyObject *o, void *p) +{ + bool *bool_p = p; + long value; + if (((value = PyLong_AsLong(o)) == -1) || !ELEM(value, 0, 1)) { + PyErr_Format(PyExc_ValueError, + "expected a bool or int (0/1), got %s", + Py_TYPE(o)->tp_name); + return 0; + } + + *bool_p = value ? true : false; + return 1; +} diff --git a/source/blender/python/generic/py_capi_utils.h b/source/blender/python/generic/py_capi_utils.h index 93a3cb5b6d1..0ebc06ce2fa 100644 --- a/source/blender/python/generic/py_capi_utils.h +++ b/source/blender/python/generic/py_capi_utils.h @@ -81,4 +81,6 @@ PyObject *PyC_FlagSet_FromBitfield(PyC_FlagSet *items, int flag); int PyC_RunString_AsNumber(const char *expr, double *value, const char *filename); +int PyC_ParseBool(PyObject *o, void *p); + #endif /* __PY_CAPI_UTILS_H__ */ |