static PyObject* Euler_richcmpr(PyObject *a, PyObject *b, int op) { PyObject *res; int ok= -1; /* zero is true */ if (EulerObject_Check(a) && EulerObject_Check(b)) { EulerObject *eulA= (EulerObject*)a; EulerObject *eulB= (EulerObject*)b; if(!BaseMath_ReadCallback(eulA) || !BaseMath_ReadCallback(eulB)) return NULL; ok= ((eulA->order == eulB->order) && EXPP_VectorsAreEqual(eulA->eul, eulB->eul, EULER_SIZE, 1)) ? 0 : -1; } switch (op) { case Py_NE: ok = !ok; /* pass through */ case Py_EQ: res = ok ? Py_False : Py_True; break; case Py_LT: case Py_LE: case Py_GT: case Py_GE: res = Py_NotImplemented; break; default: PyErr_BadArgument(); return NULL; } return Py_INCREF(res), res; }
//------------------------tp_richcmpr //returns -1 execption, 0 false, 1 true static PyObject* Color_richcmpr(PyObject *a, PyObject *b, int op) { PyObject *res; int ok= -1; /* zero is true */ if (ColorObject_Check(a) && ColorObject_Check(b)) { ColorObject *colA= (ColorObject*)a; ColorObject *colB= (ColorObject*)b; if (BaseMath_ReadCallback(colA) == -1 || BaseMath_ReadCallback(colB) == -1) return NULL; ok= EXPP_VectorsAreEqual(colA->col, colB->col, COLOR_SIZE, 1) ? 0 : -1; } switch (op) { case Py_NE: ok = !ok; /* pass through */ case Py_EQ: res = ok ? Py_False : Py_True; break; case Py_LT: case Py_LE: case Py_GT: case Py_GE: res = Py_NotImplemented; break; default: PyErr_BadArgument(); return NULL; } return Py_INCREF(res), res; }
static PyObject *Quaternion_richcmpr(PyObject *a, PyObject *b, int op) { PyObject *res; int ok = -1; /* zero is true */ if (QuaternionObject_Check(a) && QuaternionObject_Check(b)) { QuaternionObject *quatA = (QuaternionObject *)a; QuaternionObject *quatB = (QuaternionObject *)b; if (BaseMath_ReadCallback(quatA) == -1 || BaseMath_ReadCallback(quatB) == -1) return NULL; ok = (EXPP_VectorsAreEqual(quatA->quat, quatB->quat, QUAT_SIZE, 1)) ? 0 : -1; } switch (op) { case Py_NE: ok = !ok; /* pass through */ case Py_EQ: res = ok ? Py_False : Py_True; break; case Py_LT: case Py_LE: case Py_GT: case Py_GE: res = Py_NotImplemented; break; default: PyErr_BadArgument(); return NULL; } return Py_INCREF(res), res; }