]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.3.992 v7.3.992
authorBram Moolenaar <Bram@vim.org>
Tue, 21 May 2013 16:30:34 +0000 (18:30 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 21 May 2013 16:30:34 +0000 (18:30 +0200)
Problem:    Python: Too many type casts.
Solution:   Change argument types. (ZyX)

src/if_py_both.h
src/if_python.c
src/if_python3.c
src/version.c

index fd500330ef6cbfead656a1dd2068364e7b3e10f4..e60c35d37fcaf05b6cd1b38408ddf58fff1ecc01 100644 (file)
@@ -76,7 +76,7 @@ typedef struct
 } OutputObject;
 
     static int
-OutputSetattr(PyObject *self, char *name, PyObject *val)
+OutputSetattr(OutputObject *self, char *name, PyObject *val)
 {
     if (val == NULL)
     {
@@ -93,7 +93,7 @@ OutputSetattr(PyObject *self, char *name, PyObject *val)
            return -1;
        }
 
-       ((OutputObject *)(self))->softspace = PyInt_AsLong(val);
+       self->softspace = PyInt_AsLong(val);
        return 0;
     }
 
@@ -152,11 +152,11 @@ writer(writefn fn, char_u *str, PyInt n)
 }
 
     static PyObject *
-OutputWrite(PyObject *self, PyObject *args)
+OutputWrite(OutputObject *self, PyObject *args)
 {
     Py_ssize_t len = 0;
     char *str = NULL;
-    int error = ((OutputObject *)(self))->error;
+    int error = self->error;
 
     if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len))
        return NULL;
@@ -173,12 +173,12 @@ OutputWrite(PyObject *self, PyObject *args)
 }
 
     static PyObject *
-OutputWritelines(PyObject *self, PyObject *args)
+OutputWritelines(OutputObject *self, PyObject *args)
 {
     PyInt n;
     PyInt i;
     PyObject *list;
-    int error = ((OutputObject *)(self))->error;
+    int error = self->error;
 
     if (!PyArg_ParseTuple(args, "O", &list))
        return NULL;
@@ -220,7 +220,7 @@ OutputWritelines(PyObject *self, PyObject *args)
 }
 
     static PyObject *
