/* * Concatenate, but subjectively for supporting the distinction drawn by PyList * objects. */ static PyObj array_add(PyObj self, PyObj with) { PyObj wrapper, rob; if (!PyList_CheckExact(with) && !PyPgObject_Check(with)) { /* * It's probably an element object. */ wrapper = PyList_New(1); if (wrapper == NULL) return(NULL); PyList_SET_ITEM(wrapper, 0, with); Py_INCREF(with); } else { wrapper = with; Py_INCREF(wrapper); } rob = PyPgObject_Operate("||", self, wrapper); Py_DECREF(wrapper); return(rob); }
static PyObj obj_richcompare(PyObj self, PyObj with, int comparison) { char *op = NULL; PyObj boolob, rob; if (with == Py_None) { Py_INCREF(Py_NotImplemented); return(Py_NotImplemented); } switch (comparison) { case Py_LT: op = "<"; break; case Py_LE: op = "<="; break; case Py_EQ: op = "="; break; case Py_NE: op = "<>"; break; case Py_GT: op = ">"; break; case Py_GE: op = ">="; break; default: Py_INCREF(Py_NotImplemented); return(Py_NotImplemented); break; } boolob = PyPgObject_Operate(op, self, with); if (boolob == NULL) return(NULL); if (obj_bool(boolob)) rob = Py_True; else rob = Py_False; Py_DECREF(boolob); Py_INCREF(rob); return(rob); }
static PyObj obj_divmod(PyObj self, PyObj with) { PyObj div, mod, rob; rob = PyTuple_New(2); if (rob == NULL) return(NULL); div = PyPgObject_Operate("/", self, with); if (div == NULL) goto error; PyTuple_SET_ITEM(rob, 0, div); mod = PyPgObject_Operate("%", self, with); if (mod == NULL) goto error; PyTuple_SET_ITEM(rob, 1, mod); return(rob); error: Py_DECREF(rob); return(NULL); }
static PyObj obj_or(PyObj self, PyObj with) { return(PyPgObject_Operate("|", self, with)); }
static PyObj obj_and(PyObj self, PyObj with) { return(PyPgObject_Operate("&", self, with)); }
static PyObj obj_rshift(PyObj self, PyObj with) { return(PyPgObject_Operate(">>", self, with)); }
static PyObj obj_invert(PyObj self) { return(PyPgObject_Operate("~", self, NULL)); }
static PyObj obj_positive(PyObj self) { return(PyPgObject_Operate("+", self, NULL)); }
static PyObj obj_negative(PyObj self) { return(PyPgObject_Operate("-", self, NULL)); }
static PyObj obj_power(PyObj self, PyObj with, PyObj andthis) { return(PyPgObject_Operate("^", self, with)); }
static PyObj obj_divide(PyObj self, PyObj with) { return(PyPgObject_Operate("/", self, with)); }
static PyObj obj_remainder(PyObj self, PyObj with) { return(PyPgObject_Operate("%", self, with)); }
static PyObj obj_multiply(PyObj self, PyObj with) { return(PyPgObject_Operate("*", self, with)); }
static PyObj obj_subtract(PyObj self, PyObj with) { return(PyPgObject_Operate("-", self, with)); }