[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;