Commit 57e44e8b authored by Martin v. Löwis's avatar Martin v. Löwis

Remove "static forward" declaration. Move constructors

after the type objects.
parent f7f24a73
...@@ -200,53 +200,6 @@ typedef struct { ...@@ -200,53 +200,6 @@ typedef struct {
long len; long len;
} rangeiterobject; } rangeiterobject;
static PyTypeObject Pyrangeiter_Type;
static PyObject *
range_iter(PyObject *seq)
{
rangeiterobject *it;
if (!PyRange_Check(seq)) {
PyErr_BadInternalCall();
return NULL;
}
it = PyObject_New(rangeiterobject, &Pyrangeiter_Type);
if (it == NULL)
return NULL;
it->index = 0;
it->start = ((rangeobject *)seq)->start;
it->step = ((rangeobject *)seq)->step;
it->len = ((rangeobject *)seq)->len;
return (PyObject *)it;
}
static PyObject *
range_reverse(PyObject *seq)
{
rangeiterobject *it;
long start, step, len;
if (!PyRange_Check(seq)) {
PyErr_BadInternalCall();
return NULL;
}
it = PyObject_New(rangeiterobject, &Pyrangeiter_Type);
if (it == NULL)
return NULL;
start = ((rangeobject *)seq)->start;
step = ((rangeobject *)seq)->step;
len = ((rangeobject *)seq)->len;
it->index = 0;
it->start = start + (len-1) * step;
it->step = -step;
it->len = len;
return (PyObject *)it;
}
static PyObject * static PyObject *
rangeiter_next(rangeiterobject *r) rangeiter_next(rangeiterobject *r)
{ {
...@@ -301,3 +254,48 @@ static PyTypeObject Pyrangeiter_Type = { ...@@ -301,3 +254,48 @@ static PyTypeObject Pyrangeiter_Type = {
rangeiter_methods, /* tp_methods */ rangeiter_methods, /* tp_methods */
0, 0,
}; };
static PyObject *
range_iter(PyObject *seq)
{
rangeiterobject *it;
if (!PyRange_Check(seq)) {
PyErr_BadInternalCall();
return NULL;
}
it = PyObject_New(rangeiterobject, &Pyrangeiter_Type);
if (it == NULL)
return NULL;
it->index = 0;
it->start = ((rangeobject *)seq)->start;
it->step = ((rangeobject *)seq)->step;
it->len = ((rangeobject *)seq)->len;
return (PyObject *)it;
}
static PyObject *
range_reverse(PyObject *seq)
{
rangeiterobject *it;
long start, step, len;
if (!PyRange_Check(seq)) {
PyErr_BadInternalCall();
return NULL;
}
it = PyObject_New(rangeiterobject, &Pyrangeiter_Type);
if (it == NULL)
return NULL;
start = ((rangeobject *)seq)->start;
step = ((rangeobject *)seq)->step;
len = ((rangeobject *)seq)->len;
it->index = 0;
it->start = start + (len-1) * step;
it->step = -step;
it->len = len;
return (PyObject *)it;
}
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Written and maintained by Raymond D. Hettinger <python@rcn.com> Written and maintained by Raymond D. Hettinger <python@rcn.com>
Derived from Lib/sets.py and Objects/dictobject.c. Derived from Lib/sets.py and Objects/dictobject.c.
Copyright (c) 2003-5 Python Software Foundation. Copyright (c) 2003-6 Python Software Foundation.
All rights reserved. All rights reserved.
*/ */
...@@ -719,8 +719,6 @@ set_nohash(PyObject *self) ...@@ -719,8 +719,6 @@ set_nohash(PyObject *self)
/***** Set iterator type ***********************************************/ /***** Set iterator type ***********************************************/
static PyTypeObject PySetIter_Type; /* Forward */
typedef struct { typedef struct {
PyObject_HEAD PyObject_HEAD
PySetObject *si_set; /* Set to NULL when iterator is exhausted */ PySetObject *si_set; /* Set to NULL when iterator is exhausted */
...@@ -729,20 +727,6 @@ typedef struct { ...@@ -729,20 +727,6 @@ typedef struct {
long len; long len;
} setiterobject; } setiterobject;
static PyObject *
set_iter(PySetObject *so)
{
setiterobject *si = PyObject_New(setiterobject, &PySetIter_Type);
if (si == NULL)
return NULL;
Py_INCREF(so);
si->si_set = so;
si->si_used = so->used;
si->si_pos = 0;
si->len = so->used;
return (PyObject *)si;
}
static void static void
setiter_dealloc(setiterobject *si) setiter_dealloc(setiterobject *si)
{ {
...@@ -838,6 +822,20 @@ static PyTypeObject PySetIter_Type = { ...@@ -838,6 +822,20 @@ static PyTypeObject PySetIter_Type = {
0, 0,
}; };
static PyObject *
set_iter(PySetObject *so)
{
setiterobject *si = PyObject_New(setiterobject, &PySetIter_Type);
if (si == NULL)
return NULL;
Py_INCREF(so);
si->si_set = so;
si->si_used = so->used;
si->si_pos = 0;
si->len = so->used;
return (PyObject *)si;
}
static int static int
set_update_internal(PySetObject *so, PyObject *other) set_update_internal(PySetObject *so, PyObject *other)
{ {
......
...@@ -791,27 +791,6 @@ typedef struct { ...@@ -791,27 +791,6 @@ typedef struct {
PyTupleObject *it_seq; /* Set to NULL when iterator is exhausted */ PyTupleObject *it_seq; /* Set to NULL when iterator is exhausted */
} tupleiterobject; } tupleiterobject;
PyTypeObject PyTupleIter_Type;
static PyObject *
tuple_iter(PyObject *seq)
{
tupleiterobject *it;
if (!PyTuple_Check(seq)) {
PyErr_BadInternalCall();
return NULL;
}
it = PyObject_GC_New(tupleiterobject, &PyTupleIter_Type);
if (it == NULL)
return NULL;
it->it_index = 0;
Py_INCREF(seq);
it->it_seq = (PyTupleObject *)seq;
_PyObject_GC_TRACK(it);
return (PyObject *)it;
}
static void static void
tupleiter_dealloc(tupleiterobject *it) tupleiter_dealloc(tupleiterobject *it)
{ {
...@@ -901,3 +880,22 @@ PyTypeObject PyTupleIter_Type = { ...@@ -901,3 +880,22 @@ PyTypeObject PyTupleIter_Type = {
tupleiter_methods, /* tp_methods */ tupleiter_methods, /* tp_methods */
0, 0,
}; };
static PyObject *
tuple_iter(PyObject *seq)
{
tupleiterobject *it;
if (!PyTuple_Check(seq)) {
PyErr_BadInternalCall();
return NULL;
}
it = PyObject_GC_New(tupleiterobject, &PyTupleIter_Type);
if (it == NULL)
return NULL;
it->it_index = 0;
Py_INCREF(seq);
it->it_seq = (PyTupleObject *)seq;
_PyObject_GC_TRACK(it);
return (PyObject *)it;
}
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