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

loewis@users.sourceforge.net loewis@users.sourceforge.net
2002年10月16日 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;

AltStyle によって変換されたページ (->オリジナル) /