-OutputFlush(PyObject *self UNUSED, PyObject *args UNUSED)
+OutputFlush(PyObject *self UNUSED)
 {
     /* do nothing */
     Py_INCREF(Py_None);
@@ -230,11 +230,11 @@ OutputFlush(PyObject *self UNUSED, PyObject *args UNUSED)
 /***************/
 
 static struct PyMethodDef OutputMethods[] = {
-    /* name,       function,           calling,    documentation */
-    {"write",      OutputWrite,        1,          ""},
-    {"writelines",  OutputWritelines,  1,          ""},
-    {"flush",      OutputFlush,        1,          ""},
-    { NULL,        NULL,               0,          NULL}
+    /* name,       function,                           calling,        doc */
+    {"write",      (PyCFunction)OutputWrite,           METH_VARARGS,   ""},
+    {"writelines",  (PyCFunction)OutputWritelines,     METH_VARARGS,   ""},
+    {"flush",      (PyCFunction)OutputFlush,           METH_NOARGS,    ""},
+    { NULL,        NULL,                               0,              NULL}
 };
 
 static OutputObject Output =
@@ -533,12 +533,12 @@ VimStrwidth(PyObject *self UNUSED, PyObject *args)
  */
 
 static struct PyMethodDef VimMethods[] = {
-    /* name,        function,          calling,    documentation */
-    {"command",             VimCommand,        1,          "Execute a Vim ex-mode command" },
-    {"eval",        VimEval,           1,          "Evaluate an expression using Vim evaluator" },
-    {"bindeval",     VimEvalPy,                1,          "Like eval(), but returns objects attached to vim ones"},
-    {"strwidth",     VimStrwidth,      1,          "Screen string width, counts <Tab> as having width 1"},
-    { NULL,         NULL,              0,          NULL }
+    /* name,        function,          calling,        documentation */
+    {"command",             VimCommand,        METH_VARARGS,   "Execute a Vim ex-mode command" },
+    {"eval",        VimEval,           METH_VARARGS,   "Evaluate an expression using Vim evaluator" },
+    {"bindeval",     VimEvalPy,                METH_VARARGS,   "Like eval(), but returns objects attached to vim ones"},
+    {"strwidth",     VimStrwidth,      METH_VARARGS,   "Screen string width, counts <Tab> as having width 1"},
+    { NULL,         NULL,              0,              NULL }
 };
 
 /*
@@ -583,22 +583,18 @@ IterNew(void *start, destructorfun destruct, nextfun next, traversefun traverse,
 }
 
     static void
-IterDestructor(PyObject *self)
+IterDestructor(IterObject *self)
 {
-    IterObject *this = (IterObject *)(self);
-
-    this->destruct(this->cur);
+    self->destruct(self->cur);
 
     DESTRUCTOR_FINISH(self);
 }
 
     static int
-IterTraverse(PyObject *self, visitproc visit, void *arg)
+IterTraverse(IterObject *self, visitproc visit, void *arg)
 {
-    IterObject *this = (IterObject *)(self);
-
-    if (this->traverse != NULL)
-       return this->traverse(this->cur, visit, arg);
+    if (self->traverse != NULL)
+       return self->traverse(self->cur, visit, arg);
     else
        return 0;
 }
@@ -609,22 +605,18 @@ IterTraverse(PyObject *self, visitproc visit, void *arg)
 #endif
 
     static int
-IterClear(PyObject *self)
+IterClear(IterObject *self)
 {
-    IterObject *this = (IterObject *)(self);
-
-    if (this->clear != NULL)
-       return this->clear(&this->cur);
+    if (self->clear != NULL)
+       return self->clear(&self->cur);
     else
        return 0;
 }
 
     static PyObject *
-IterNext(PyObject *self)
+IterNext(IterObject *self)
 {
-    IterObject *this = (IterObject *)(self);
-
-    return this->next(&this->cur);
+    return self->next(&self->cur);
 }
 
     static PyObject *
@@ -711,21 +703,17 @@ DictionaryNew(dict_T *dict)
 }
 
     static void
-DictionaryDestructor(PyObject *self)
+DictionaryDestructor(DictionaryObject *self)
 {
-    DictionaryObject   *this = ((DictionaryObject *) (self));
-
-    pyll_remove(&this->ref, &lastdict);
-    dict_unref(this->dict);
+    pyll_remove(&self->ref, &lastdict);
+    dict_unref(self->dict);
 
     DESTRUCTOR_FINISH(self);
 }
 
     static int
-DictionarySetattr(PyObject *self, char *name, PyObject *val)
+DictionarySetattr(DictionaryObject *self, char *name, PyObject *val)
 {
-    DictionaryObject *this = (DictionaryObject *)(self);
-
     if (val == NULL)
     {
        PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes"));
@@ -734,7 +722,7 @@ DictionarySetattr(PyObject *self, char *name, PyObject *val)
 
     if (strcmp(name, "locked") == 0)
     {
-       if (this->dict->dv_lock == VAR_FIXED)
+       if (self->dict->dv_lock == VAR_FIXED)
        {
            PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed dictionary"));
            return -1;
@@ -745,9 +733,9 @@ DictionarySetattr(PyObject *self, char *name, PyObject *val)
            if (istrue == -1)
                return -1;
            else if (istrue)
-               this->dict->dv_lock = VAR_LOCKED;
+               self->dict->dv_lock = VAR_LOCKED;
            else
-               this->dict->dv_lock = 0;
+               self->dict->dv_lock = 0;
        }
        return 0;
     }
@@ -759,13 +747,13 @@ DictionarySetattr(PyObject *self, char *name, PyObject *val)
 }
 
     static PyInt
-DictionaryLength(PyObject *self)
+DictionaryLength(DictionaryObject *self)
 {
-    return ((PyInt) ((((DictionaryObject *)(self))->dict->dv_hashtab.ht_used)));
+    return ((PyInt) (self->dict->dv_hashtab.ht_used));
 }
 
     static PyObject *
-DictionaryItem(PyObject *self, PyObject *keyObject)
+DictionaryItem(DictionaryObject *self, PyObject *keyObject)
 {
     char_u     *key;
     dictitem_T *di;
@@ -773,7 +761,7 @@ DictionaryItem(PyObject *self, PyObject *keyObject)
 
     DICTKEY_GET_NOTEMPTY(NULL)
 
-    di = dict_find(((DictionaryObject *) (self))->dict, key, -1);
+    di = dict_find(self->dict, key, -1);
 
     DICTKEY_UNREF
 
@@ -787,11 +775,11 @@ DictionaryItem(PyObject *self, PyObject *keyObject)
 }
 
     static PyInt
-DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject)
+DictionaryAssItem(DictionaryObject *self, PyObject *keyObject, PyObject *valObject)
 {
     char_u     *key;
     typval_T   tv;
-    dict_T     *d = ((DictionaryObject *)(self))->dict;
+    dict_T     *d = self->dict;
     dictitem_T *di;
     DICTKEY_DECL
 
@@ -852,9 +840,9 @@ DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject)
 }
 
     static PyObject *
-DictionaryListKeys(PyObject *self UNUSED)
+DictionaryListKeys(DictionaryObject *self)
 {
-    dict_T     *dict = ((DictionaryObject *)(self))->dict;
+    dict_T     *dict = self->dict;
     long_u     todo = dict->dv_hashtab.ht_used;
     Py_ssize_t i = 0;
     PyObject   *r;
@@ -880,8 +868,8 @@ static PyMappingMethods DictionaryAsMapping = {
 };
 
 static struct PyMethodDef DictionaryMethods[] = {
-    {"keys", (PyCFunction)DictionaryListKeys, METH_NOARGS, ""},
-    { NULL,        NULL,               0,          NULL }
+    {"keys",   (PyCFunction)DictionaryListKeys,        METH_NOARGS,    ""},
+    { NULL,    NULL,                                   0,              NULL }
 };
 
 static PyTypeObject ListType;
@@ -912,12 +900,10 @@ ListNew(list_T *list)
 }
 
     static void
-ListDestructor(PyObject *self)
+ListDestructor(ListObject *self)
 {
-    ListObject *this = (ListObject *)(self);
-
-    pyll_remove(&this->ref, &lastlist);
-    list_unref(this->list);
+    pyll_remove(&self->ref, &lastlist);
+    list_unref(self->list);
 
     DESTRUCTOR_FINISH(self);
 }
@@ -952,22 +938,22 @@ list_py_concat(list_T *l, PyObject *obj, PyObject *lookupDict)
 }
 
     static PyInt
-ListLength(PyObject *self)
+ListLength(ListObject *self)
 {
-    return ((PyInt) (((ListObject *) (self))->list->lv_len));
+    return ((PyInt) (self->list->lv_len));
 }
 
     static PyObject *
-ListItem(PyObject *self, Py_ssize_t index)
+ListItem(ListObject *self, Py_ssize_t index)
 {
     listitem_T *li;
 
-    if (index>=ListLength(self))
+    if (index >= ListLength(self))
     {
        PyErr_SetString(PyExc_IndexError, _("list index out of range"));
        return NULL;
     }
-    li = list_find(((ListObject *) (self))->list, (long) index);
+    li = list_find(self->list, (long) index);
     if (li == NULL)
     {
        PyErr_SetVim(_("internal error: failed to get vim list item"));
@@ -991,7 +977,7 @@ ListItem(PyObject *self, Py_ssize_t index)
        last = size;
 
     static PyObject *
-ListSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last)
+ListSlice(ListObject *self, Py_ssize_t first, Py_ssize_t last)
 {
     PyInt      i;
     PyInt      size = ListLength(self);
@@ -1058,10 +1044,10 @@ ListIterNext(listiterinfo_T **lii)
 }
 
     static PyObject *
-ListIter(PyObject *self)
+ListIter(ListObject *self)
 {
     listiterinfo_T     *lii;
-    list_T     *l = ((ListObject *) (self))->list;
+    list_T     *l = self->list;
 
     if (!(lii = PyMem_New(listiterinfo_T, 1)))
     {
@@ -1079,10 +1065,10 @@ ListIter(PyObject *self)
 }
 
     static int
-ListAssItem(PyObject *self, Py_ssize_t index, PyObject *obj)
+ListAssItem(ListObject *self, Py_ssize_t index, PyObject *obj)
 {
     typval_T   tv;
-    list_T     *l = ((ListObject *) (self))->list;
+    list_T     *l = self->list;
     listitem_T *li;
     Py_ssize_t length = ListLength(self);
 
@@ -1127,7 +1113,7 @@ ListAssItem(PyObject *self, Py_ssize_t index, PyObject *obj)
 }
 
     static int
-ListAssSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
+ListAssSlice(ListObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
 {
     PyInt      size = ListLength(self);
     Py_ssize_t i;
@@ -1136,7 +1122,7 @@ ListAssSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
     listitem_T *li;
     listitem_T *next;
     typval_T   v;
-    list_T     *l = ((ListObject *) (self))->list;
+    list_T     *l = self->list;
 
     if (l->lv_lock)
     {
@@ -1196,9 +1182,9 @@ ListAssSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *obj)
 }
 
     static PyObject *
-ListConcatInPlace(PyObject *self, PyObject *obj)
+ListConcatInPlace(ListObject *self, PyObject *obj)
 {
-    list_T     *l = ((ListObject *) (self))->list;
+    list_T     *l = self->list;
     PyObject   *lookup_dict;
 
     if (l->lv_lock)
@@ -1222,14 +1208,12 @@ ListConcatInPlace(PyObject *self, PyObject *obj)
     Py_DECREF(lookup_dict);
 
     Py_INCREF(self);
-    return self;
+    return (PyObject *)(self);
 }
 
     static int
-ListSetattr(PyObject *self, char *name, PyObject *val)
+ListSetattr(ListObject *self, char *name, PyObject *val)
 {
-    ListObject *this = (ListObject *)(self);
-
     if (val == NULL)
     {
        PyErr_SetString(PyExc_AttributeError,
@@ -1239,7 +1223,7 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
 
     if (strcmp(name, "locked") == 0)
     {
-       if (this->list->lv_lock == VAR_FIXED)
+       if (self->list->lv_lock == VAR_FIXED)
        {
            PyErr_SetString(PyExc_TypeError, _("cannot modify fixed list"));
            return -1;
@@ -1250,9 +1234,9 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
            if (istrue == -1)
                return -1;
            else if (istrue)
-               this->list->lv_lock = VAR_LOCKED;
+               self->list->lv_lock = VAR_LOCKED;
            else
-               this->list->lv_lock = 0;
+               self->list->lv_lock = 0;
        }
        return 0;
     }
@@ -1264,8 +1248,8 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
 }
 
 static struct PyMethodDef ListMethods[] = {
-    {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""},
-    { NULL,        NULL,               0,          NULL }
+    {"extend", (PyCFunction)ListConcatInPlace, METH_O, ""},
+    { NULL,    NULL,                           0,      NULL }
 };
 
 typedef struct
@@ -1296,21 +1280,18 @@ FunctionNew(char_u *name)
 }
 
     static void
-FunctionDestructor(PyObject *self)
+FunctionDestructor(FunctionObject *self)
 {
-    FunctionObject     *this = (FunctionObject *) (self);
-
-    func_unref(this->name);
-    PyMem_Free(this->name);
+    func_unref(self->name);
+    PyMem_Free(self->name);
 
     DESTRUCTOR_FINISH(self);
 }
 
     static PyObject *
-FunctionCall(PyObject *self, PyObject *argsObject, PyObject *kwargs)
+FunctionCall(FunctionObject *self, PyObject *argsObject, PyObject *kwargs)
 {
-    FunctionObject     *this = (FunctionObject *)(self);
-    char_u     *name = this->name;
+    char_u     *name = self->name;
     typval_T   args;
     typval_T   selfdicttv;
     typval_T   rettv;
@@ -1368,8 +1349,8 @@ FunctionCall(PyObject *self, PyObject *argsObject, PyObject *kwargs)
 }
 
 static struct PyMethodDef FunctionMethods[] = {
-    {"__call__",    (PyCFunction)FunctionCall, METH_VARARGS|METH_KEYWORDS, ""},
-    { NULL,        NULL,               0,          NULL }
+    {"__call__",    (PyCFunction)FunctionCall, METH_VARARGS|METH_KEYWORDS, ""},
+    { NULL,        NULL,                       0,                         NULL}
 };
 
 /*
@@ -1415,29 +1396,29 @@ OptionsNew(int opt_type, void *from, checkfun Check, PyObject *fromObj)
 }
 
     static void
-OptionsDestructor(PyObject *self)
+OptionsDestructor(OptionsObject *self)
 {
-    if (((OptionsObject *)(self))->fromObj)
-       Py_DECREF(((OptionsObject *)(self))->fromObj);
+    if (self->fromObj)
+       Py_DECREF(self->fromObj);
     DESTRUCTOR_FINISH(self);
 }
 
     static int
-OptionsTraverse(PyObject *self, visitproc visit, void *arg)
+OptionsTraverse(OptionsObject *self, visitproc visit, void *arg)
 {
-    Py_VISIT(((OptionsObject *)(self))->fromObj);
+    Py_VISIT(self->fromObj);
     return 0;
 }
 
     static int
-OptionsClear(PyObject *self)
+OptionsClear(OptionsObject *self)
 {
-    Py_CLEAR(((OptionsObject *)(self))->fromObj);
+    Py_CLEAR(self->fromObj);
     return 0;
 }
 
     static PyObject *
-OptionsItem(OptionsObject *this, PyObject *keyObject)
+OptionsItem(OptionsObject *self, PyObject *keyObject)
 {
     char_u     *key;
     int                flags;
@@ -1445,13 +1426,13 @@ OptionsItem(OptionsObject *this, PyObject *keyObject)
     char_u     *stringval;
     DICTKEY_DECL
 
-    if (this->Check(this->from))
+    if (self->Check(self->from))
        return NULL;
 
     DICTKEY_GET_NOTEMPTY(NULL)
 
     flags = get_option_value_strict(key, &numval, &stringval,
-                                   this->opt_type, this->from);
+                                   self->opt_type, self->from);
 
     DICTKEY_UNREF
 
@@ -1532,7 +1513,7 @@ set_option_value_for(key, numval, stringval, opt_flags, opt_type, from)
 }
 
     static int
-OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
+OptionsAssItem(OptionsObject *self, PyObject *keyObject, PyObject *valObject)
 {
     char_u     *key;
     int                flags;
@@ -1540,13 +1521,13 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
     int                r = 0;
     DICTKEY_DECL
 
-    if (this->Check(this->from))
+    if (self->Check(self->from))
        return -1;
 
     DICTKEY_GET_NOTEMPTY(-1)
 
     flags = get_option_value_strict(key, NULL, NULL,
-                                   this->opt_type, this->from);
+                                   self->opt_type, self->from);
 
     DICTKEY_UNREF
 
@@ -1558,7 +1539,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
 
     if (valObject == NULL)
     {
-       if (this->opt_type == SREQ_GLOBAL)
+       if (self->opt_type == SREQ_GLOBAL)
        {
            PyErr_SetString(PyExc_ValueError,
                    _("unable to unset global option"));
@@ -1572,12 +1553,12 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
        }
        else
        {
-           unset_global_local_option(key, this->from);
+           unset_global_local_option(key, self->from);
            return 0;
        }
     }
 
-    opt_flags = (this->opt_type ? OPT_LOCAL : OPT_GLOBAL);
+    opt_flags = (self->opt_type ? OPT_LOCAL : OPT_GLOBAL);
 
     if (flags & SOPT_BOOL)
     {
@@ -1585,7 +1566,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
        if (istrue == -1)
            return -1;
        r = set_option_value_for(key, istrue, NULL,
-                               opt_flags, this->opt_type, this->from);
+                               opt_flags, self->opt_type, self->from);
     }
     else if (flags & SOPT_NUM)
     {
@@ -1605,7 +1586,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
        }
 
        r = set_option_value_for(key, val, NULL, opt_flags,
-                               this->opt_type, this->from);
+                               self->opt_type, self->from);
     }
     else
     {
@@ -1643,7 +1624,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
        }
 
        r = set_option_value_for(key, 0, val, opt_flags,
-                               this->opt_type, this->from);
+                               self->opt_type, self->from);
        vim_free(val);
     }
 
@@ -1670,9 +1651,9 @@ static PyObject *WinListNew(TabPageObject *tabObject);
 static PyTypeObject TabPageType;
 
     static int
-CheckTabPage(TabPageObject *this)
+CheckTabPage(TabPageObject *self)
 {
-    if (this->tab == INVALID_TABPAGE_VALUE)
+    if (self->tab == INVALID_TABPAGE_VALUE)
     {
        PyErr_SetVim(_("attempt to refer to deleted tab page"));
        return -1;
@@ -1704,51 +1685,48 @@ TabPageNew(tabpage_T *tab)
 }
 
     static void
-TabPageDestructor(PyObject *self)
+TabPageDestructor(TabPageObject *self)
 {
-    TabPageObject *this = (TabPageObject *)(self);
-
-    if (this->tab && this->tab != INVALID_TABPAGE_VALUE)
-       TAB_PYTHON_REF(this->tab) = NULL;
+    if (self->tab && self->tab != INVALID_TABPAGE_VALUE)
+       TAB_PYTHON_REF(self->tab) = NULL;
 
     DESTRUCTOR_FINISH(self);
 }
 
     static PyObject *
-TabPageAttr(TabPageObject *this, char *name)
+TabPageAttr(TabPageObject *self, char *name)
 {
     if (strcmp(name, "windows") == 0)
-       return WinListNew(this);
+       return WinListNew(self);
     else if (strcmp(name, "number") == 0)
-       return PyLong_FromLong((long) get_tab_number(this->tab));
+       return PyLong_FromLong((long) get_tab_number(self->tab));
     else if (strcmp(name, "vars") == 0)
-       return DictionaryNew(this->tab->tp_vars);
+       return DictionaryNew(self->tab->tp_vars);
     else if (strcmp(name, "window") == 0)
     {
        /* For current tab window.c does not bother to set or update tp_curwin
         */
-       if (this->tab == curtab)
+       if (self->tab == curtab)
            return WindowNew(curwin, curtab);
        else
-           return WindowNew(this->tab->tp_curwin, this->tab);
+           return WindowNew(self->tab->tp_curwin, self->tab);
     }
     return NULL;
 }
 
     static PyObject *
