Example #1
0
static int
_TreeSet_update(BTree *self, PyObject *seq)
{
    int n=0, ind=0;
    PyObject *iter, *v;

    iter = PyObject_GetIter(seq);
    if (iter == NULL)
	return -1;

    while (1) {
	v = PyIter_Next(iter);
	if (v == NULL) {
	    if (PyErr_Occurred())
		goto err;
	    else
		break;
	}
	ind = _BTree_set(self, v, Py_None, 1, 1);
	Py_DECREF(v);
	if (ind < 0)
	    goto err;
	else
	    n += ind;
    }

 err:
    Py_DECREF(iter);
    if (ind < 0)
      return -1;
    return n;
}
Example #2
0
static PyObject *
TreeSet_remove(BTree *self, PyObject *args)
{
  PyObject *key;

  UNLESS (PyArg_ParseTuple(args, "O", &key)) return NULL;
  if (_BTree_set(self, key, NULL, 0, 1) < 0) return NULL;
  Py_INCREF(Py_None);
  return Py_None;
}
Example #3
0
static PyObject *
TreeSet_insert(BTree *self, PyObject *args)
{
    PyObject *key;
    int i;

    if (!PyArg_ParseTuple(args, "O:insert", &key)) 
	return NULL;
    i = _BTree_set(self, key, Py_None, 1, 1);
    if (i < 0) 
	return NULL;
    return PyInt_FromLong(i);
}
Example #4
0
static int
_TreeSet_update(BTree *self, PyObject *seq)
{
    int n = -1;
    PyObject *iter, *v;
    int ind;

    iter = PyObject_GetIter(seq);
    if (iter == NULL)
	return -1;

    while (1) {
	v = PyIter_Next(iter);
	if (v == NULL) {
	    if (PyErr_Occurred())
		goto err;
	    else
		break;
	}
	ind = _BTree_set(self, v, Py_None, 1, 1);
	Py_DECREF(v);
	if (ind < 0)
	    goto err;
	else
	    n += ind;
    }
    /* n starts out at -1, which is the error return value.  If
       this point is reached, then there is no error.  n must be
       incremented to account for the initial value of -1 instead of
       0.
    */
    n++;

 err:
    Py_DECREF(iter);
    return n;
}