Index: Include/iterobject.h =================================================================== --- Include/iterobject.h (Revision 59215) +++ Include/iterobject.h (Arbeitskopie) @@ -6,12 +6,14 @@ #endif PyAPI_DATA(PyTypeObject) PySeqIter_Type; +PyAPI_DATA(PyTypeObject) PyCallIter_Type; +PyAPI_DATA(PyTypeObject) PyZipIter_Type; +PyAPI_DATA(PyTypeObject) PyCmpWrapper_Type; #define PySeqIter_Check(op) (Py_Type(op) == &PySeqIter_Type) PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *); -PyAPI_DATA(PyTypeObject) PyCallIter_Type; #define PyCallIter_Check(op) (Py_Type(op) == &PyCallIter_Type) Index: Include/stringobject.h =================================================================== --- Include/stringobject.h (Revision 59215) +++ Include/stringobject.h (Arbeitskopie) @@ -40,6 +40,7 @@ } PyStringObject; PyAPI_DATA(PyTypeObject) PyString_Type; +PyAPI_DATA(PyTypeObject) PyStringIter_Type; #define PyString_Check(op) \ PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_STRING_SUBCLASS) Index: Include/dictobject.h =================================================================== --- Include/dictobject.h (Revision 59215) +++ Include/dictobject.h (Arbeitskopie) @@ -89,11 +89,24 @@ }; PyAPI_DATA(PyTypeObject) PyDict_Type; +PyAPI_DATA(PyTypeObject) PyDictIterKey_Type; +PyAPI_DATA(PyTypeObject) PyDictIterValue_Type; +PyAPI_DATA(PyTypeObject) PyDictIterItem_Type; +PyAPI_DATA(PyTypeObject) PyDictKeys_Type; +PyAPI_DATA(PyTypeObject) PyDictItems_Type; +PyAPI_DATA(PyTypeObject) PyDictValues_Type; #define PyDict_Check(op) \ PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_DICT_SUBCLASS) #define PyDict_CheckExact(op) (Py_Type(op) == &PyDict_Type) +#define PyDictKeys_Check(op) (Py_Type(op) == &PyDictKeys_Type) +#define PyDictItems_Check(op) (Py_Type(op) == &PyDictItems_Type) +#define PyDictValues_Check(op) (Py_Type(op) == &PyDictValues_Type) +/* This excludes Values, since they are not sets. */ +# define PyDictViewSet_Check(op) \ + (PyDictKeys_Check(op) || PyDictItems_Check(op)) + PyAPI_FUNC(PyObject *) PyDict_New(void); PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item); Index: Include/unicodeobject.h =================================================================== --- Include/unicodeobject.h (Revision 59215) +++ Include/unicodeobject.h (Arbeitskopie) @@ -417,6 +417,7 @@ } PyUnicodeObject; PyAPI_DATA(PyTypeObject) PyUnicode_Type; +PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type; #define SSTATE_NOT_INTERNED 0 #define SSTATE_INTERNED_MORTAL 1 Index: Include/rangeobject.h =================================================================== --- Include/rangeobject.h (Revision 59215) +++ Include/rangeobject.h (Arbeitskopie) @@ -16,6 +16,8 @@ */ PyAPI_DATA(PyTypeObject) PyRange_Type; +PyAPI_DATA(PyTypeObject) PyRangeIter_Type; +PyAPI_DATA(PyTypeObject) PyLongRangeIter_Type; #define PyRange_Check(op) (Py_Type(op) == &PyRange_Type) Index: Include/listobject.h =================================================================== --- Include/listobject.h (Revision 59215) +++ Include/listobject.h (Arbeitskopie) @@ -39,6 +39,9 @@ } PyListObject; PyAPI_DATA(PyTypeObject) PyList_Type; +PyAPI_DATA(PyTypeObject) PyListIter_Type; +PyAPI_DATA(PyTypeObject) PyListRevIter_Type; +PyAPI_DATA(PyTypeObject) PySortWrapper_Type; #define PyList_Check(op) \ PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LIST_SUBCLASS) Index: Include/tupleobject.h =================================================================== --- Include/tupleobject.h (Revision 59215) +++ Include/tupleobject.h (Arbeitskopie) @@ -32,6 +32,7 @@ } PyTupleObject; PyAPI_DATA(PyTypeObject) PyTuple_Type; +PyAPI_DATA(PyTypeObject) PyTupleIter_Type; #define PyTuple_Check(op) \ PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_TUPLE_SUBCLASS) Index: Include/descrobject.h =================================================================== --- Include/descrobject.h (Revision 59215) +++ Include/descrobject.h (Arbeitskopie) @@ -67,7 +67,12 @@ void *d_wrapped; /* This can be any function pointer */ } PyWrapperDescrObject; +PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type; +PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type; +PyAPI_DATA(PyTypeObject) PyMemberDescr_Type; +PyAPI_DATA(PyTypeObject) PyMethodDescr_Type; PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type; +PyAPI_DATA(PyTypeObject) PyDictProxy_Type; PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *); PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *); Index: Include/bytesobject.h =================================================================== --- Include/bytesobject.h (Revision 59215) +++ Include/bytesobject.h (Arbeitskopie) @@ -29,6 +29,7 @@ /* Type object */ PyAPI_DATA(PyTypeObject) PyBytes_Type; +PyAPI_DATA(PyTypeObject) PyBytesIter_Type; /* Type check macros */ #define PyBytes_Check(self) PyObject_TypeCheck(self, &PyBytes_Type) Index: Include/setobject.h =================================================================== --- Include/setobject.h (Revision 59215) +++ Include/setobject.h (Arbeitskopie) @@ -58,6 +58,7 @@ PyAPI_DATA(PyTypeObject) PySet_Type; PyAPI_DATA(PyTypeObject) PyFrozenSet_Type; +PyAPI_DATA(PyTypeObject) PySetIter_Type; /* Invariants for frozensets: * data is immutable. Index: Objects/dictobject.c =================================================================== --- Objects/dictobject.c (Revision 59215) +++ Objects/dictobject.c (Arbeitskopie) @@ -1794,13 +1794,8 @@ return 0; } - -extern PyTypeObject PyDictIterKey_Type; /* Forward */ -extern PyTypeObject PyDictIterValue_Type; /* Forward */ -extern PyTypeObject PyDictIterItem_Type; /* Forward */ static PyObject *dictiter_new(PyDictObject *, PyTypeObject *); - PyDoc_STRVAR(contains__doc__, "D.__contains__(k) -> True if D has a key k, else False"); @@ -2397,19 +2392,6 @@ - if public then they should probably be in builtins */ -/* Forward */ -PyTypeObject PyDictKeys_Type; -PyTypeObject PyDictItems_Type; -PyTypeObject PyDictValues_Type; - -#define PyDictKeys_Check(obj) ((obj)->ob_type == &PyDictKeys_Type) -#define PyDictItems_Check(obj) ((obj)->ob_type == &PyDictItems_Type) -#define PyDictValues_Check(obj) ((obj)->ob_type == &PyDictValues_Type) - -/* This excludes Values, since they are not sets. */ -# define PyDictViewSet_Check(obj) \ - (PyDictKeys_Check(obj) || PyDictItems_Check(obj)) - /* Return 1 if self is a subset of other, iterating over self; 0 if not; -1 if an error occurred. */ static int Index: Objects/tupleobject.c =================================================================== --- Objects/tupleobject.c (Revision 59215) +++ Objects/tupleobject.c (Arbeitskopie) @@ -840,7 +840,7 @@ PyTypeObject PyTupleIter_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) - "tupleiterator", /* tp_name */ + "tuple_iterator", /* tp_name */ sizeof(tupleiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ Index: Objects/rangeobject.c =================================================================== --- Objects/rangeobject.c (Revision 59215) +++ Objects/rangeobject.c (Arbeitskopie) @@ -367,7 +367,7 @@ {NULL, NULL} /* sentinel */ }; -PyTypeObject Pyrangeiter_Type = { +PyTypeObject PyRangeIter_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "range_iterator", /* tp_name */ sizeof(rangeiterobject), /* tp_basicsize */ @@ -441,7 +441,7 @@ static PyObject * int_range_iter(long start, long stop, long step) { - rangeiterobject *it = PyObject_New(rangeiterobject, &Pyrangeiter_Type); + rangeiterobject *it = PyObject_New(rangeiterobject, &PyRangeIter_Type); if (it == NULL) return NULL; it->start = start; @@ -519,9 +519,9 @@ return result; } -static PyTypeObject Pylongrangeiter_Type = { +PyTypeObject PyLongRangeIter_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) - "rangeiterator", /* tp_name */ + "longrange_iterator", /* tp_name */ sizeof(longrangeiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ @@ -567,7 +567,7 @@ PyLong_AsLong(r->stop), PyLong_AsLong(r->step)); - it = PyObject_New(longrangeiterobject, &Pylongrangeiter_Type); + it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type); if (it == NULL) return NULL; @@ -627,7 +627,7 @@ return int_range_iter(new_start, new_stop, -step); } - it = PyObject_New(longrangeiterobject, &Pylongrangeiter_Type); + it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type); if (it == NULL) return NULL; Index: Objects/descrobject.c =================================================================== --- Objects/descrobject.c (Revision 59216) +++ Objects/descrobject.c (Arbeitskopie) @@ -383,7 +383,7 @@ return 0; } -static PyTypeObject PyMethodDescr_Type = { +PyTypeObject PyMethodDescr_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "method_descriptor", sizeof(PyMethodDescrObject), @@ -421,7 +421,7 @@ }; /* This is for METH_CLASS in C, not for "f = classmethod(f)" in Python! */ -static PyTypeObject PyClassMethodDescr_Type = { +PyTypeObject PyClassMethodDescr_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "classmethod_descriptor", sizeof(PyMethodDescrObject), @@ -458,7 +458,7 @@ 0, /* tp_descr_set */ }; -static PyTypeObject PyMemberDescr_Type = { +PyTypeObject PyMemberDescr_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "member_descriptor", sizeof(PyMemberDescrObject), @@ -495,7 +495,7 @@ (descrsetfunc)member_set, /* tp_descr_set */ }; -static PyTypeObject PyGetSetDescr_Type = { +PyTypeObject PyGetSetDescr_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "getset_descriptor", sizeof(PyGetSetDescrObject), @@ -786,7 +786,7 @@ return PyObject_RichCompare(v->dict, w, op); } -static PyTypeObject proxytype = { +PyTypeObject PyDictProxy_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "dictproxy", /* tp_name */ sizeof(proxyobject), /* tp_basicsize */ @@ -829,7 +829,7 @@ { proxyobject *pp; - pp = PyObject_GC_New(proxyobject, &proxytype); + pp = PyObject_GC_New(proxyobject, &PyDictProxy_Type); if (pp != NULL) { Py_INCREF(dict); pp->dict = dict; Index: Objects/listobject.c =================================================================== --- Objects/listobject.c (Revision 59215) +++ Objects/listobject.c (Arbeitskopie) @@ -1790,7 +1790,7 @@ static void sortwrapper_dealloc(sortwrapperobject *); -static PyTypeObject sortwrapper_type = { +PyTypeObject PySortWrapper_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "sortwrapper", /* tp_name */ sizeof(sortwrapperobject), /* tp_basicsize */ @@ -1822,7 +1822,7 @@ static PyObject * sortwrapper_richcompare(sortwrapperobject *a, sortwrapperobject *b, int op) { - if (!PyObject_TypeCheck(b, &sortwrapper_type)) { + if (!PyObject_TypeCheck(b, &PySortWrapper_Type)) { PyErr_SetString(PyExc_TypeError, "expected a sortwrapperobject"); return NULL; @@ -1846,7 +1846,7 @@ { sortwrapperobject *so; - so = PyObject_New(sortwrapperobject, &sortwrapper_type); + so = PyObject_New(sortwrapperobject, &PySortWrapper_Type); if (so == NULL) return NULL; so->key = key; @@ -1860,7 +1860,7 @@ { PyObject *value; - if (!PyObject_TypeCheck(so, &sortwrapper_type)) { + if (!PyObject_TypeCheck(so, &PySortWrapper_Type)) { PyErr_SetString(PyExc_TypeError, "expected a sortwrapperobject"); return NULL; @@ -1893,8 +1893,8 @@ if (!PyArg_UnpackTuple(args, "", 2, 2, &x, &y)) return NULL; - if (!PyObject_TypeCheck(x, &sortwrapper_type) || - !PyObject_TypeCheck(y, &sortwrapper_type)) { + if (!PyObject_TypeCheck(x, &PySortWrapper_Type) || + !PyObject_TypeCheck(y, &PySortWrapper_Type)) { PyErr_SetString(PyExc_TypeError, "expected a sortwrapperobject"); return NULL; @@ -1906,7 +1906,7 @@ PyDoc_STRVAR(cmpwrapper_doc, "cmp() wrapper for sort with custom keys."); -static PyTypeObject cmpwrapper_type = { +PyTypeObject PyCmpWrapper_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "cmpwrapper", /* tp_name */ sizeof(cmpwrapperobject), /* tp_basicsize */ @@ -1936,7 +1936,7 @@ { cmpwrapperobject *co; - co = PyObject_New(cmpwrapperobject, &cmpwrapper_type); + co = PyObject_New(cmpwrapperobject, &PyCmpWrapper_Type); if (co == NULL) return NULL; Py_INCREF(cmpfunc); Index: Objects/setobject.c =================================================================== --- Objects/setobject.c (Revision 59215) +++ Objects/setobject.c (Arbeitskopie) @@ -849,7 +849,7 @@ return NULL; } -static PyTypeObject PySetIter_Type = { +PyTypeObject PySetIter_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "set_iterator", /* tp_name */ sizeof(setiterobject), /* tp_basicsize */ Index: Objects/iterobject.c =================================================================== --- Objects/iterobject.c (Revision 59215) +++ Objects/iterobject.c (Arbeitskopie) @@ -199,7 +199,7 @@ PyTypeObject PyCallIter_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) - "callable-iterator", /* tp_name */ + "callable_iterator", /* tp_name */ sizeof(calliterobject), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ @@ -240,7 +240,7 @@ PyTupleObject *result; /* Reusable tuple for optimization */ } zipiterobject; -static PyTypeObject PyZipIter_Type; /* Forward */ + /* Forward */ PyObject * _PyZip_CreateIter(PyObject* args) @@ -367,7 +367,7 @@ return result; } -static PyTypeObject PyZipIter_Type = { +PyTypeObject PyZipIter_Type = { PyVarObject_HEAD_INIT(0, 0) "zip_iterator", /* tp_name */ sizeof(zipiterobject), /* tp_basicsize */