mirror of
https://github.com/vim/vim.git
synced 2025-10-26 09:14:23 -04:00
patch 9.1.1239: if_python: no tuple data type support
Problem: if_python: no tuple data type support (after v9.1.1232)
Solution: Add support for using Vim tuple in the python interface
(Yegappan Lakshmanan)
closes: #16964
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
9d5487f6fd
commit
038be2701d
@@ -201,6 +201,10 @@ struct PyMethodDef { Py_ssize_t a; };
|
||||
# define PyList_SetItem dll_PyList_SetItem
|
||||
# define PyList_Size dll_PyList_Size
|
||||
# define PyList_Type (*dll_PyList_Type)
|
||||
# define PyTuple_GetItem dll_PyTuple_GetItem
|
||||
# define PyTuple_New dll_PyTuple_New
|
||||
# define PyTuple_Size dll_PyTuple_Size
|
||||
# define PyTuple_Type (*dll_PyTuple_Type)
|
||||
# define PySequence_Check dll_PySequence_Check
|
||||
# define PySequence_Size dll_PySequence_Size
|
||||
# define PySequence_GetItem dll_PySequence_GetItem
|
||||
@@ -352,13 +356,16 @@ static PyObject*(*dll_PyList_New)(PyInt size);
|
||||
static int(*dll_PyList_SetItem)(PyObject *, PyInt, PyObject *);
|
||||
static PyInt(*dll_PyList_Size)(PyObject *);
|
||||
static PyTypeObject* dll_PyList_Type;
|
||||
static PyObject*(*dll_PyTuple_GetItem)(PyObject *, PyInt);
|
||||
static int(*dll_PyTuple_SetItem)(PyObject *, PyInt, PyObject *);
|
||||
static int(*dll_PyTuple_SET_ITEM)(PyObject *, PyInt, PyObject *);
|
||||
static PyObject*(*dll_PyTuple_New)(PyInt size);
|
||||
static PyInt(*dll_PyTuple_Size)(PyObject *);
|
||||
static PyTypeObject* dll_PyTuple_Type;
|
||||
static int (*dll_PySequence_Check)(PyObject *);
|
||||
static PyInt(*dll_PySequence_Size)(PyObject *);
|
||||
static PyObject*(*dll_PySequence_GetItem)(PyObject *, PyInt);
|
||||
static PyObject*(*dll_PySequence_Fast)(PyObject *, const char *);
|
||||
static PyInt(*dll_PyTuple_Size)(PyObject *);
|
||||
static PyObject*(*dll_PyTuple_GetItem)(PyObject *, PyInt);
|
||||
static PyTypeObject* dll_PyTuple_Type;
|
||||
static int (*dll_PySlice_GetIndicesEx)(PySliceObject *r, PyInt length,
|
||||
PyInt *start, PyInt *stop, PyInt *step,
|
||||
PyInt *slicelen);
|
||||
@@ -540,6 +547,12 @@ static struct
|
||||
{"PyList_SetItem", (PYTHON_PROC*)&dll_PyList_SetItem},
|
||||
{"PyList_Size", (PYTHON_PROC*)&dll_PyList_Size},
|
||||
{"PyList_Type", (PYTHON_PROC*)&dll_PyList_Type},
|
||||
{"PyTuple_GetItem", (PYTHON_PROC*)&dll_PyTuple_GetItem},
|
||||
{"PyTuple_SetItem", (PYTHON_PROC*)&dll_PyTuple_SetItem},
|
||||
{"PyTuple_SET_ITEM", (PYTHON_PROC*)&dll_PyTuple_SET_ITEM},
|
||||
{"PyTuple_New", (PYTHON_PROC*)&dll_PyTuple_New},
|
||||
{"PyTuple_Size", (PYTHON_PROC*)&dll_PyTuple_Size},
|
||||
{"PyTuple_Type", (PYTHON_PROC*)&dll_PyTuple_Type},
|
||||
{"PySequence_Size", (PYTHON_PROC*)&dll_PySequence_Size},
|
||||
{"PySequence_Check", (PYTHON_PROC*)&dll_PySequence_Check},
|
||||
{"PySequence_GetItem", (PYTHON_PROC*)&dll_PySequence_GetItem},
|
||||
@@ -786,6 +799,7 @@ static PyObject *TabPageGetattr(PyObject *, char *);
|
||||
static PyObject *RangeGetattr(PyObject *, char *);
|
||||
static PyObject *DictionaryGetattr(PyObject *, char*);
|
||||
static PyObject *ListGetattr(PyObject *, char *);
|
||||
static PyObject *TupleGetattr(PyObject *, char *);
|
||||
static PyObject *FunctionGetattr(PyObject *, char *);
|
||||
|
||||
#ifndef Py_VISIT
|
||||
@@ -1510,6 +1524,17 @@ ListGetattr(PyObject *self, char *name)
|
||||
return Py_FindMethod(ListMethods, self, name);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
TupleGetattr(PyObject *self, char *name)
|
||||
{
|
||||
if (strcmp(name, "locked") == 0)
|
||||
return PyInt_FromLong(((TupleObject *)(self))->tuple->tv_lock);
|
||||
else if (strcmp(name, "__members__") == 0)
|
||||
return ObjectDir(NULL, TupleAttrs);
|
||||
|
||||
return Py_FindMethod(TupleMethods, self, name);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
FunctionGetattr(PyObject *self, char *name)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user