Revision: 18731
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18731
Author:   campbellbarton
Date:     2009-01-29 10:38:52 +0100 (Thu, 29 Jan 2009)

Log Message:
-----------
python3 couldn't generate epydocs because python3 needs richcompare functions 
for C defined PyTypes (it seems).

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator.h
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h

Modified: 
branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c     
2009-01-29 06:35:04 UTC (rev 18730)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c     
2009-01-29 09:38:52 UTC (rev 18731)
@@ -278,7 +278,7 @@
 /*-----------------------BPy_OperatorBase method 
def------------------------------*/
 PyTypeObject pyop_base_Type = {
 #if (PY_VERSION_HEX >= 0x02060000)
-       PyVarObject_HEAD_INIT(&PyType_Type, 0)
+       PyVarObject_HEAD_INIT(NULL, 0)
 #else
        /* python 2.5 and below */
        PyObject_HEAD_INIT( NULL )  /* required py macro */
@@ -364,7 +364,7 @@
 /*-----------------------BPy_OperatorBase method 
def------------------------------*/
 PyTypeObject pyop_func_Type = {
 #if (PY_VERSION_HEX >= 0x02060000)
-       PyVarObject_HEAD_INIT(&PyType_Type, 0)
+       PyVarObject_HEAD_INIT(NULL, 0)
 #else
        /* python 2.5 and below */
        PyObject_HEAD_INIT( NULL )  /* required py macro */

Modified: 
branches/blender2.5/blender/source/blender/python/intern/bpy_operator.h
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_operator.h     
2009-01-29 06:35:04 UTC (rev 18730)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_operator.h     
2009-01-29 09:38:52 UTC (rev 18731)
@@ -36,12 +36,12 @@
 extern PyTypeObject pyop_func_Type;
 
 typedef struct {
-       PyObject_VAR_HEAD /* required python macro   */
+       PyObject_HEAD /* required python macro   */
        bContext *C;
 } BPy_OperatorBase;
 
 typedef struct {
-       PyObject_VAR_HEAD /* required python macro   */
+       PyObject_HEAD /* required python macro   */
        char name[OP_MAX_TYPENAME];
        bContext *C;
 } BPy_OperatorFunc;

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c  
2009-01-29 06:35:04 UTC (rev 18730)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c  
2009-01-29 09:38:52 UTC (rev 18731)
@@ -34,7 +34,7 @@
 #define MAXFLOAT_DOC 10000000
 
 static int pyrna_struct_compare( BPy_StructRNA * a, BPy_StructRNA * b )
-{ 
+{
        return (a->ptr.data==b->ptr.data) ? 0 : -1;
 }
 
@@ -43,6 +43,28 @@
        return (a->prop==b->prop && a->ptr.data==b->ptr.data ) ? 0 : -1;
 }
 
+
+/* For some reason python3 needs these :/ */
+static PyObject *pyrna_struct_richcmp(BPy_StructRNA * a, BPy_StructRNA * b, 
int op)
+{
+       int cmp_result= -1; /* assume false */
+       if (BPy_StructRNA_Check(a) && BPy_StructRNA_Check(b)) {
+               cmp_result= pyrna_struct_compare(a, b);
+       }
+
+       return Py_CmpToRich(op, cmp_result);
+}
+
+static PyObject *pyrna_prop_richcmp(BPy_PropertyRNA * a, BPy_PropertyRNA * b, 
int op)
+{
+       int cmp_result= -1; /* assume false */
+       if (BPy_PropertyRNA_Check(a) && BPy_PropertyRNA_Check(b)) {
+               cmp_result= pyrna_prop_compare(a, b);
+       }
+
+       return Py_CmpToRich(op, cmp_result);
+}
+
 /*----------------------repr--------------------------------------------*/
 static PyObject *pyrna_struct_repr( BPy_StructRNA * self )
 {
@@ -954,7 +976,7 @@
 /*-----------------------BPy_StructRNA method 
def------------------------------*/
 PyTypeObject pyrna_struct_Type = {
 #if (PY_VERSION_HEX >= 0x02060000)
-       PyVarObject_HEAD_INIT(&PyType_Type, 0)
+       PyVarObject_HEAD_INIT(NULL, 0)
 #else
        /* python 2.5 and below */
        PyObject_HEAD_INIT( NULL )  /* required py macro */
@@ -1001,7 +1023,7 @@
 
   /***  Assigned meaning in release 2.1 ***/
   /*** rich comparisons ***/
-       NULL,                       /* richcmpfunc tp_richcompare; */
+       (richcmpfunc)pyrna_struct_richcmp,      /* richcmpfunc tp_richcompare; 
*/
 
   /***  weak reference enabler ***/
        0,                          /* long tp_weaklistoffset; */
@@ -1039,7 +1061,7 @@
 /*-----------------------BPy_PropertyRNA method 
def------------------------------*/
 PyTypeObject pyrna_prop_Type = {
 #if (PY_VERSION_HEX >= 0x02060000)
-       PyVarObject_HEAD_INIT(&PyType_Type, 0)
+       PyVarObject_HEAD_INIT(NULL, 0)
 #else
        /* python 2.5 and below */
        PyObject_HEAD_INIT( NULL )  /* required py macro */
@@ -1087,7 +1109,7 @@
 
   /***  Assigned meaning in release 2.1 ***/
   /*** rich comparisons ***/
-       NULL,                       /* richcmpfunc tp_richcompare; */
+       (richcmpfunc)pyrna_prop_richcmp,        /* richcmpfunc tp_richcompare; 
*/
 
   /***  weak reference enabler ***/
        0,                          /* long tp_weaklistoffset; */

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h  
2009-01-29 06:35:04 UTC (rev 18730)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h  
2009-01-29 09:38:52 UTC (rev 18731)
@@ -33,14 +33,17 @@
 extern PyTypeObject pyrna_struct_Type;
 extern PyTypeObject pyrna_prop_Type;
 
+#define BPy_StructRNA_Check(v)         (PyObject_TypeCheck(v, 
&pyrna_struct_Type))
+#define BPy_PropertyRNA_Check(v)       (PyObject_TypeCheck(v, 
&pyrna_prop_Type))
+
 typedef struct {
-       PyObject_VAR_HEAD /* required python macro   */
+       PyObject_HEAD /* required python macro   */
        PointerRNA ptr;
        int freeptr; /* needed in some cases if ptr.data is created on the fly, 
free when deallocing */
 } BPy_StructRNA;
 
 typedef struct {
-       PyObject_VAR_HEAD /* required python macro   */
+       PyObject_HEAD /* required python macro   */
        PointerRNA ptr;
        PropertyRNA *prop;
 } BPy_PropertyRNA;


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to