Commit ad8d26ae authored by Christian Heimes's avatar Christian Heimes

Added all PyTypeObjects to the appropriate header files.

Before the patch a lot of internal types weren't available in the header files. The patch exposes the new iterators, views and some other types to all C modules. I've also renamed some of the types and tp_names.
parent a5d6346b
...@@ -29,6 +29,7 @@ typedef struct { ...@@ -29,6 +29,7 @@ typedef struct {
/* Type object */ /* Type object */
PyAPI_DATA(PyTypeObject) PyBytes_Type; PyAPI_DATA(PyTypeObject) PyBytes_Type;
PyAPI_DATA(PyTypeObject) PyBytesIter_Type;
/* Type check macros */ /* Type check macros */
#define PyBytes_Check(self) PyObject_TypeCheck(self, &PyBytes_Type) #define PyBytes_Check(self) PyObject_TypeCheck(self, &PyBytes_Type)
......
...@@ -67,7 +67,12 @@ typedef struct { ...@@ -67,7 +67,12 @@ typedef struct {
void *d_wrapped; /* This can be any function pointer */ void *d_wrapped; /* This can be any function pointer */
} PyWrapperDescrObject; } 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) PyWrapperDescr_Type;
PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *); PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *); PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
......
...@@ -89,10 +89,23 @@ struct _dictobject { ...@@ -89,10 +89,23 @@ struct _dictobject {
}; };
PyAPI_DATA(PyTypeObject) PyDict_Type; 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) \ #define PyDict_Check(op) \
PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_DICT_SUBCLASS) PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_DICT_SUBCLASS)
#define PyDict_CheckExact(op) (Py_Type(op) == &PyDict_Type) #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_New(void);
PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key);
......
...@@ -6,12 +6,14 @@ extern "C" { ...@@ -6,12 +6,14 @@ extern "C" {
#endif #endif
PyAPI_DATA(PyTypeObject) PySeqIter_Type; 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) #define PySeqIter_Check(op) (Py_Type(op) == &PySeqIter_Type)
PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *); PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *);
PyAPI_DATA(PyTypeObject) PyCallIter_Type;
#define PyCallIter_Check(op) (Py_Type(op) == &PyCallIter_Type) #define PyCallIter_Check(op) (Py_Type(op) == &PyCallIter_Type)
......
...@@ -39,6 +39,9 @@ typedef struct { ...@@ -39,6 +39,9 @@ typedef struct {
} PyListObject; } PyListObject;
PyAPI_DATA(PyTypeObject) PyList_Type; PyAPI_DATA(PyTypeObject) PyList_Type;
PyAPI_DATA(PyTypeObject) PyListIter_Type;
PyAPI_DATA(PyTypeObject) PyListRevIter_Type;
PyAPI_DATA(PyTypeObject) PySortWrapper_Type;
#define PyList_Check(op) \ #define PyList_Check(op) \
PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LIST_SUBCLASS) PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LIST_SUBCLASS)
......
...@@ -16,6 +16,8 @@ they are represented by a start, stop, and step datamembers. ...@@ -16,6 +16,8 @@ they are represented by a start, stop, and step datamembers.
*/ */
PyAPI_DATA(PyTypeObject) PyRange_Type; PyAPI_DATA(PyTypeObject) PyRange_Type;
PyAPI_DATA(PyTypeObject) PyRangeIter_Type;
PyAPI_DATA(PyTypeObject) PyLongRangeIter_Type;
#define PyRange_Check(op) (Py_Type(op) == &PyRange_Type) #define PyRange_Check(op) (Py_Type(op) == &PyRange_Type)
......
...@@ -58,6 +58,7 @@ struct _setobject { ...@@ -58,6 +58,7 @@ struct _setobject {
PyAPI_DATA(PyTypeObject) PySet_Type; PyAPI_DATA(PyTypeObject) PySet_Type;
PyAPI_DATA(PyTypeObject) PyFrozenSet_Type; PyAPI_DATA(PyTypeObject) PyFrozenSet_Type;
PyAPI_DATA(PyTypeObject) PySetIter_Type;
/* Invariants for frozensets: /* Invariants for frozensets:
* data is immutable. * data is immutable.
......
...@@ -40,6 +40,7 @@ typedef struct { ...@@ -40,6 +40,7 @@ typedef struct {
} PyStringObject; } PyStringObject;
PyAPI_DATA(PyTypeObject) PyString_Type; PyAPI_DATA(PyTypeObject) PyString_Type;
PyAPI_DATA(PyTypeObject) PyStringIter_Type;
#define PyString_Check(op) \ #define PyString_Check(op) \
PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_STRING_SUBCLASS) PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_STRING_SUBCLASS)
......
...@@ -32,6 +32,7 @@ typedef struct { ...@@ -32,6 +32,7 @@ typedef struct {
} PyTupleObject; } PyTupleObject;
PyAPI_DATA(PyTypeObject) PyTuple_Type; PyAPI_DATA(PyTypeObject) PyTuple_Type;
PyAPI_DATA(PyTypeObject) PyTupleIter_Type;
#define PyTuple_Check(op) \ #define PyTuple_Check(op) \
PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_TUPLE_SUBCLASS) PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_TUPLE_SUBCLASS)
......
...@@ -417,6 +417,7 @@ typedef struct { ...@@ -417,6 +417,7 @@ typedef struct {
} PyUnicodeObject; } PyUnicodeObject;
PyAPI_DATA(PyTypeObject) PyUnicode_Type; PyAPI_DATA(PyTypeObject) PyUnicode_Type;
PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
#define SSTATE_NOT_INTERNED 0 #define SSTATE_NOT_INTERNED 0
#define SSTATE_INTERNED_MORTAL 1 #define SSTATE_INTERNED_MORTAL 1
......
...@@ -383,7 +383,7 @@ descr_traverse(PyObject *self, visitproc visit, void *arg) ...@@ -383,7 +383,7 @@ descr_traverse(PyObject *self, visitproc visit, void *arg)
return 0; return 0;
} }
static PyTypeObject PyMethodDescr_Type = { PyTypeObject PyMethodDescr_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"method_descriptor", "method_descriptor",
sizeof(PyMethodDescrObject), sizeof(PyMethodDescrObject),
...@@ -421,7 +421,7 @@ static PyTypeObject PyMethodDescr_Type = { ...@@ -421,7 +421,7 @@ static PyTypeObject PyMethodDescr_Type = {
}; };
/* This is for METH_CLASS in C, not for "f = classmethod(f)" in Python! */ /* 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) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"classmethod_descriptor", "classmethod_descriptor",
sizeof(PyMethodDescrObject), sizeof(PyMethodDescrObject),
...@@ -458,7 +458,7 @@ static PyTypeObject PyClassMethodDescr_Type = { ...@@ -458,7 +458,7 @@ static PyTypeObject PyClassMethodDescr_Type = {
0, /* tp_descr_set */ 0, /* tp_descr_set */
}; };
static PyTypeObject PyMemberDescr_Type = { PyTypeObject PyMemberDescr_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"member_descriptor", "member_descriptor",
sizeof(PyMemberDescrObject), sizeof(PyMemberDescrObject),
...@@ -495,7 +495,7 @@ static PyTypeObject PyMemberDescr_Type = { ...@@ -495,7 +495,7 @@ static PyTypeObject PyMemberDescr_Type = {
(descrsetfunc)member_set, /* tp_descr_set */ (descrsetfunc)member_set, /* tp_descr_set */
}; };
static PyTypeObject PyGetSetDescr_Type = { PyTypeObject PyGetSetDescr_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"getset_descriptor", "getset_descriptor",
sizeof(PyGetSetDescrObject), sizeof(PyGetSetDescrObject),
...@@ -786,7 +786,7 @@ proxy_richcompare(proxyobject *v, PyObject *w, int op) ...@@ -786,7 +786,7 @@ proxy_richcompare(proxyobject *v, PyObject *w, int op)
return PyObject_RichCompare(v->dict, w, op); return PyObject_RichCompare(v->dict, w, op);
} }
static PyTypeObject proxytype = { PyTypeObject PyDictProxy_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"dictproxy", /* tp_name */ "dictproxy", /* tp_name */
sizeof(proxyobject), /* tp_basicsize */ sizeof(proxyobject), /* tp_basicsize */
...@@ -829,7 +829,7 @@ PyDictProxy_New(PyObject *dict) ...@@ -829,7 +829,7 @@ PyDictProxy_New(PyObject *dict)
{ {
proxyobject *pp; proxyobject *pp;
pp = PyObject_GC_New(proxyobject, &proxytype); pp = PyObject_GC_New(proxyobject, &PyDictProxy_Type);
if (pp != NULL) { if (pp != NULL) {
Py_INCREF(dict); Py_INCREF(dict);
pp->dict = dict; pp->dict = dict;
......
...@@ -1798,13 +1798,8 @@ dict_tp_clear(PyObject *op) ...@@ -1798,13 +1798,8 @@ dict_tp_clear(PyObject *op)
return 0; return 0;
} }
extern PyTypeObject PyDictIterKey_Type; /* Forward */
extern PyTypeObject PyDictIterValue_Type; /* Forward */
extern PyTypeObject PyDictIterItem_Type; /* Forward */
static PyObject *dictiter_new(PyDictObject *, PyTypeObject *); static PyObject *dictiter_new(PyDictObject *, PyTypeObject *);
PyDoc_STRVAR(contains__doc__, PyDoc_STRVAR(contains__doc__,
"D.__contains__(k) -> True if D has a key k, else False"); "D.__contains__(k) -> True if D has a key k, else False");
...@@ -2401,19 +2396,6 @@ dictview_new(PyObject *dict, PyTypeObject *type) ...@@ -2401,19 +2396,6 @@ dictview_new(PyObject *dict, PyTypeObject *type)
- if public then they should probably be in builtins - 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; /* Return 1 if self is a subset of other, iterating over self;
0 if not; -1 if an error occurred. */ 0 if not; -1 if an error occurred. */
static int static int
......
...@@ -199,7 +199,7 @@ calliter_iternext(calliterobject *it) ...@@ -199,7 +199,7 @@ calliter_iternext(calliterobject *it)
PyTypeObject PyCallIter_Type = { PyTypeObject PyCallIter_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"callable-iterator", /* tp_name */ "callable_iterator", /* tp_name */
sizeof(calliterobject), /* tp_basicsize */ sizeof(calliterobject), /* tp_basicsize */
0, /* tp_itemsize */ 0, /* tp_itemsize */
/* methods */ /* methods */
...@@ -240,7 +240,7 @@ typedef struct zipiterobject_t { ...@@ -240,7 +240,7 @@ typedef struct zipiterobject_t {
PyTupleObject *result; /* Reusable tuple for optimization */ PyTupleObject *result; /* Reusable tuple for optimization */
} zipiterobject; } zipiterobject;
static PyTypeObject PyZipIter_Type; /* Forward */ /* Forward */
PyObject * PyObject *
_PyZip_CreateIter(PyObject* args) _PyZip_CreateIter(PyObject* args)
...@@ -367,7 +367,7 @@ zipiter_next(zipiterobject *zit) ...@@ -367,7 +367,7 @@ zipiter_next(zipiterobject *zit)
return result; return result;
} }
static PyTypeObject PyZipIter_Type = { PyTypeObject PyZipIter_Type = {
PyVarObject_HEAD_INIT(0, 0) PyVarObject_HEAD_INIT(0, 0)
"zip_iterator", /* tp_name */ "zip_iterator", /* tp_name */
sizeof(zipiterobject), /* tp_basicsize */ sizeof(zipiterobject), /* tp_basicsize */
......
...@@ -1790,7 +1790,7 @@ sortwrapper_richcompare(sortwrapperobject *, sortwrapperobject *, int); ...@@ -1790,7 +1790,7 @@ sortwrapper_richcompare(sortwrapperobject *, sortwrapperobject *, int);
static void static void
sortwrapper_dealloc(sortwrapperobject *); sortwrapper_dealloc(sortwrapperobject *);
static PyTypeObject sortwrapper_type = { PyTypeObject PySortWrapper_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"sortwrapper", /* tp_name */ "sortwrapper", /* tp_name */
sizeof(sortwrapperobject), /* tp_basicsize */ sizeof(sortwrapperobject), /* tp_basicsize */
...@@ -1822,7 +1822,7 @@ static PyTypeObject sortwrapper_type = { ...@@ -1822,7 +1822,7 @@ static PyTypeObject sortwrapper_type = {
static PyObject * static PyObject *
sortwrapper_richcompare(sortwrapperobject *a, sortwrapperobject *b, int op) sortwrapper_richcompare(sortwrapperobject *a, sortwrapperobject *b, int op)
{ {
if (!PyObject_TypeCheck(b, &sortwrapper_type)) { if (!PyObject_TypeCheck(b, &PySortWrapper_Type)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"expected a sortwrapperobject"); "expected a sortwrapperobject");
return NULL; return NULL;
...@@ -1846,7 +1846,7 @@ build_sortwrapper(PyObject *key, PyObject *value) ...@@ -1846,7 +1846,7 @@ build_sortwrapper(PyObject *key, PyObject *value)
{ {
sortwrapperobject *so; sortwrapperobject *so;
so = PyObject_New(sortwrapperobject, &sortwrapper_type); so = PyObject_New(sortwrapperobject, &PySortWrapper_Type);
if (so == NULL) if (so == NULL)
return NULL; return NULL;
so->key = key; so->key = key;
...@@ -1860,7 +1860,7 @@ sortwrapper_getvalue(PyObject *so) ...@@ -1860,7 +1860,7 @@ sortwrapper_getvalue(PyObject *so)
{ {
PyObject *value; PyObject *value;
if (!PyObject_TypeCheck(so, &sortwrapper_type)) { if (!PyObject_TypeCheck(so, &PySortWrapper_Type)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"expected a sortwrapperobject"); "expected a sortwrapperobject");
return NULL; return NULL;
...@@ -1893,8 +1893,8 @@ cmpwrapper_call(cmpwrapperobject *co, PyObject *args, PyObject *kwds) ...@@ -1893,8 +1893,8 @@ cmpwrapper_call(cmpwrapperobject *co, PyObject *args, PyObject *kwds)
if (!PyArg_UnpackTuple(args, "", 2, 2, &x, &y)) if (!PyArg_UnpackTuple(args, "", 2, 2, &x, &y))
return NULL; return NULL;
if (!PyObject_TypeCheck(x, &sortwrapper_type) || if (!PyObject_TypeCheck(x, &PySortWrapper_Type) ||
!PyObject_TypeCheck(y, &sortwrapper_type)) { !PyObject_TypeCheck(y, &PySortWrapper_Type)) {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"expected a sortwrapperobject"); "expected a sortwrapperobject");
return NULL; return NULL;
...@@ -1906,7 +1906,7 @@ cmpwrapper_call(cmpwrapperobject *co, PyObject *args, PyObject *kwds) ...@@ -1906,7 +1906,7 @@ cmpwrapper_call(cmpwrapperobject *co, PyObject *args, PyObject *kwds)
PyDoc_STRVAR(cmpwrapper_doc, "cmp() wrapper for sort with custom keys."); PyDoc_STRVAR(cmpwrapper_doc, "cmp() wrapper for sort with custom keys.");
static PyTypeObject cmpwrapper_type = { PyTypeObject PyCmpWrapper_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"cmpwrapper", /* tp_name */ "cmpwrapper", /* tp_name */
sizeof(cmpwrapperobject), /* tp_basicsize */ sizeof(cmpwrapperobject), /* tp_basicsize */
...@@ -1936,7 +1936,7 @@ build_cmpwrapper(PyObject *cmpfunc) ...@@ -1936,7 +1936,7 @@ build_cmpwrapper(PyObject *cmpfunc)
{ {
cmpwrapperobject *co; cmpwrapperobject *co;
co = PyObject_New(cmpwrapperobject, &cmpwrapper_type); co = PyObject_New(cmpwrapperobject, &PyCmpWrapper_Type);
if (co == NULL) if (co == NULL)
return NULL; return NULL;
Py_INCREF(cmpfunc); Py_INCREF(cmpfunc);
......
...@@ -367,7 +367,7 @@ static PyMethodDef rangeiter_methods[] = { ...@@ -367,7 +367,7 @@ static PyMethodDef rangeiter_methods[] = {
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };
PyTypeObject Pyrangeiter_Type = { PyTypeObject PyRangeIter_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"range_iterator", /* tp_name */ "range_iterator", /* tp_name */
sizeof(rangeiterobject), /* tp_basicsize */ sizeof(rangeiterobject), /* tp_basicsize */
...@@ -441,7 +441,7 @@ get_len_of_range(long lo, long hi, long step) ...@@ -441,7 +441,7 @@ get_len_of_range(long lo, long hi, long step)
static PyObject * static PyObject *
int_range_iter(long start, long stop, long step) 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) if (it == NULL)
return NULL; return NULL;
it->start = start; it->start = start;
...@@ -519,9 +519,9 @@ longrangeiter_next(longrangeiterobject *r) ...@@ -519,9 +519,9 @@ longrangeiter_next(longrangeiterobject *r)
return result; return result;
} }
static PyTypeObject Pylongrangeiter_Type = { PyTypeObject PyLongRangeIter_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"rangeiterator", /* tp_name */ "longrange_iterator", /* tp_name */
sizeof(longrangeiterobject), /* tp_basicsize */ sizeof(longrangeiterobject), /* tp_basicsize */
0, /* tp_itemsize */ 0, /* tp_itemsize */
/* methods */ /* methods */
...@@ -567,7 +567,7 @@ range_iter(PyObject *seq) ...@@ -567,7 +567,7 @@ range_iter(PyObject *seq)
PyLong_AsLong(r->stop), PyLong_AsLong(r->stop),
PyLong_AsLong(r->step)); PyLong_AsLong(r->step));
it = PyObject_New(longrangeiterobject, &Pylongrangeiter_Type); it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type);
if (it == NULL) if (it == NULL)
return NULL; return NULL;
...@@ -627,7 +627,7 @@ range_reverse(PyObject *seq) ...@@ -627,7 +627,7 @@ range_reverse(PyObject *seq)
return int_range_iter(new_start, new_stop, -step); return int_range_iter(new_start, new_stop, -step);
} }
it = PyObject_New(longrangeiterobject, &Pylongrangeiter_Type); it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type);
if (it == NULL) if (it == NULL)
return NULL; return NULL;
......
...@@ -849,7 +849,7 @@ fail: ...@@ -849,7 +849,7 @@ fail:
return NULL; return NULL;
} }
static PyTypeObject PySetIter_Type = { PyTypeObject PySetIter_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"set_iterator", /* tp_name */ "set_iterator", /* tp_name */
sizeof(setiterobject), /* tp_basicsize */ sizeof(setiterobject), /* tp_basicsize */
......
...@@ -840,7 +840,7 @@ static PyMethodDef tupleiter_methods[] = { ...@@ -840,7 +840,7 @@ static PyMethodDef tupleiter_methods[] = {
PyTypeObject PyTupleIter_Type = { PyTypeObject PyTupleIter_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"tupleiterator", /* tp_name */ "tuple_iterator", /* tp_name */
sizeof(tupleiterobject), /* tp_basicsize */ sizeof(tupleiterobject), /* tp_basicsize */
0, /* tp_itemsize */ 0, /* tp_itemsize */
/* methods */ /* methods */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment