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>2009-02-26 08:50:19 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-02-26 08:50:19 +0300
commitb49b02842a9f13975b5735183afdae273c9fd616 (patch)
treece3f118808bc42204ab8fb883fc05548fcea6743 /source/blender/python
parent9ac7c8e91a9e699ff3490881c554e08fc348f442 (diff)
update to build with python 3.0.1 which removed Py_InitModule3, added richcompare functions to the operator api.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/intern/bpy_operator.c16
-rw-r--r--source/blender/python/intern/bpy_operator.h3
-rw-r--r--source/blender/python/intern/bpy_rna.c4
-rw-r--r--source/blender/python/intern/bpy_ui.c20
-rw-r--r--source/blender/python/intern/bpy_util.c2
5 files changed, 37 insertions, 8 deletions
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index 72f4d7fb11e..3947dc8ab1e 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -115,6 +115,18 @@ static int pyop_func_compare( BPy_OperatorFunc * a, BPy_OperatorFunc * b )
return (strcmp(a->name, b->name)==0) ? 0 : -1;
}
+/* For some reason python3 needs these :/ */
+static PyObject *pyop_func_richcmp(BPy_StructRNA * a, BPy_StructRNA * b, int op)
+{
+ int cmp_result= -1; /* assume false */
+ if (BPy_OperatorFunc_Check(a) && BPy_OperatorFunc_Check(b)) {
+ cmp_result= pyop_func_compare(a, b);
+ }
+
+ return Py_CmpToRich(op, cmp_result);
+}
+
+
/*----------------------repr--------------------------------------------*/
static PyObject *pyop_base_repr( BPy_OperatorBase * self )
{
@@ -379,7 +391,7 @@ PyTypeObject pyop_func_Type = {
NULL, /* printfunc tp_print; */
NULL, /* getattrfunc tp_getattr; */
NULL, /* setattrfunc tp_setattr; */
- ( cmpfunc ) pyop_func_compare, /* tp_compare */
+ NULL, /* tp_compare */ /* DEPRECATED in python 3.0! */
( reprfunc ) pyop_func_repr, /* tp_repr */
/* Method suites for standard classes */
@@ -412,7 +424,7 @@ PyTypeObject pyop_func_Type = {
/*** Assigned meaning in release 2.1 ***/
/*** rich comparisons ***/
- NULL, /* richcmpfunc tp_richcompare; */
+ (richcmpfunc)pyop_func_richcmp, /* richcmpfunc tp_richcompare; */
/*** weak reference enabler ***/
0, /* long tp_weaklistoffset; */
diff --git a/source/blender/python/intern/bpy_operator.h b/source/blender/python/intern/bpy_operator.h
index 5cc3ba64e0e..fa12857fe19 100644
--- a/source/blender/python/intern/bpy_operator.h
+++ b/source/blender/python/intern/bpy_operator.h
@@ -35,6 +35,9 @@
extern PyTypeObject pyop_base_Type;
extern PyTypeObject pyop_func_Type;
+#define BPy_OperatorFunc_Check(v) (PyObject_TypeCheck(v, &pyop_func_Type))
+#define BPy_PropertyRNA_Check(v) (PyObject_TypeCheck(v, &pyop_func_Type))
+
typedef struct {
PyObject_HEAD /* required python macro */
bContext *C;
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 35febecfe15..e879be52be6 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -984,7 +984,7 @@ PyTypeObject pyrna_struct_Type = {
NULL, /* printfunc tp_print; */
NULL, /* getattrfunc tp_getattr; */
NULL, /* setattrfunc tp_setattr; */
- ( cmpfunc ) pyrna_struct_compare, /* tp_compare */
+ NULL, /* tp_compare */ /* DEPRECATED in python 3.0! */
( reprfunc ) pyrna_struct_repr, /* tp_repr */
/* Method suites for standard classes */
@@ -1070,7 +1070,7 @@ PyTypeObject pyrna_prop_Type = {
NULL, /* printfunc tp_print; */
NULL, /* getattrfunc tp_getattr; */
NULL, /* setattrfunc tp_setattr; */
- ( cmpfunc ) pyrna_prop_compare, /* tp_compare */
+ NULL, /* tp_compare */ /* DEPRECATED in python 3.0! */
( reprfunc ) pyrna_prop_repr, /* tp_repr */
/* Method suites for standard classes */
diff --git a/source/blender/python/intern/bpy_ui.c b/source/blender/python/intern/bpy_ui.c
index f622c130d6f..575620443f0 100644
--- a/source/blender/python/intern/bpy_ui.c
+++ b/source/blender/python/intern/bpy_ui.c
@@ -247,9 +247,23 @@ static struct PyMethodDef ui_methods[] = {
{NULL, NULL, 0, NULL}
};
+#if PY_VERSION_HEX >= 0x03000000
+static struct PyModuleDef ui_module = {
+ PyModuleDef_HEAD_INIT,
+ "bpyui",
+ "",
+ -1,/* multiple "initialization" just copies the module dict. */
+ ui_methods,
+ NULL, NULL, NULL, NULL
+};
+
+PyObject *BPY_ui_module( void )
+{
+ return PyModule_Create(&ui_module);
+}
+#else /* Py2.x */
PyObject *BPY_ui_module( void )
{
- PyObject *submodule;
- submodule = Py_InitModule3( "bpyui", ui_methods, "" );
- return submodule;
+ return Py_InitModule3( "bpyui", ui_methods, "" );
}
+#endif
diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c
index bbf766c23eb..63112295d18 100644
--- a/source/blender/python/intern/bpy_util.c
+++ b/source/blender/python/intern/bpy_util.c
@@ -112,7 +112,7 @@ int BPY_flag_from_seq(BPY_flag_def *flagdef, PyObject *seq, int *flag)
/* Copied from pythons 3's Object.c */
-#if PY_VERSION_HEX < 0x03000000
+#ifndef Py_CmpToRich
PyObject *
Py_CmpToRich(int op, int cmp)
{