-TabPageRepr(PyObject *self)
+TabPageRepr(TabPageObject *self)
 {
     static char repr[100];
-    TabPageObject *this = (TabPageObject *)(self);
 
-    if (this->tab == INVALID_TABPAGE_VALUE)
+    if (self->tab == INVALID_TABPAGE_VALUE)
     {
        vim_snprintf(repr, 100, _("<tabpage object (deleted) at %p>"), (self));
        return PyString_FromString(repr);
     }
     else
     {
-       int     t = get_tab_number(this->tab);
+       int     t = get_tab_number(self->tab);
 
        if (t == 0)
            vim_snprintf(repr, 100, _("<tabpage object (unknown) at %p>"),
@@ -1818,9 +1796,9 @@ typedef struct
 static PyTypeObject WindowType;
 
     static int
-CheckWindow(WindowObject *this)
+CheckWindow(WindowObject *self)
 {
-    if (this->win == INVALID_WINDOW_VALUE)
+    if (self->win == INVALID_WINDOW_VALUE)
     {
        PyErr_SetVim(_("attempt to refer to deleted window"));
        return -1;
@@ -1869,14 +1847,12 @@ WindowNew(win_T *win, tabpage_T *tab)
 }
 
     static void
-WindowDestructor(PyObject *self)
+WindowDestructor(WindowObject *self)
 {
-    WindowObject *this = (WindowObject *)(self);
-
-    if (this->win && this->win != INVALID_WINDOW_VALUE)
-       WIN_PYTHON_REF(this->win) = NULL;
+    if (self->win && self->win != INVALID_WINDOW_VALUE)
+       WIN_PYTHON_REF(self->win) = NULL;
 
-    Py_DECREF(((PyObject *)(this->tabObject)));
+    Py_DECREF(((PyObject *)(self->tabObject)));
 
     DESTRUCTOR_FINISH(self);
 }
@@ -1899,58 +1875,58 @@ get_firstwin(TabPageObject *tabObject)
        return firstwin;
 }
     static int
-WindowTraverse(PyObject *self, visitproc visit, void *arg)
+WindowTraverse(WindowObject *self, visitproc visit, void *arg)
 {
-    Py_VISIT(((PyObject *)(((WindowObject *)(self))->tabObject)));
+    Py_VISIT(((PyObject *)(self->tabObject)));
     return 0;
 }
 
     static int
-WindowClear(PyObject *self)
+WindowClear(WindowObject *self)
 {
-    Py_CLEAR((((WindowObject *)(self))->tabObject));
+    Py_CLEAR(self->tabObject);
     return 0;
 }
 
     static PyObject *
-WindowAttr(WindowObject *this, char *name)
+WindowAttr(WindowObject *self, char *name)
 {
     if (strcmp(name, "buffer") == 0)
-       return (PyObject *)BufferNew(this->win->w_buffer);
+       return (PyObject *)BufferNew(self->win->w_buffer);
     else if (strcmp(name, "cursor") == 0)
     {
-       pos_T *pos = &this->win->w_cursor;
+       pos_T *pos = &self->win->w_cursor;
 
        return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col));
     }
     else if (strcmp(name, "height") == 0)
-       return PyLong_FromLong((long)(this->win->w_height));
+       return PyLong_FromLong((long)(self->win->w_height));
 #ifdef FEAT_WINDOWS
     else if (strcmp(name, "row") == 0)
-       return PyLong_FromLong((long)(this->win->w_winrow));
+       return PyLong_FromLong((long)(self->win->w_winrow));
 #endif
 #ifdef FEAT_VERTSPLIT
     else if (strcmp(name, "width") == 0)
-       return PyLong_FromLong((long)(W_WIDTH(this->win)));
+       return PyLong_FromLong((long)(W_WIDTH(self->win)));
     else if (strcmp(name, "col") == 0)
-       return PyLong_FromLong((long)(W_WINCOL(this->win)));
+       return PyLong_FromLong((long)(W_WINCOL(self->win)));
 #endif
     else if (strcmp(name, "vars") == 0)
-       return DictionaryNew(this->win->w_vars);
+       return DictionaryNew(self->win->w_vars);
     else if (strcmp(name, "options") == 0)
-       return OptionsNew(SREQ_WIN, this->win, (checkfun) CheckWindow,
-                       (PyObject *) this);
+       return OptionsNew(SREQ_WIN, self->win, (checkfun) CheckWindow,
+                       (PyObject *) self);
     else if (strcmp(name, "number") == 0)
     {
-       if (CheckTabPage(this->tabObject))
+       if (CheckTabPage(self->tabObject))
            return NULL;
        return PyLong_FromLong((long)
-               get_win_number(this->win, get_firstwin(this->tabObject)));
+               get_win_number(self->win, get_firstwin(self->tabObject)));
     }
     else if (strcmp(name, "tabpage") == 0)
     {
-       Py_INCREF(this->tabObject);
-       return (PyObject *)(this->tabObject);
+       Py_INCREF(self->tabObject);
+       return (PyObject *)(self->tabObject);
     }
     else if (strcmp(name,"__members__") == 0)
        return Py_BuildValue("[sssssssss]", "buffer", "cursor", "height",
@@ -1960,11 +1936,9 @@ WindowAttr(WindowObject *this, char *name)
 }
 
     static int
-WindowSetattr(PyObject *self, char *name, PyObject *val)
+WindowSetattr(WindowObject *self, char *name, PyObject *val)
 {
-    WindowObject *this = (WindowObject *)(self);
-
-    if (CheckWindow(this))
+    if (CheckWindow(self))
        return -1;
 
     if (strcmp(name, "buffer") == 0)
@@ -1980,7 +1954,7 @@ WindowSetattr(PyObject *self, char *name, PyObject *val)
        if (!PyArg_Parse(val, "(ll)", &lnum, &col))
            return -1;
 
-       if (lnum <= 0 || lnum > this->win->w_buffer->b_ml.ml_line_count)
+       if (lnum <= 0 || lnum > self->win->w_buffer->b_ml.ml_line_count)
        {
            PyErr_SetVim(_("cursor position outside buffer"));
            return -1;
@@ -1990,13 +1964,13 @@ WindowSetattr(PyObject *self, char *name, PyObject *val)
        if (VimErrorCheck())
            return -1;
 
-       this->win->w_cursor.lnum = lnum;
-       this->win->w_cursor.col = col;
+       self->win->w_cursor.lnum = lnum;
+       self->win->w_cursor.col = col;
 #ifdef FEAT_VIRTUALEDIT
-       this->win->w_cursor.coladd = 0;
+       self->win->w_cursor.coladd = 0;
 #endif
        /* When column is out of range silently correct it. */
-       check_cursor_col_win(this->win);
+       check_cursor_col_win(self->win);
 
        update_screen(VALID);
        return 0;
@@ -2013,7 +1987,7 @@ WindowSetattr(PyObject *self, char *name, PyObject *val)
        need_mouse_correct = TRUE;
 #endif
        savewin = curwin;
-       curwin = this->win;
+       curwin = self->win;
        win_setheight(height);
        curwin = savewin;
 
@@ -2036,7 +2010,7 @@ WindowSetattr(PyObject *self, char *name, PyObject *val)
        need_mouse_correct = TRUE;
 #endif
        savewin = curwin;
-       curwin = this->win;
+       curwin = self->win;
        win_setwidth(width);
        curwin = savewin;
 
@@ -2055,19 +2029,18 @@ WindowSetattr(PyObject *self, char *name, PyObject *val)
 }
 
     static PyObject *
-WindowRepr(PyObject *self)
+WindowRepr(WindowObject *self)
 {
     static char repr[100];
-    WindowObject *this = (WindowObject *)(self);
 
-    if (this->win == INVALID_WINDOW_VALUE)
+    if (self->win == INVALID_WINDOW_VALUE)
     {
        vim_snprintf(repr, 100, _("<window object (deleted) at %p>"), (self));
        return PyString_FromString(repr);
     }
     else
     {
-       int     w = get_win_number(this->win, firstwin);
+       int     w = get_win_number(self->win, firstwin);
 
        if (w == 0)
            vim_snprintf(repr, 100, _("<window object (unknown) at %p>"),
@@ -2110,9 +2083,9 @@ WinListNew(TabPageObject *tabObject)
 }
 
     static void
-WinListDestructor(PyObject *self)
+WinListDestructor(WinListObject *self)
 {
-    TabPageObject      *tabObject = ((WinListObject *)(self))->tabObject;
+    TabPageObject      *tabObject = self->tabObject;
 
     if (tabObject)
        Py_DECREF((PyObject *)(tabObject));
@@ -2121,12 +2094,12 @@ WinListDestructor(PyObject *self)
 }
 
     static PyInt
-WinListLength(PyObject *self)
+WinListLength(WinListObject *self)
 {
     win_T      *w;
     PyInt      n = 0;
 
-    if (!(w = get_firstwin(((WinListObject *)(self))->tabObject)))
+    if (!(w = get_firstwin(self->tabObject)))
        return -1;
 
     while (w != NULL)
@@ -2139,17 +2112,16 @@ WinListLength(PyObject *self)
 }
 
     static PyObject *
-WinListItem(PyObject *self, PyInt n)
+WinListItem(WinListObject *self, PyInt n)
 {
-    WinListObject      *this = ((WinListObject *)(self));
     win_T *w;
 
-    if (!(w = get_firstwin(this->tabObject)))
+    if (!(w = get_firstwin(self->tabObject)))
        return NULL;
 
     for (; w != NULL; w = W_NEXT(w), --n)
        if (n == 0)
-           return WindowNew(w, this->tabObject? this->tabObject->tab: curtab);
+           return WindowNew(w, self->tabObject? self->tabObject->tab: curtab);
 
     PyErr_SetString(PyExc_IndexError, _("no such window"));
     return NULL;
@@ -2721,9 +2693,9 @@ typedef struct
 } BufferObject;
 
     static int
-CheckBuffer(BufferObject *this)
+CheckBuffer(BufferObject *self)
 {
-    if (this->buf == INVALID_BUFFER_VALUE)
+    if (self->buf == INVALID_BUFFER_VALUE)
     {
        PyErr_SetVim(_("attempt to refer to deleted buffer"));
        return -1;
@@ -2922,54 +2894,46 @@ RangeNew(buf_T *buf, PyInt start, PyInt end)
 }
 
     static void
-RangeDestructor(PyObject *self)
+RangeDestructor(RangeObject *self)
 {
-    Py_DECREF(((RangeObject *)(self))->buf);
+    Py_DECREF(self->buf);
     DESTRUCTOR_FINISH(self);
 }
 
     static PyInt
-RangeLength(PyObject *self)
+RangeLength(RangeObject *self)
 {
     /* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */
-    if (CheckBuffer(((RangeObject *)(self))->buf))
+    if (CheckBuffer(self->buf))
        return -1; /* ??? */
 
-    return (((RangeObject *)(self))->end - ((RangeObject *)(self))->start + 1);
+    return (self->end - self->start + 1);
 }
 
     static PyObject *
-RangeItem(PyObject *self, PyInt n)
+RangeItem(RangeObject *self, PyInt n)
 {
-    return RBItem(((RangeObject *)(self))->buf, n,
-                 ((RangeObject *)(self))->start,
-                 ((RangeObject *)(self))->end);
+    return RBItem(self->buf, n, self->start, self->end);
 }
 
     static PyObject *
-RangeSlice(PyObject *self, PyInt lo, PyInt hi)
+RangeSlice(RangeObject *self, PyInt lo, PyInt hi)
 {
-    return RBSlice(((RangeObject *)(self))->buf, lo, hi,
-                  ((RangeObject *)(self))->start,
-                  ((RangeObject *)(self))->end);
+    return RBSlice(self->buf, lo, hi, self->start, self->end);
 }
 
     static PyObject *
-RangeAppend(PyObject *self, PyObject *args)
+RangeAppend(RangeObject *self, PyObject *args)
 {
-    return RBAppend(((RangeObject *)(self))->buf, args,
-                   ((RangeObject *)(self))->start,
-                   ((RangeObject *)(self))->end,
-                   &((RangeObject *)(self))->end);
+    return RBAppend(self->buf, args, self->start, self->end, &self->end);
 }
 
     static PyObject *
-RangeRepr(PyObject *self)
+RangeRepr(RangeObject *self)
 {
     static char repr[100];
-    RangeObject *this = (RangeObject *)(self);
 
-    if (this->buf->buf == INVALID_BUFFER_VALUE)
+    if (self->buf->buf == INVALID_BUFFER_VALUE)
     {
        vim_snprintf(repr, 100, "<range object (for deleted buffer) at %p>",
                                                                      (self));
@@ -2977,7 +2941,7 @@ RangeRepr(PyObject *self)
     }
     else
     {
-       char *name = (char *)this->buf->buf->b_fname;
+       char *name = (char *)self->buf->buf->b_fname;
        int len;
 
        if (name == NULL)
@@ -2989,16 +2953,16 @@ RangeRepr(PyObject *self)
 
        vim_snprintf(repr, 100, "<range %s%s (%d:%d)>",
                len > 45 ? "..." : "", name,
-               this->start, this->end);
+               self->start, self->end);
 
        return PyString_FromString(repr);
     }
 }
 
 static struct PyMethodDef RangeMethods[] = {
-    /* name,       function,           calling,    documentation */
-    {"append",     RangeAppend,        1,          "Append data to the Vim range" },
-    { NULL,        NULL,               0,          NULL }
+    /* name,   function,                       calling,        documentation */
+    {"append", (PyCFunction)RangeAppend,       METH_VARARGS,   "Append data to the Vim range" },
+    { NULL,    NULL,                           0,              NULL }
 };
 
 static PyTypeObject BufferType;
@@ -3045,50 +3009,48 @@ BufferNew(buf_T *buf)
 }
 
     static void
-BufferDestructor(PyObject *self)
+BufferDestructor(BufferObject *self)
 {
-    BufferObject *this = (BufferObject *)(self);
-
-    if (this->buf && this->buf != INVALID_BUFFER_VALUE)
-       BUF_PYTHON_REF(this->buf) = NULL;
+    if (self->buf && self->buf != INVALID_BUFFER_VALUE)
+       BUF_PYTHON_REF(self->buf) = NULL;
 
     DESTRUCTOR_FINISH(self);
 }
 
     static PyInt
-BufferLength(PyObject *self)
+BufferLength(BufferObject *self)
 {
     /* HOW DO WE SIGNAL AN ERROR FROM THIS FUNCTION? */
-    if (CheckBuffer((BufferObject *)(self)))
+    if (CheckBuffer(self))
        return -1; /* ??? */
 
-    return (PyInt)(((BufferObject *)(self))->buf->b_ml.ml_line_count);
+    return (PyInt)(self->buf->b_ml.ml_line_count);
 }
 
     static PyObject *
-BufferItem(PyObject *self, PyInt n)
+BufferItem(BufferObject *self, PyInt n)
 {
-    return RBItem((BufferObject *)(self), n, 1, -1);
+    return RBItem(self, n, 1, -1);
 }
 
     static PyObject *
-BufferSlice(PyObject *self, PyInt lo, PyInt hi)
+BufferSlice(BufferObject *self, PyInt lo, PyInt hi)
 {
-    return RBSlice((BufferObject *)(self), lo, hi, 1, -1);
+    return RBSlice(self, lo, hi, 1, -1);
 }
 
     static PyObject *
-BufferAttr(BufferObject *this, char *name)
+BufferAttr(BufferObject *self, char *name)
 {
     if (strcmp(name, "name") == 0)
-       return Py_BuildValue("s", this->buf->b_ffname);
+       return Py_BuildValue("s", self->buf->b_ffname);
     else if (strcmp(name, "number") == 0)
-       return Py_BuildValue(Py_ssize_t_fmt, this->buf->b_fnum);
+       return Py_BuildValue(Py_ssize_t_fmt, self->buf->b_fnum);
     else if (strcmp(name, "vars") == 0)
-       return DictionaryNew(this->buf->b_vars);
+       return DictionaryNew(self->buf->b_vars);
     else if (strcmp(name, "options") == 0)
-       return OptionsNew(SREQ_BUF, this->buf, (checkfun) CheckBuffer,
-                       (PyObject *) this);
+       return OptionsNew(SREQ_BUF, self->buf, (checkfun) CheckBuffer,
+                       (PyObject *) self);
     else if (strcmp(name,"__members__") == 0)
        return Py_BuildValue("[ssss]", "name", "number", "vars", "options");
     else
@@ -3096,27 +3058,27 @@ BufferAttr(BufferObject *this, char *name)
 }
 
     static PyObject *
-BufferAppend(PyObject *self, PyObject *args)
+BufferAppend(BufferObject *self, PyObject *args)
 {
-    return RBAppend((BufferObject *)(self), args, 1, -1, NULL);
+    return RBAppend(self, args, 1, -1, NULL);
 }
 
     static PyObject *
-BufferMark(PyObject *self, PyObject *args)
+BufferMark(BufferObject *self, PyObject *args)
 {
     pos_T      *posp;
     char       *pmark;
     char       mark;
     buf_T      *savebuf;
 
-    if (CheckBuffer((BufferObject *)(self)))
+    if (CheckBuffer(self))
        return NULL;
 
     if (!PyArg_ParseTuple(args, "s", &pmark))
        return NULL;
     mark = *pmark;
 
-    switch_buffer(&savebuf, ((BufferObject *)(self))->buf);
+    switch_buffer(&savebuf, self->buf);
     posp = getmark(mark, FALSE);
     restore_buffer(savebuf);
 
@@ -3141,34 +3103,33 @@ BufferMark(PyObject *self, PyObject *args)
 }
 
     static PyObject *
-BufferRange(PyObject *self, PyObject *args)
+BufferRange(BufferObject *self, PyObject *args)
 {
     PyInt start;
     PyInt end;
 
-    if (CheckBuffer((BufferObject *)(self)))
+    if (CheckBuffer(self))
        return NULL;
 
     if (!PyArg_ParseTuple(args, "nn", &start, &end))
        return NULL;
 
-    return RangeNew(((BufferObject *)(self))->buf, start, end);
+    return RangeNew(self->buf, start, end);
 }
 
     static PyObject *
-BufferRepr(PyObject *self)
+BufferRepr(BufferObject *self)
 {
     static char repr[100];
-    BufferObject *this = (BufferObject *)(self);
 
-    if (this->buf == INVALID_BUFFER_VALUE)
+    if (self->buf == INVALID_BUFFER_VALUE)
     {
        vim_snprintf(repr, 100, _("<buffer object (deleted) at %p>"), (self));
        return PyString_FromString(repr);
     }
     else
     {
-       char *name = (char *)this->buf->b_fname;
+       char *name = (char *)self->buf->b_fname;
        PyInt len;
 
        if (name == NULL)
@@ -3185,14 +3146,14 @@ BufferRepr(PyObject *self)
 }
 
 static struct PyMethodDef BufferMethods[] = {
-    /* name,       function,           calling,    documentation */
-    {"append",     BufferAppend,       1,          "Append data to Vim buffer" },
-    {"mark",       BufferMark,         1,          "Return (row,col) representing position of named mark" },
-    {"range",      BufferRange,        1,          "Return a range object which represents the part of the given buffer between line numbers s and e" },
+    /* name,       function,                   calling,        documentation */
+    {"append",     (PyCFunction)BufferAppend,  METH_VARARGS,   "Append data to Vim buffer" },
+    {"mark",       (PyCFunction)BufferMark,    METH_VARARGS,   "Return (row,col) representing position of named mark" },
+    {"range",      (PyCFunction)BufferRange,   METH_VARARGS,   "Return a range object which represents the part of the given buffer between line numbers s and e" },
 #if PY_VERSION_HEX >= 0x03000000
-    {"__dir__",            BufferDir,          4,          "List its attributes" },
+    {"__dir__",            (PyCFunction)BufferDir,     METH_NOARGS,    "List buffer attributes" },
 #endif
-    { NULL,        NULL,               0,          NULL }
+    { NULL,        NULL,                       0,              NULL }
 };
 
 /*
@@ -4021,14 +3982,14 @@ init_structs(void)
     OutputType.tp_doc = "vim message object";
     OutputType.tp_methods = OutputMethods;
 #if PY_MAJOR_VERSION >= 3
-    OutputType.tp_getattro = OutputGetattro;
-    OutputType.tp_setattro = OutputSetattro;
+    OutputType.tp_getattro = (getattrofunc)OutputGetattro;
+    OutputType.tp_setattro = (setattrofunc)OutputSetattro;
     OutputType.tp_alloc = call_PyType_GenericAlloc;
     OutputType.tp_new = call_PyType_GenericNew;
     OutputType.tp_free = call_PyObject_Free;
 #else
-    OutputType.tp_getattr = OutputGetattr;
-    OutputType.tp_setattr = OutputSetattr;
+    OutputType.tp_getattr = (getattrfunc)OutputGetattr;
+    OutputType.tp_setattr = (setattrfunc)OutputSetattr;
 #endif
 
     vim_memset(&IterType, 0, sizeof(IterType));
@@ -4036,67 +3997,67 @@ init_structs(void)
     IterType.tp_basicsize = sizeof(IterObject);
     IterType.tp_flags = Py_TPFLAGS_DEFAULT;
     IterType.tp_doc = "generic iterator object";
-    IterType.tp_iter = IterIter;
-    IterType.tp_iternext = IterNext;
-    IterType.tp_dealloc = IterDestructor;
-    IterType.tp_traverse = IterTraverse;
-    IterType.tp_clear = IterClear;
+    IterType.tp_iter = (getiterfunc)IterIter;
+    IterType.tp_iternext = (iternextfunc)IterNext;
+    IterType.tp_dealloc = (destructor)IterDestructor;
+    IterType.tp_traverse = (traverseproc)IterTraverse;
+    IterType.tp_clear = (inquiry)IterClear;
 
     vim_memset(&BufferType, 0, sizeof(BufferType));
     BufferType.tp_name = "vim.buffer";
     BufferType.tp_basicsize = sizeof(BufferType);
-    BufferType.tp_dealloc = BufferDestructor;
-    BufferType.tp_repr = BufferRepr;
+    BufferType.tp_dealloc = (destructor)BufferDestructor;
+    BufferType.tp_repr = (reprfunc)BufferRepr;
     BufferType.tp_as_sequence = &BufferAsSeq;
     BufferType.tp_as_mapping = &BufferAsMapping;
     BufferType.tp_flags = Py_TPFLAGS_DEFAULT;
     BufferType.tp_doc = "vim buffer object";
     BufferType.tp_methods = BufferMethods;
 #if PY_MAJOR_VERSION >= 3
-    BufferType.tp_getattro = BufferGetattro;
+    BufferType.tp_getattro = (getattrofunc)BufferGetattro;
     BufferType.tp_alloc = call_PyType_GenericAlloc;
     BufferType.tp_new = call_PyType_GenericNew;
     BufferType.tp_free = call_PyObject_Free;
 #else
-    BufferType.tp_getattr = BufferGetattr;
+    BufferType.tp_getattr = (getattrfunc)BufferGetattr;
 #endif
 
     vim_memset(&WindowType, 0, sizeof(WindowType));
     WindowType.tp_name = "vim.window";
     WindowType.tp_basicsize = sizeof(WindowObject);
-    WindowType.tp_dealloc = WindowDestructor;
-    WindowType.tp_repr = WindowRepr;
+    WindowType.tp_dealloc = (destructor)WindowDestructor;
+    WindowType.tp_repr = (reprfunc)WindowRepr;
     WindowType.tp_flags = Py_TPFLAGS_DEFAULT;
     WindowType.tp_doc = "vim Window object";
     WindowType.tp_methods = WindowMethods;
-    WindowType.tp_traverse = WindowTraverse;
-    WindowType.tp_clear = WindowClear;
+    WindowType.tp_traverse = (traverseproc)WindowTraverse;
+    WindowType.tp_clear = (inquiry)WindowClear;
 #if PY_MAJOR_VERSION >= 3
-    WindowType.tp_getattro = WindowGetattro;
-    WindowType.tp_setattro = WindowSetattro;
+    WindowType.tp_getattro = (getattrofunc)WindowGetattro;
+    WindowType.tp_setattro = (setattrofunc)WindowSetattro;
     WindowType.tp_alloc = call_PyType_GenericAlloc;
     WindowType.tp_new = call_PyType_GenericNew;
     WindowType.tp_free = call_PyObject_Free;
 #else
-    WindowType.tp_getattr = WindowGetattr;
-    WindowType.tp_setattr = WindowSetattr;
+    WindowType.tp_getattr = (getattrfunc)WindowGetattr;
+    WindowType.tp_setattr = (setattrfunc)WindowSetattr;
 #endif
 
     vim_memset(&TabPageType, 0, sizeof(TabPageType));
     TabPageType.tp_name = "vim.tabpage";
     TabPageType.tp_basicsize = sizeof(TabPageObject);
-    TabPageType.tp_dealloc = TabPageDestructor;
-    TabPageType.tp_repr = TabPageRepr;
+    TabPageType.tp_dealloc = (destructor)TabPageDestructor;
+    TabPageType.tp_repr = (reprfunc)TabPageRepr;
     TabPageType.tp_flags = Py_TPFLAGS_DEFAULT;
     TabPageType.tp_doc = "vim tab page object";
     TabPageType.tp_methods = TabPageMethods;
 #if PY_MAJOR_VERSION >= 3
-    TabPageType.tp_getattro = TabPageGetattro;
+    TabPageType.tp_getattro = (getattrofunc)TabPageGetattro;
     TabPageType.tp_alloc = call_PyType_GenericAlloc;
     TabPageType.tp_new = call_PyType_GenericNew;
     TabPageType.tp_free = call_PyObject_Free;
 #else
-    TabPageType.tp_getattr = TabPageGetattr;
+    TabPageType.tp_getattr = (getattrfunc)TabPageGetattr;
 #endif
 
     vim_memset(&BufMapType, 0, sizeof(BufMapType));
@@ -4113,7 +4074,7 @@ init_structs(void)
     WinListType.tp_as_sequence = &WinListAsSeq;
     WinListType.tp_flags = Py_TPFLAGS_DEFAULT;
     WinListType.tp_doc = "vim window list";
-    WinListType.tp_dealloc = WinListDestructor;
+    WinListType.tp_dealloc = (destructor)WinListDestructor;
 
     vim_memset(&TabListType, 0, sizeof(TabListType));
     TabListType.tp_name = "vim.tabpagelist";
@@ -4125,20 +4086,20 @@ init_structs(void)
     vim_memset(&RangeType, 0, sizeof(RangeType));
     RangeType.tp_name = "vim.range";
     RangeType.tp_basicsize = sizeof(RangeObject);
-    RangeType.tp_dealloc = RangeDestructor;
-    RangeType.tp_repr = RangeRepr;
+    RangeType.tp_dealloc = (destructor)RangeDestructor;
+    RangeType.tp_repr = (reprfunc)RangeRepr;
     RangeType.tp_as_sequence = &RangeAsSeq;
     RangeType.tp_as_mapping = &RangeAsMapping;
     RangeType.tp_flags = Py_TPFLAGS_DEFAULT;
     RangeType.tp_doc = "vim Range object";
     RangeType.tp_methods = RangeMethods;
 #if PY_MAJOR_VERSION >= 3
-    RangeType.tp_getattro = RangeGetattro;
+    RangeType.tp_getattro = (getattrofunc)RangeGetattro;
     RangeType.tp_alloc = call_PyType_GenericAlloc;
     RangeType.tp_new = call_PyType_GenericNew;
     RangeType.tp_free = call_PyObject_Free;
 #else
-    RangeType.tp_getattr = RangeGetattr;
+    RangeType.tp_getattr = (getattrfunc)RangeGetattr;
 #endif
 
     vim_memset(&CurrentType, 0, sizeof(CurrentType));
@@ -4147,59 +4108,59 @@ init_structs(void)
     CurrentType.tp_flags = Py_TPFLAGS_DEFAULT;
     CurrentType.tp_doc = "vim current object";
 #if PY_MAJOR_VERSION >= 3
-    CurrentType.tp_getattro = CurrentGetattro;
-    CurrentType.tp_setattro = CurrentSetattro;
+    CurrentType.tp_getattro = (getattrofunc)CurrentGetattro;
+    CurrentType.tp_setattro = (setattrofunc)CurrentSetattro;
 #else
-    CurrentType.tp_getattr = CurrentGetattr;
-    CurrentType.tp_setattr = CurrentSetattr;
+    CurrentType.tp_getattr = (getattrfunc)CurrentGetattr;
+    CurrentType.tp_setattr = (setattrfunc)CurrentSetattr;
 #endif
 
     vim_memset(&DictionaryType, 0, sizeof(DictionaryType));
     DictionaryType.tp_name = "vim.dictionary";
     DictionaryType.tp_basicsize = sizeof(DictionaryObject);
-    DictionaryType.tp_dealloc = DictionaryDestructor;
+    DictionaryType.tp_dealloc = (destructor)DictionaryDestructor;
     DictionaryType.tp_as_mapping = &DictionaryAsMapping;
     DictionaryType.tp_flags = Py_TPFLAGS_DEFAULT;
     DictionaryType.tp_doc = "dictionary pushing modifications to vim structure";
     DictionaryType.tp_methods = DictionaryMethods;
 #if PY_MAJOR_VERSION >= 3
-    DictionaryType.tp_getattro = DictionaryGetattro;
-    DictionaryType.tp_setattro = DictionarySetattro;
+    DictionaryType.tp_getattro = (getattrofunc)DictionaryGetattro;
+    DictionaryType.tp_setattro = (setattrofunc)DictionarySetattro;
 #else
-    DictionaryType.tp_getattr = DictionaryGetattr;
-    DictionaryType.tp_setattr = DictionarySetattr;
+    DictionaryType.tp_getattr = (getattrfunc)DictionaryGetattr;
+    DictionaryType.tp_setattr = (setattrfunc)DictionarySetattr;
 #endif
 
     vim_memset(&ListType, 0, sizeof(ListType));
     ListType.tp_name = "vim.list";
-    ListType.tp_dealloc = ListDestructor;
+    ListType.tp_dealloc = (destructor)ListDestructor;
     ListType.tp_basicsize = sizeof(ListObject);
     ListType.tp_as_sequence = &ListAsSeq;
     ListType.tp_as_mapping = &ListAsMapping;
     ListType.tp_flags = Py_TPFLAGS_DEFAULT;
     ListType.tp_doc = "list pushing modifications to vim structure";
     ListType.tp_methods = ListMethods;
-    ListType.tp_iter = ListIter;
+    ListType.tp_iter = (getiterfunc)ListIter;
 #if PY_MAJOR_VERSION >= 3
-    ListType.tp_getattro = ListGetattro;
-    ListType.tp_setattro = ListSetattro;
+    ListType.tp_getattro = (getattrofunc)ListGetattro;
+    ListType.tp_setattro = (setattrofunc)ListSetattro;
 #else
-    ListType.tp_getattr = ListGetattr;
-    ListType.tp_setattr = ListSetattr;
+    ListType.tp_getattr = (getattrfunc)ListGetattr;
+    ListType.tp_setattr = (setattrfunc)ListSetattr;
 #endif
 
     vim_memset(&FunctionType, 0, sizeof(FunctionType));
     FunctionType.tp_name = "vim.function";
     FunctionType.tp_basicsize = sizeof(FunctionObject);
-    FunctionType.tp_dealloc = FunctionDestructor;
-    FunctionType.tp_call = FunctionCall;
+    FunctionType.tp_dealloc = (destructor)FunctionDestructor;
+    FunctionType.tp_call = (ternaryfunc)FunctionCall;
     FunctionType.tp_flags = Py_TPFLAGS_DEFAULT;
     FunctionType.tp_doc = "object that calls vim function";
     FunctionType.tp_methods = FunctionMethods;
 #if PY_MAJOR_VERSION >= 3
-    FunctionType.tp_getattro = FunctionGetattro;
+    FunctionType.tp_getattro = (getattrofunc)FunctionGetattro;
 #else
-    FunctionType.tp_getattr = FunctionGetattr;
+    FunctionType.tp_getattr = (getattrfunc)FunctionGetattr;
 #endif
 
     vim_memset(&OptionsType, 0, sizeof(OptionsType));
@@ -4208,9 +4169,9 @@ init_structs(void)
     OptionsType.tp_flags = Py_TPFLAGS_DEFAULT;
     OptionsType.tp_doc = "object for manipulating options";
     OptionsType.tp_as_mapping = &OptionsAsMapping;
-    OptionsType.tp_dealloc = OptionsDestructor;
-    OptionsType.tp_traverse = OptionsTraverse;
-    OptionsType.tp_clear = OptionsClear;
+    OptionsType.tp_dealloc = (destructor)OptionsDestructor;
+    OptionsType.tp_traverse = (traverseproc)OptionsTraverse;
+    OptionsType.tp_clear = (inquiry)OptionsClear;
 
 #if PY_MAJOR_VERSION >= 3
     vim_memset(&vimmodule, 0, sizeof(vimmodule));
index a3431b25250512401979d9d5b6c246c5b89032c1..7a4fa8ad9a1b15e3785c101d57f9aa7fcf409c69 100644 (file)
@@ -56,8 +56,6 @@
 # define PY_SSIZE_T_CLEAN
 #endif
 
-static void init_structs(void);
-
 #define PyBytes_FromString PyString_FromString
 #define PyBytes_Check PyString_Check
 
@@ -659,16 +657,9 @@ static PyObject *FunctionGetattr(PyObject *, char *);
  * Internal function prototypes.
  */
 
-static void PythonIO_Flush(void);
 static int PythonIO_Init(void);
 static int PythonMod_Init(void);
 
-/* Utility functions for the vim/python interface
- * ----------------------------------------------
- */
-
-static int SetBufferLineList(buf_T *, PyInt, PyInt, PyObject *, PyInt *);
-
 
 /******************************************************
  * 1. Python interpreter main program.
@@ -1017,9 +1008,6 @@ PythonIO_Init(void)
  * 3. Implementation of the Vim module for Python
  */
 
-static PyObject *ConvertToPyObject(typval_T *);
-static int ConvertFromPyObject(PyObject *, typval_T *);
-
 /* Window type - Implementation functions
  * --------------------------------------
  */
index 233283c21c25a603b633007dcbe7dd107232be59..0620e0395a1ac049fc947106e7f54bc4ae845400 100644 (file)
@@ -68,8 +68,6 @@
 # define PY_SSIZE_T_CLEAN
 #endif
 
-static void init_structs(void);
-
 /* The "surrogateescape" error handler is new in Python 3.1 */
 #if PY_VERSION_HEX >= 0x030100f0
 # define CODEC_ERROR_HANDLER "surrogateescape"
@@ -610,8 +608,6 @@ get_py3_exceptions()
 }
 #endif /* DYNAMIC_PYTHON3 */
 
-static PyObject *BufferDir(PyObject *, PyObject *);
-
 static int py3initialised = 0;
 
 #define PYINITIALISED py3initialised
@@ -670,6 +666,7 @@ call_PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
     return PyType_GenericAlloc(type,nitems);
 }
 
+static PyObject *BufferDir(PyObject *);
 static PyObject *OutputGetattro(PyObject *, PyObject *);
 static int OutputSetattro(PyObject *, PyObject *, PyObject *);
 static PyObject *BufferGetattro(PyObject *, PyObject *);
@@ -1008,7 +1005,7 @@ OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
 {
     GET_ATTR_STRING(name, nameobj);
 
-    return OutputSetattr(self, name, val);
+    return OutputSetattr((OutputObject *)(self), name, val);
 }
 
 /***************/
@@ -1036,12 +1033,9 @@ PythonIO_Init(void)
 
 #define BufferType_Check(obj) ((obj)->ob_base.ob_type == &BufferType)
 
-static Py_ssize_t BufferLength(PyObject *);
-static PyObject *BufferItem(PyObject *, Py_ssize_t);
 static PyObject* BufferSubscript(PyObject *self, PyObject *idx);
 static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
 
-
 /* Line range type - Implementation functions
  * --------------------------------------
  */
@@ -1097,7 +1091,7 @@ BufferGetattro(PyObject *self, PyObject*nameobj)
 }
 
     static PyObject *
-BufferDir(PyObject *self UNUSED, PyObject *args UNUSED)
+BufferDir(PyObject *self UNUSED)
 {
     return Py_BuildValue("[sssss]", "name", "number",
                                                   "append", "mark", "range");
@@ -1111,7 +1105,7 @@ BufferSubscript(PyObject *self, PyObject* idx)
     if (PyLong_Check(idx))
     {
        long _idx = PyLong_AsLong(idx);
-       return BufferItem(self,_idx);
+       return BufferItem((BufferObject *)(self), _idx);
     } else if (PySlice_Check(idx))
     {
        Py_ssize_t start, stop, step, slicelen;
@@ -1126,7 +1120,7 @@ BufferSubscript(PyObject *self, PyObject* idx)
        {
            return NULL;
        }
-       return BufferSlice(self, start, stop);
+       return BufferSlice((BufferObject *)(self), start, stop);
     }
     else
     {
@@ -1230,7 +1224,7 @@ RangeSubscript(PyObject *self, PyObject* idx)
     if (PyLong_Check(idx))
     {
        long _idx = PyLong_AsLong(idx);
-       return RangeItem(self,_idx);
+       return RangeItem((RangeObject *)(self), _idx);
     } else if (PySlice_Check(idx))
     {
        Py_ssize_t start, stop, step, slicelen;
@@ -1242,7 +1236,7 @@ RangeSubscript(PyObject *self, PyObject* idx)
        {
            return NULL;
        }
-       return RangeSlice(self, start, stop);
+       return RangeSlice((RangeObject *)(self), start, stop);
     }
     else
     {
@@ -1323,7 +1317,7 @@ WindowSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
 {
     GET_ATTR_STRING(name, nameobj);
 
-    return WindowSetattr(self, name, val);
+    return WindowSetattr((WindowObject *)(self), name, val);
 }
 
 /* Tab page list object - Definitions
@@ -1377,8 +1371,6 @@ CurrentSetattro(PyObject *self, PyObject *nameobj, PyObject *value)
 /* Dictionary object - Definitions
  */
 
-static PyInt DictionaryLength(PyObject *);
-
     static PyObject *
 DictionaryGetattro(PyObject *self, PyObject *nameobj)
 {
@@ -1398,15 +1390,12 @@ DictionaryGetattro(PyObject *self, PyObject *nameobj)
 DictionarySetattro(PyObject *self, PyObject *nameobj, PyObject *val)
 {
     GET_ATTR_STRING(name, nameobj);
-    return DictionarySetattr(self, name, val);
+    return DictionarySetattr((DictionaryObject *)(self), name, val);
 }
 
 /* List object - Definitions
  */
 
-static PyInt ListLength(PyObject *);
-static PyObject *ListItem(PyObject *, Py_ssize_t);
-
 static PySequenceMethods ListAsSeq = {
     (lenfunc)          ListLength,      /* sq_length,    len(x)   */
     (binaryfunc)       0,               /* RangeConcat, sq_concat,  x+y   */
@@ -1430,21 +1419,21 @@ static PyMappingMethods ListAsMapping = {
 };
 
     static PyObject *
-ListSubscript(PyObject *self, PyObject* idxObject)
+ListSubscript(PyObject *self, PyObject* idx)
 {
-    if (PyLong_Check(idxObject))
+    if (PyLong_Check(idx))
     {
-       long idx = PyLong_AsLong(idxObject);
-       return ListItem(self, idx);
+       long _idx = PyLong_AsLong(idx);
+       return ListItem((ListObject *)(self), _idx);
     }
-    else if (PySlice_Check(idxObject))
+    else if (PySlice_Check(idx))
     {
        Py_ssize_t start, stop, step, slicelen;
 
-       if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop,
-                                &step, &slicelen) < 0)
+       if (PySlice_GetIndicesEx(idx, ListLength((ListObject *)(self)),
+                                &start, &stop, &step, &slicelen) < 0)
            return NULL;
-       return ListSlice(self, start, stop);
+       return ListSlice((ListObject *)(self), start, stop);
     }
     else
     {
@@ -1454,21 +1443,21 @@ ListSubscript(PyObject *self, PyObject* idxObject)
 }
 
     static Py_ssize_t
-ListAsSubscript(PyObject *self, PyObject *idxObject, PyObject *obj)
+ListAsSubscript(PyObject *self, PyObject *idx, PyObject *obj)
 {
-    if (PyLong_Check(idxObject))
+    if (PyLong_Check(idx))
     {
-       long idx = PyLong_AsLong(idxObject);
-       return ListAssItem(self, idx, obj);
+       long _idx = PyLong_AsLong(idx);
+       return ListAssItem((ListObject *)(self), _idx, obj);
     }
-    else if (PySlice_Check(idxObject))
+    else if (PySlice_Check(idx))
     {
        Py_ssize_t start, stop, step, slicelen;
 
-       if (PySlice_GetIndicesEx(idxObject, ListLength(self), &start, &stop,
-                                &step, &slicelen) < 0)
+       if (PySlice_GetIndicesEx(idx, ListLength((ListObject *)(self)),
+                                &start, &stop, &step, &slicelen) < 0)
            return -1;
-       return ListAssSlice(self, start, stop, obj);
+       return ListAssSlice((ListObject *)(self), start, stop, obj);
     }
     else
     {
@@ -1492,7 +1481,7 @@ ListGetattro(PyObject *self, PyObject *nameobj)
 ListSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
 {
     GET_ATTR_STRING(name, nameobj);
-    return ListSetattr(self, name, val);
+    return ListSetattr((ListObject *)(self), name, val);
 }
 
 /* Function object - Definitions
index 1fdc9a15407f260a0de2f96bc3cb882d5ea951f6..7200826967ff82bb5f7d7fad420ccb1fbb264664 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    992,
 /**/
     991,
 /**/