示例#1
0
文件: if_python.c 项目: aosm/vim
    static PyInt
BufferAssItem(PyObject *self, PyInt n, PyObject *val)
{
    return RBAsItem((BufferObject *)(self), n, val, 1,
		     (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
		     NULL);
}
示例#2
0
static Py_ssize_t
BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
{
	if (PyLong_Check(idx)) {
		long n = PyLong_AsLong(idx);
		return RBAsItem((BufferObject *)(self), n, val, 1,
						(Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
						NULL);
	} else if (PySlice_Check(idx)) {
		Py_ssize_t start, stop, step, slicelen;

		if (CheckBuffer((BufferObject *) self))
			return -1;

		if (PySlice_GetIndicesEx((PySliceObject_T *)idx,
								 (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
								 &start, &stop,
								 &step, &slicelen) < 0) {
			return -1;
		}
		return RBAsSlice((BufferObject *)(self), start, stop, val, 1,
						 (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
						 NULL);
	} else {
		RAISE_INVALID_INDEX_TYPE(idx);
		return -1;
	}
}
示例#3
0
文件: if_python3.c 项目: Bitesher/Vim
    static Py_ssize_t
BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
{
    if (PyLong_Check(idx)) {
	long n = PyLong_AsLong(idx);
	return RBAsItem((BufferObject *)(self), n, val, 1,
		    (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
		    NULL);
    } else if (PySlice_Check(idx)) {
	Py_ssize_t start, stop, step, slicelen;

	if (PySlice_GetIndicesEx((PyObject *)idx,
	      (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
	      &start, &stop,
	      &step, &slicelen) < 0) {
	    return -1;
	}
	return RBAsSlice((BufferObject *)(self), start, stop, val, 1,
			  (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
			  NULL);
    } else {
	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
	return -1;
    }
}
示例#4
0
文件: if_python.c 项目: aosm/vim
    static PyInt
RangeAssItem(PyObject *self, PyInt n, PyObject *val)
{
    return RBAsItem(((RangeObject *)(self))->buf, n, val,
		     ((RangeObject *)(self))->start,
		     ((RangeObject *)(self))->end,
		     &((RangeObject *)(self))->end);
}
示例#5
0
    static PyInt
BufferAssItem(PyObject *self, PyInt n, PyObject *val)
{
    return RBAsItem((BufferObject *)(self), n, val, 1, -1, NULL);
}