diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-02-26 08:50:19 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-02-26 08:50:19 +0300 |
commit | b49b02842a9f13975b5735183afdae273c9fd616 (patch) | |
tree | ce3f118808bc42204ab8fb883fc05548fcea6743 /source | |
parent | 9ac7c8e91a9e699ff3490881c554e08fc348f442 (diff) |
update to build with python 3.0.1 which removed Py_InitModule3, added richcompare functions to the operator api.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/python/intern/bpy_operator.c | 16 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_operator.h | 3 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 4 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_ui.c | 20 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_util.c | 2 |
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) { |