$NetBSD: patch-aa,v 1.1 2006/08/26 16:42:25 kristerw Exp $ Reorder functions to fix "static declaration follows non-static" error with gcc 4. --- Dependencies/zope.interface-ZopeInterface-3.0.1/zope.interface/_zope_interface_coptimizations.c.orig 2006-08-26 18:12:52.000000000 +0200 +++ Dependencies/zope.interface-ZopeInterface-3.0.1/zope.interface/_zope_interface_coptimizations.c 2006-08-26 18:19:11.000000000 +0200 @@ -24,6 +24,8 @@ static PyObject *BuiltinImplementationSp static PyObject *str__class__, *str__providedBy__, *strisOrExtends; static PyObject *empty, *fallback, *str_implied, *str_cls, *str_implements; static PyTypeObject *Implements; +static PyObject *Spec_providedBy(PyObject *self, PyObject *ob); +static PyObject *Spec_implementedBy(PyObject *self, PyObject *cls); static int imported_declarations = 0; @@ -70,7 +72,6 @@ import_declarations(void) return 0; } -extern PyTypeObject SpecType; /* Forward */ static PyObject * implementedByFallback(PyObject *cls) @@ -279,50 +280,10 @@ static char Spec_providedBy__doc__[] = "Test whether an interface is implemented by the specification" ; -static PyObject * -Spec_providedBy(PyObject *self, PyObject *ob) -{ - PyObject *decl, *item; - - decl = providedBy(NULL, ob); - if (decl == NULL) - return NULL; - - if (PyObject_TypeCheck(ob, &SpecType)) - item = Spec_extends(decl, self); - else - /* decl is probably a security proxy. We have to go the long way - around. - */ - item = PyObject_CallMethodObjArgs(decl, strisOrExtends, self, NULL); - - Py_DECREF(decl); - return item; -} - - static char Spec_implementedBy__doc__[] = "Test whether the specification is implemented by instances of a class" ; -static PyObject * -Spec_implementedBy(PyObject *self, PyObject *cls) -{ - PyObject *decl, *item; - - decl = implementedBy(NULL, cls); - if (decl == NULL) - return NULL; - - if (PyObject_TypeCheck(decl, &SpecType)) - item = Spec_extends(decl, self); - else - item = PyObject_CallMethodObjArgs(decl, strisOrExtends, self, NULL); - - Py_DECREF(decl); - return item; -} - static struct PyMethodDef Spec_methods[] = { {"providedBy", (PyCFunction)Spec_providedBy, METH_O, @@ -370,6 +331,45 @@ static PyTypeObject SpecType = { }; static PyObject * +Spec_providedBy(PyObject *self, PyObject *ob) +{ + PyObject *decl, *item; + + decl = providedBy(NULL, ob); + if (decl == NULL) + return NULL; + + if (PyObject_TypeCheck(ob, &SpecType)) + item = Spec_extends(decl, self); + else + /* decl is probably a security proxy. We have to go the long way + around. + */ + item = PyObject_CallMethodObjArgs(decl, strisOrExtends, self, NULL); + + Py_DECREF(decl); + return item; +} + +static PyObject * +Spec_implementedBy(PyObject *self, PyObject *cls) +{ + PyObject *decl, *item; + + decl = implementedBy(NULL, cls); + if (decl == NULL) + return NULL; + + if (PyObject_TypeCheck(decl, &SpecType)) + item = Spec_extends(decl, self); + else + item = PyObject_CallMethodObjArgs(decl, strisOrExtends, self, NULL); + + Py_DECREF(decl); + return item; +} + +static PyObject * OSD_descr_get(PyObject *self, PyObject *inst, PyObject *cls) { PyObject *provides;