blob: af227164c8d4587eee53c24d30524be9b851f5e5 [file] [log] [blame]
Guido van Rossum98bf58f2001-10-18 20:34:25 +00001
Benjamin Petersonda3b5bf2010-08-09 15:53:58 +00002/* Named tuple object interface */
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003
4#ifndef Py_STRUCTSEQ_H
5#define Py_STRUCTSEQ_H
6#ifdef __cplusplus
7extern "C" {
8#endif
Fred Drake330f72c2002-10-17 19:48:27 +00009
Guido van Rossum98bf58f2001-10-18 20:34:25 +000010typedef struct PyStructSequence_Field {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000011 char *name;
12 char *doc;
Guido van Rossum98bf58f2001-10-18 20:34:25 +000013} PyStructSequence_Field;
14
15typedef struct PyStructSequence_Desc {
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000016 char *name;
17 char *doc;
18 struct PyStructSequence_Field *fields;
19 int n_in_sequence;
Guido van Rossum98bf58f2001-10-18 20:34:25 +000020} PyStructSequence_Desc;
21
Martin v. Löwisf607bda2002-10-16 18:27:39 +000022extern char* PyStructSequence_UnnamedField;
23
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000024#ifndef Py_LIMITED_API
Fred Drake330f72c2002-10-17 19:48:27 +000025PyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type,
Antoine Pitrouf95a1b32010-05-09 15:52:27 +000026 PyStructSequence_Desc *desc);
Victor Stinner1c8f0592013-07-22 22:24:54 +020027PyAPI_FUNC(int) PyStructSequence_InitType2(PyTypeObject *type,
28 PyStructSequence_Desc *desc);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000029#endif
30PyAPI_FUNC(PyTypeObject*) PyStructSequence_NewType(PyStructSequence_Desc *desc);
Fred Drake330f72c2002-10-17 19:48:27 +000031
Mark Hammond91a681d2002-08-12 07:21:58 +000032PyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type);
Guido van Rossum98bf58f2001-10-18 20:34:25 +000033
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000034#ifndef Py_LIMITED_API
Benjamin Petersonccabcd42010-07-07 20:54:01 +000035typedef PyTupleObject PyStructSequence;
Guido van Rossum98bf58f2001-10-18 20:34:25 +000036
37/* Macro, *only* to be used to fill in brand new objects */
Benjamin Petersonccabcd42010-07-07 20:54:01 +000038#define PyStructSequence_SET_ITEM(op, i, v) PyTuple_SET_ITEM(op, i, v)
Guido van Rossum98bf58f2001-10-18 20:34:25 +000039
Benjamin Petersonccabcd42010-07-07 20:54:01 +000040#define PyStructSequence_GET_ITEM(op, i) PyTuple_GET_ITEM(op, i)
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000041#endif
Skip Montanaro41cfce92007-08-24 21:11:00 +000042
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000043PyAPI_FUNC(void) PyStructSequence_SetItem(PyObject*, Py_ssize_t, PyObject*);
44PyAPI_FUNC(PyObject*) PyStructSequence_GetItem(PyObject*, Py_ssize_t);
Skip Montanaro41cfce92007-08-24 21:11:00 +000045
Guido van Rossum98bf58f2001-10-18 20:34:25 +000046#ifdef __cplusplus
47}
48#endif
49#endif /* !Py_STRUCTSEQ_H */