[Python-checkins] CVS: python/dist/src/Objects rangeobject.c,2.16,2.17

Fred L. Drake python-dev@python.org
Thu, 3 Aug 2000 10:43:05 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory slayer.i.sourceforge.net:/tmp/cvs-serv28227

Modified Files:
	rangeobject.c 
Log Message:

Remove the tp_print handler.
Revise the tp_repr handler to produce a more "minimal" presentation.
Make the tolist() method use PyArg_ParseTuple() and provide a docstring.


Index: rangeobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/rangeobject.c,v
retrieving revision 2.16
retrieving revision 2.17
diff -C2 -r2.16 -r2.17
*** rangeobject.c	2000/07/09 06:21:27	2.16
--- rangeobject.c	2000/08/03 17:43:02	2.17
***************
*** 59,92 ****
  }
  
- static int
- range_print(rangeobject *r, FILE *fp, int flags)
- {
- 	int i, j;
- 
- 	fprintf(fp, "(");
- 	for (i = 0; i < r->reps; ++i)
- 		for (j = 0; j < r->len; ++j) {
- 			if (j > 0 || i > 0)
- 				fprintf(fp, ", ");
- 
- 			fprintf(fp, "%ld", r->start + j * r->step);
- 		}
- 
- 	if (r->len == 1 && r->reps == 1)
- 		fprintf(fp, ",");
- 	fprintf(fp, ")");
- 	return 0;
- }
- 
  static PyObject *
  range_repr(rangeobject *r)
  {
! 	char buf[80];
! 	sprintf(buf, "(xrange(%ld, %ld, %ld) * %d)",
! 			r->start,
! 			r->start + r->len * r->step,
! 			r->step,
! 			r->reps);
! 	return PyString_FromString(buf);
  }
  
--- 59,86 ----
  }
  
  static PyObject *
  range_repr(rangeobject *r)
  {
! 	char buf1[80];
! 	char buf2[80];
! 
! 	if (r->start == 0 && r->step == 1) {
! 		snprintf(buf1, sizeof(buf1), "xrange(%ld)",
! 			 r->start + r->len * r->step);
! 	}
! 	else {
! 		char *fmt = "xrange(%ld, %ld, %ld)";
! 		if (r->step == 1)
! 			fmt = "xrange(%ld, %ld)";
! 		snprintf(buf1, sizeof(buf1), fmt,
! 			 r->start,
! 			 r->start + r->len * r->step,
! 			 r->step);
! 	}
! 	if (r->reps != 1) {
! 		snprintf(buf2, sizeof(buf2),
! 			 "(%s * %d)", buf1, r->reps);
! 	}
! 	return PyString_FromString(r->reps == 1 ? buf1 : buf2);
  }
  
***************
*** 171,175 ****
  	int len = self->len * self->reps;
  
! 	if (! PyArg_Parse(args, ""))
  		return NULL;
  
--- 165,169 ----
  	int len = self->len * self->reps;
  
! 	if (! PyArg_ParseTuple(args, ":tolist"))
  		return NULL;
  
***************
*** 189,193 ****
  {
  	static PyMethodDef range_methods[] = {
! 		{"tolist",	(PyCFunction)range_tolist},
  		{NULL,		NULL}
  	};
--- 183,189 ----
  {
  	static PyMethodDef range_methods[] = {
! 		{"tolist",	(PyCFunction)range_tolist, METH_VARARGS,
!                  "tolist() -> list\n"
!                  "Return a list object with the same values."},
  		{NULL,		NULL}
  	};
***************
*** 229,237 ****
  	0,			/* Item size for varobject */
  	(destructor)range_dealloc, /*tp_dealloc*/
! 	(printfunc)range_print, /*tp_print*/
  	(getattrfunc)range_getattr, /*tp_getattr*/
  	0,			/*tp_setattr*/
  	(cmpfunc)range_compare, /*tp_compare*/
! 	(reprfunc)range_repr, /*tp_repr*/
  	0,			/*tp_as_number*/
  	&range_as_sequence,	/*tp_as_sequence*/
--- 225,233 ----
  	0,			/* Item size for varobject */
  	(destructor)range_dealloc, /*tp_dealloc*/
! 	0,			/*tp_print*/
  	(getattrfunc)range_getattr, /*tp_getattr*/
  	0,			/*tp_setattr*/
  	(cmpfunc)range_compare, /*tp_compare*/
! 	(reprfunc)range_repr,	/*tp_repr*/
  	0,			/*tp_as_number*/
  	&range_as_sequence,	/*tp_as_sequence*/