PyAPI: add function to check any mathutils type

Also add CheckExact versions of type checking macros.
This commit is contained in:
Campbell Barton 2017-11-29 16:09:46 +11:00
parent 26a64ba23a
commit c17c6557b4
7 changed files with 19 additions and 6 deletions

View File

@ -78,6 +78,10 @@ typedef struct {
#include "mathutils_Euler.h"
#include "mathutils_Color.h"
/* avoid checking all types */
#define BaseMathObject_CheckExact(v) \
(Py_TYPE(v)->tp_dealloc == (destructor)BaseMathObject_dealloc)
PyObject *BaseMathObject_owner_get(BaseMathObject *self, void *);
PyObject *BaseMathObject_is_wrapped_get(BaseMathObject *self, void *);
PyObject *BaseMathObject_is_frozen_get(BaseMathObject *self, void *);

View File

@ -30,7 +30,8 @@
#define __MATHUTILS_COLOR_H__
extern PyTypeObject color_Type;
#define ColorObject_Check(_v) PyObject_TypeCheck((_v), &color_Type)
#define ColorObject_Check(v) PyObject_TypeCheck((v), &color_Type)
#define ColorObject_CheckExact(v) (Py_TYPE(v) == &color_Type)
typedef struct {
BASE_MATH_MEMBERS(col);

View File

@ -29,7 +29,8 @@
*/
extern PyTypeObject euler_Type;
#define EulerObject_Check(_v) PyObject_TypeCheck((_v), &euler_Type)
#define EulerObject_Check(v) PyObject_TypeCheck((v), &euler_Type)
#define EulerObject_CheckExact(v) (Py_TYPE(v) == &euler_Type)
typedef struct {
BASE_MATH_MEMBERS(eul);

View File

@ -30,7 +30,10 @@
extern PyTypeObject matrix_Type;
extern PyTypeObject matrix_access_Type;
#define MatrixObject_Check(_v) PyObject_TypeCheck((_v), &matrix_Type)
#define MatrixObject_Check(v) PyObject_TypeCheck((v), &matrix_Type)
#define MatrixObject_CheckExact(v) (Py_TYPE(v) == &matrix_Type)
#define MATRIX_MAX_DIM 4
/* matrix[row][col] == MATRIX_ITEM_INDEX(matrix, row, col) */

View File

@ -28,7 +28,9 @@
*/
extern PyTypeObject quaternion_Type;
#define QuaternionObject_Check(_v) PyObject_TypeCheck((_v), &quaternion_Type)
#define QuaternionObject_Check(v) PyObject_TypeCheck((v), &quaternion_Type)
#define QuaternionObject_CheckExact(v) (Py_TYPE(v) == &quaternion_Type)
typedef struct {
BASE_MATH_MEMBERS(quat);

View File

@ -29,7 +29,9 @@
#define __MATHUTILS_VECTOR_H__
extern PyTypeObject vector_Type;
#define VectorObject_Check(_v) PyObject_TypeCheck((_v), &vector_Type)
#define VectorObject_Check(v) PyObject_TypeCheck((v), &vector_Type)
#define VectorObject_CheckExact(v) (Py_TYPE(v) == &vector_Type)
typedef struct {
BASE_MATH_MEMBERS(vec);

View File

@ -30,7 +30,7 @@ PyMODINIT_FUNC PyInit_mathutils_bvhtree(void);
extern PyTypeObject PyBVHTree_Type;
#define PyBVHTree_Check(_v) PyObject_TypeCheck((_v), &PyBVHTree_Type)
#define PyBVHTree_Check(v) PyObject_TypeCheck((v), &PyBVHTree_Type)
#define PyBVHTree_CheckExact(v) (Py_TYPE(v) == &PyBVHTree_Type)
#endif /* __MATHUTILS_BVHTREE_H__ */