mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Remove "static forward" declaration. Move constructors
after the type objects.
This commit is contained in:
		
							parent
							
								
									9eec489c4a
								
							
						
					
					
						commit
						72d206776d
					
				
					 3 changed files with 79 additions and 85 deletions
				
			
		| 
						 | 
					@ -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 = {
 | 
				
			||||||
	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 @@
 | 
				
			||||||
   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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***** 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 {
 | 
				
			||||||
	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 = {
 | 
				
			||||||
	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 {
 | 
				
			||||||
	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 = {
 | 
				
			||||||
	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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue