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:
-rw-r--r--source/blender/freestyle/intern/python/BPy_Nature.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/source/blender/freestyle/intern/python/BPy_Nature.cpp b/source/blender/freestyle/intern/python/BPy_Nature.cpp
index da09de99590..bf571bada6a 100644
--- a/source/blender/freestyle/intern/python/BPy_Nature.cpp
+++ b/source/blender/freestyle/intern/python/BPy_Nature.cpp
@@ -35,7 +35,6 @@ extern "C" {
static PyObject *BPy_Nature_and(PyObject *a, PyObject *b);
static PyObject *BPy_Nature_xor(PyObject *a, PyObject *b);
static PyObject *BPy_Nature_or(PyObject *a, PyObject *b);
-static int BPy_Nature_bool(PyObject *v);
/*-----------------------BPy_Nature number method definitions --------------------*/
@@ -49,7 +48,7 @@ static PyNumberMethods nature_as_number = {
0, /* unaryfunc nb_negative */
0, /* unaryfunc nb_positive */
0, /* unaryfunc nb_absolute */
- (inquiry)BPy_Nature_bool, /* inquiry nb_bool */
+ 0, /* inquiry nb_bool */
0, /* unaryfunc nb_invert */
0, /* binaryfunc nb_lshift */
0, /* binaryfunc nb_rshift */
@@ -151,7 +150,7 @@ PyTypeObject Nature_Type = {
/*-----------------------BPy_Nature instance definitions ----------------------------------*/
static PyLongObject _Nature_POINT = {
- PyVarObject_HEAD_INIT(&Nature_Type, 1)
+ PyVarObject_HEAD_INIT(&Nature_Type, 0)
{ Nature::POINT }
};
static PyLongObject _Nature_S_VERTEX = {
@@ -175,7 +174,7 @@ static PyLongObject _Nature_CUSP = {
{ Nature::CUSP }
};
static PyLongObject _Nature_NO_FEATURE = {
- PyVarObject_HEAD_INIT(&Nature_Type, 1)
+ PyVarObject_HEAD_INIT(&Nature_Type, 0)
{ Nature::NO_FEATURE }
};
static PyLongObject _Nature_SILHOUETTE = {
@@ -263,7 +262,7 @@ int Nature_Init(PyObject *module)
static PyObject *BPy_Nature_bitwise(PyObject *a, int op, PyObject *b)
{
BPy_Nature *result;
- long op1, op2;
+ long op1, op2, v;
if (!BPy_Nature_Check(a) || !BPy_Nature_Check(b)) {
PyErr_SetString(PyExc_TypeError, "operands must be a Nature object");
@@ -279,20 +278,24 @@ static PyObject *BPy_Nature_bitwise(PyObject *a, int op, PyObject *b)
PyErr_SetString(PyExc_ValueError, "operand 2: unexpected Nature value");
return NULL;
}
- result = PyObject_NewVar(BPy_Nature, &Nature_Type, 1);
- if (!result)
- return NULL;
switch (op) {
case '&':
- result->i.ob_digit[0] = op1 & op2;
+ v = op1 & op2;
break;
case '^':
- result->i.ob_digit[0] = op1 ^ op2;
+ v = op1 ^ op2;
break;
case '|':
- result->i.ob_digit[0] = op1 | op2;
+ v = op1 | op2;
break;
}
+ if (v == 0)
+ result = PyObject_NewVar(BPy_Nature, &Nature_Type, 0);
+ else {
+ result = PyObject_NewVar(BPy_Nature, &Nature_Type, 1);
+ if (result)
+ result->i.ob_digit[0] = v;
+ }
return (PyObject *)result;
}
@@ -311,11 +314,6 @@ static PyObject *BPy_Nature_or(PyObject *a, PyObject *b)
return BPy_Nature_bitwise(a, '|', b);
}
-static int BPy_Nature_bool(PyObject *v)
-{
- return ((PyLongObject *)v)->ob_digit[0] != 0;
-}
-
///////////////////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus