1 2/* Named tuple object interface */ 3 4#ifndef Py_STRUCTSEQ_H 5#define Py_STRUCTSEQ_H 6#ifdef __cplusplus 7extern "C" { 8#endif 9 10typedef struct PyStructSequence_Field { 11 const char *name; 12 const char *doc; 13} PyStructSequence_Field; 14 15typedef struct PyStructSequence_Desc { 16 const char *name; 17 const char *doc; 18 PyStructSequence_Field *fields; 19 int n_in_sequence; 20} PyStructSequence_Desc; 21 22PyAPI_DATA(const char * const) PyStructSequence_UnnamedField; 23 24#ifndef Py_LIMITED_API 25PyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type, 26 PyStructSequence_Desc *desc); 27PyAPI_FUNC(int) PyStructSequence_InitType2(PyTypeObject *type, 28 PyStructSequence_Desc *desc); 29#endif 30PyAPI_FUNC(PyTypeObject*) PyStructSequence_NewType(PyStructSequence_Desc *desc); 31 32PyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type); 33 34#ifndef Py_LIMITED_API 35typedef PyTupleObject PyStructSequence; 36 37/* Macro, *only* to be used to fill in brand new objects */ 38#define PyStructSequence_SET_ITEM(op, i, v) PyTuple_SET_ITEM(op, i, v) 39 40#define PyStructSequence_GET_ITEM(op, i) PyTuple_GET_ITEM(op, i) 41#endif 42 43PyAPI_FUNC(void) PyStructSequence_SetItem(PyObject*, Py_ssize_t, PyObject*); 44PyAPI_FUNC(PyObject*) PyStructSequence_GetItem(PyObject*, Py_ssize_t); 45 46#ifdef __cplusplus 47} 48#endif 49#endif /* !Py_STRUCTSEQ_H */ 50