diff options
author | Guido van Rossum <guido@python.org> | 2001-10-18 20:34:25 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-10-18 20:34:25 (GMT) |
commit | 98bf58f1c61a1d6d8a21f75527c8ad7a7d47ef67 (patch) | |
tree | 7d8eda64ad82c7ba9f0ca3fe9c88b5e43505c98c /Include/structseq.h | |
parent | 8dd7adeb34cdbbb7b3b95ab502699d08b7ba328c (diff) | |
download | cpython-98bf58f1c61a1d6d8a21f75527c8ad7a7d47ef67.zip cpython-98bf58f1c61a1d6d8a21f75527c8ad7a7d47ef67.tar.gz cpython-98bf58f1c61a1d6d8a21f75527c8ad7a7d47ef67.tar.bz2 |
SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
This is a big one, touching lots of files. Some of the platforms
aren't tested yet. Briefly, this changes the return value of the
os/posix functions stat(), fstat(), statvfs(), fstatvfs(), and the
time functions localtime(), gmtime(), and strptime() from tuples into
pseudo-sequences. When accessed as a sequence, they behave exactly as
before. But they also have attributes like st_mtime or tm_year. The
stat return value, moreover, has a few platform-specific attributes
that are not available through the sequence interface (because
everybody expects the sequence to have a fixed length, these couldn't
be added there). If your platform's struct stat doesn't define
st_blksize, st_blocks or st_rdev, they won't be accessible from Python
either.
(Still missing is a documentation update.)
Diffstat (limited to 'Include/structseq.h')
-rw-r--r-- | Include/structseq.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Include/structseq.h b/Include/structseq.h new file mode 100644 index 0000000..b08f04e --- /dev/null +++ b/Include/structseq.h @@ -0,0 +1,39 @@ + +/* Tuple object interface */ + +#ifndef Py_STRUCTSEQ_H +#define Py_STRUCTSEQ_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyStructSequence_Field { + char *name; + char *doc; +} PyStructSequence_Field; + +typedef struct PyStructSequence_Desc { + char *name; + char *doc; + struct PyStructSequence_Field *fields; + int n_in_sequence; +} PyStructSequence_Desc; + +extern DL_IMPORT(void) PyStructSequence_InitType(PyTypeObject *type, + PyStructSequence_Desc *desc); + +extern DL_IMPORT(PyObject *) PyStructSequence_New(PyTypeObject* type); + +typedef struct { + PyObject_VAR_HEAD + PyObject *ob_item[1]; +} PyStructSequence; + +/* Macro, *only* to be used to fill in brand new objects */ +#define PyStructSequence_SET_ITEM(op, i, v) \ + (((PyStructSequence *)(op))->ob_item[i] = v) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_STRUCTSEQ_H */ |