svn merge -r 21041:21301 https://svn.blender.org/svnroot/bf-blender/branches/blender2...
[blender.git] / source / blender / python / generic / vector.h
index d2eb826ef10eff9e155d5101ff8676b79c834801..f6babac7ed91ec5a00c9eaab0b18e9198ac3a2a3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: vector.h 20332 2009-05-22 03:22:56Z campbellbarton $
+/* $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
 #include "../intern/bpy_compat.h"
 
 extern PyTypeObject vector_Type;
+#define VectorObject_Check(_v) PyObject_TypeCheck((_v), &vector_Type)
 
-#define VectorObject_Check(v) (((PyObject *)v)->ob_type == &vector_Type)
-
-typedef struct {
+typedef struct { /* keep aligned with BaseMathObject in Mathutils.h */
        PyObject_VAR_HEAD 
-       float *vec;                             /*1D array of data (alias), wrapped status depends on wrapped status */
-       short size;                             /* vec size 2,3 or 4 */
-       short wrapped;                  /* is wrapped data? */
+       float *vec;                                     /*1D array of data (alias), wrapped status depends on wrapped status */
+       PyObject *cb_user;                                      /* if this vector references another object, otherwise NULL, *Note* this owns its reference */
+       unsigned char cb_type;  /* which user funcs do we adhere to, RNA, GameObject, etc */
+       unsigned char cb_subtype;               /* subtype: location, rotation... to avoid defining many new functions for every attribute of the same type */
+       unsigned char wrapped;          /* wrapped data type? */
+       /* end BaseMathObject */
+
+       unsigned char size;                     /* vec size 2,3 or 4 */
 } VectorObject;
 
 /*prototypes*/
-PyObject *newVectorObject(float *vec, int size, int type);
+PyObject *newVectorObject(float *vec, int size, int type, PyTypeObject *base_type);
+PyObject *newVectorObject_cb(PyObject *user, int size, int callback_type, int subtype);
 
 #endif                         /* EXPP_vector_h */