Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2015-08-03 13:00:16 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-08-03 13:00:16 +0300
commit42d65ef5cc9bd4b9c398957efc95828ec0f63e49 (patch)
tree7eb27e6bba4c996e1ac80a8c5e3054caf849f700 /source/blender/python
parent0f690e218620ec1f3340ea12b722c3a7a055a76f (diff)
Add bool parser for PyArg_ParseTuple
Use for mathutils.bvhtree
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/generic/py_capi_utils.c18
-rw-r--r--source/blender/python/generic/py_capi_utils.h2
-rw-r--r--source/blender/python/mathutils/mathutils_bvhtree.c22
3 files changed, 34 insertions, 8 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__ */
diff --git a/source/blender/python/mathutils/mathutils_bvhtree.c b/source/blender/python/mathutils/mathutils_bvhtree.c
index b3b953256bd..e74964481e6 100644
--- a/source/blender/python/mathutils/mathutils_bvhtree.c
+++ b/source/blender/python/mathutils/mathutils_bvhtree.c
@@ -563,7 +563,7 @@ static PyObject *C_BVHTree_FromPolygons(PyObject *UNUSED(cls), PyObject *args, P
unsigned int (*tris)[3] = NULL;
unsigned int coords_len, tris_len;
float epsilon = 0.0f;
- int all_triangles = 0;
+ bool all_triangles = false;
/* when all_triangles is False */
int *orig_index = NULL;
@@ -574,8 +574,10 @@ static PyObject *C_BVHTree_FromPolygons(PyObject *UNUSED(cls), PyObject *args, P
if (!PyArg_ParseTupleAndKeywords(
- args, kwargs, (char *)"OO|$if:BVHTree.FromPolygons", (char **)keywords,
- &py_coords, &py_tris, &all_triangles, &epsilon))
+ args, kwargs, (char *)"OO|$O&f:BVHTree.FromPolygons", (char **)keywords,
+ &py_coords, &py_tris,
+ PyC_ParseBool, &all_triangles,
+ &epsilon))
{
return NULL;
}
@@ -996,9 +998,9 @@ static PyObject *C_BVHTree_FromObject(PyObject *UNUSED(cls), PyObject *args, PyO
Object *ob;
struct Scene *scene;
DerivedMesh *dm;
- int use_deform = true;
- int use_render = false;
- int use_cage = false;
+ bool use_deform = true;
+ bool use_render = false;
+ bool use_cage = false;
const MLoopTri *lt;
const MLoop *mloop;
@@ -1009,8 +1011,12 @@ static PyObject *C_BVHTree_FromObject(PyObject *UNUSED(cls), PyObject *args, PyO
float epsilon = 0.0f;
if (!PyArg_ParseTupleAndKeywords(
- args, kwargs, (char *)"OO|$iiif:BVHTree.FromObject", (char **)keywords,
- &py_ob, &py_scene, &use_deform, &use_render, &use_cage, &epsilon) ||
+ args, kwargs, (char *)"OO|$O&O&O&f:BVHTree.FromObject", (char **)keywords,
+ &py_ob, &py_scene,
+ PyC_ParseBool, &use_deform,
+ PyC_ParseBool, &use_render,
+ PyC_ParseBool, &use_cage,
+ &epsilon) ||
((ob = PyC_RNA_AsPointer(py_ob, "Object")) == NULL) ||
((scene = PyC_RNA_AsPointer(py_scene, "Scene")) == NULL))
{