mathutils: refactor instantiation

remove 'type' argument, very few mathutils objects are wrapped,
add new function for creating wrapped objects.

also fixes unlikely memory leak if the data-array can't be allocated.
This commit is contained in:
Campbell Barton
2015-01-04 17:03:54 +11:00
parent c41431f1e9
commit 8106a6b75d
29 changed files with 499 additions and 331 deletions

View File

@@ -61,12 +61,21 @@ typedef struct {
* blender (stored in blend_data). This is an either/or struct not both */
/* prototypes */
PyObject *Matrix_CreatePyObject(float *mat,
const unsigned short num_col, const unsigned short num_row,
int type, PyTypeObject *base_type);
PyObject *Matrix_CreatePyObject_cb(PyObject *user,
const unsigned short num_col, const unsigned short num_row,
unsigned char cb_type, unsigned char cb_subtype);
PyObject *Matrix_CreatePyObject(
const float *mat,
const unsigned short num_col, const unsigned short num_row,
PyTypeObject *base_type
) ATTR_WARN_UNUSED_RESULT;
PyObject *Matrix_CreatePyObject_wrap(
float *mat,
const unsigned short num_col, const unsigned short num_row,
PyTypeObject *base_type
) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1);
PyObject *Matrix_CreatePyObject_cb(
PyObject *user,
const unsigned short num_col, const unsigned short num_row,
unsigned char cb_type, unsigned char cb_subtype
) ATTR_WARN_UNUSED_RESULT;
extern unsigned char mathutils_matrix_row_cb_index; /* default */
extern unsigned char mathutils_matrix_col_cb_index;