コード例 #1
0
ファイル: array.c プロジェクト: python-postgres/be
/*
 * 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);
}
コード例 #2
0
ファイル: object.c プロジェクト: fdr/pg-python
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);
}
コード例 #3
0
ファイル: object.c プロジェクト: fdr/pg-python
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);
}
コード例 #4
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_or(PyObj self, PyObj with)
{
	return(PyPgObject_Operate("|", self, with));
}
コード例 #5
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_and(PyObj self, PyObj with)
{
	return(PyPgObject_Operate("&", self, with));
}
コード例 #6
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_rshift(PyObj self, PyObj with)
{
	return(PyPgObject_Operate(">>", self, with));
}
コード例 #7
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_invert(PyObj self)
{
	return(PyPgObject_Operate("~", self, NULL));
}
コード例 #8
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_positive(PyObj self)
{
	return(PyPgObject_Operate("+", self, NULL));
}
コード例 #9
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_negative(PyObj self)
{
	return(PyPgObject_Operate("-", self, NULL));
}
コード例 #10
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_power(PyObj self, PyObj with, PyObj andthis)
{
	return(PyPgObject_Operate("^", self, with));
}
コード例 #11
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_divide(PyObj self, PyObj with)
{
	return(PyPgObject_Operate("/", self, with));
}
コード例 #12
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_remainder(PyObj self, PyObj with)
{
	return(PyPgObject_Operate("%", self, with));
}
コード例 #13
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_multiply(PyObj self, PyObj with)
{
	return(PyPgObject_Operate("*", self, with));
}
コード例 #14
0
ファイル: object.c プロジェクト: fdr/pg-python
static PyObj
obj_subtract(PyObj self, PyObj with)
{
	return(PyPgObject_Operate("-", self, with));
}