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