17db96d56Sopenharmony_ci
27db96d56Sopenharmony_ci/* Named tuple object interface */
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci#ifndef Py_STRUCTSEQ_H
57db96d56Sopenharmony_ci#define Py_STRUCTSEQ_H
67db96d56Sopenharmony_ci#ifdef __cplusplus
77db96d56Sopenharmony_ciextern "C" {
87db96d56Sopenharmony_ci#endif
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_citypedef struct PyStructSequence_Field {
117db96d56Sopenharmony_ci    const char *name;
127db96d56Sopenharmony_ci    const char *doc;
137db96d56Sopenharmony_ci} PyStructSequence_Field;
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_citypedef struct PyStructSequence_Desc {
167db96d56Sopenharmony_ci    const char *name;
177db96d56Sopenharmony_ci    const char *doc;
187db96d56Sopenharmony_ci    PyStructSequence_Field *fields;
197db96d56Sopenharmony_ci    int n_in_sequence;
207db96d56Sopenharmony_ci} PyStructSequence_Desc;
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ciPyAPI_DATA(const char * const) PyStructSequence_UnnamedField;
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci#ifndef Py_LIMITED_API
257db96d56Sopenharmony_ciPyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type,
267db96d56Sopenharmony_ci                                           PyStructSequence_Desc *desc);
277db96d56Sopenharmony_ciPyAPI_FUNC(int) PyStructSequence_InitType2(PyTypeObject *type,
287db96d56Sopenharmony_ci                                           PyStructSequence_Desc *desc);
297db96d56Sopenharmony_ci#endif
307db96d56Sopenharmony_ciPyAPI_FUNC(PyTypeObject*) PyStructSequence_NewType(PyStructSequence_Desc *desc);
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_ciPyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type);
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci#ifndef Py_LIMITED_API
357db96d56Sopenharmony_citypedef PyTupleObject PyStructSequence;
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ci/* Macro, *only* to be used to fill in brand new objects */
387db96d56Sopenharmony_ci#define PyStructSequence_SET_ITEM(op, i, v) PyTuple_SET_ITEM(op, i, v)
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ci#define PyStructSequence_GET_ITEM(op, i) PyTuple_GET_ITEM(op, i)
417db96d56Sopenharmony_ci#endif
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ciPyAPI_FUNC(void) PyStructSequence_SetItem(PyObject*, Py_ssize_t, PyObject*);
447db96d56Sopenharmony_ciPyAPI_FUNC(PyObject*) PyStructSequence_GetItem(PyObject*, Py_ssize_t);
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci#ifdef __cplusplus
477db96d56Sopenharmony_ci}
487db96d56Sopenharmony_ci#endif
497db96d56Sopenharmony_ci#endif /* !Py_STRUCTSEQ_H */
50