[Python-checkins] python/dist/src/Objects structseq.c,1.8,1.9

loewis@users.sourceforge.net loewis@users.sourceforge.net
Wed, 16 Oct 2002 11:27:41 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv7316/Objects

Modified Files:
	structseq.c 
Log Message:
Add PyStructSequence_UnnamedField. Add stat_float_times.
Use integers in stat tuple, optionally floats in named fields.


Index: structseq.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/structseq.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** structseq.c	12 Apr 2002 03:05:37 -0000	1.8
--- structseq.c	16 Oct 2002 18:27:39 -0000	1.9
***************
*** 9,12 ****
--- 9,16 ----
  static char real_length_key[] = "n_fields";
  
+ /* Fields with this name have only a field index, not a field name. 
+    They are only allowed for indices < n_visible_fields. */
+ char *PyStructSequence_UnnamedField = "unnamed field";
+ 
  #define VISIBLE_SIZE(op) ((op)->ob_size)
  #define VISIBLE_SIZE_TP(tp) PyInt_AsLong( \
***************
*** 333,340 ****
  	PyObject *dict;
  	PyMemberDef* members;
! 	int n_members, i;
  
  	for (i = 0; desc->fields[i].name != NULL; ++i)
! 		;
  	n_members = i;
  
--- 337,346 ----
  	PyObject *dict;
  	PyMemberDef* members;
! 	int n_members, n_unnamed_members, i, k;
  
+ 	n_unnamed_members = 0;
  	for (i = 0; desc->fields[i].name != NULL; ++i)
! 		if (desc->fields[0].name == PyStructSequence_UnnamedField)
! 			n_unnamed_members++;
  	n_members = i;
  
***************
*** 346,360 ****
  	type->tp_itemsize = 0;
  
! 	members = PyMem_NEW(PyMemberDef, n_members+1);
  	
! 	for (i = 0; i < n_members; ++i) {
! 		members[i].name = desc->fields[i].name;
! 		members[i].type = T_OBJECT;
! 		members[i].offset = offsetof(PyStructSequence, ob_item)
  		  + i * sizeof(PyObject*);
! 		members[i].flags = READONLY;
! 		members[i].doc = desc->fields[i].doc;
  	}
! 	members[n_members].name = NULL;
  
  	type->tp_members = members;
--- 352,369 ----
  	type->tp_itemsize = 0;
  
! 	members = PyMem_NEW(PyMemberDef, n_members-n_unnamed_members+1);
  	
! 	for (i = k = 0; i < n_members; ++i) {
! 		if (desc->fields[i].name == PyStructSequence_UnnamedField)
! 			continue;
! 		members[k].name = desc->fields[i].name;
! 		members[k].type = T_OBJECT;
! 		members[k].offset = offsetof(PyStructSequence, ob_item)
  		  + i * sizeof(PyObject*);
! 		members[k].flags = READONLY;
! 		members[k].doc = desc->fields[i].doc;
! 		k++;
  	}
! 	members[k].name = NULL;
  
  	type->tp_members = members;