17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(Struct___init____doc__, 67db96d56Sopenharmony_ci"Struct(format)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Create a compiled struct object.\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci"Return a new Struct object which writes and reads binary data according to\n" 127db96d56Sopenharmony_ci"the format string.\n" 137db96d56Sopenharmony_ci"\n" 147db96d56Sopenharmony_ci"See help(struct) for more on format strings."); 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_cistatic int 177db96d56Sopenharmony_ciStruct___init___impl(PyStructObject *self, PyObject *format); 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cistatic int 207db96d56Sopenharmony_ciStruct___init__(PyObject *self, PyObject *args, PyObject *kwargs) 217db96d56Sopenharmony_ci{ 227db96d56Sopenharmony_ci int return_value = -1; 237db96d56Sopenharmony_ci static const char * const _keywords[] = {"format", NULL}; 247db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "Struct", 0}; 257db96d56Sopenharmony_ci PyObject *argsbuf[1]; 267db96d56Sopenharmony_ci PyObject * const *fastargs; 277db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 287db96d56Sopenharmony_ci PyObject *format; 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf); 317db96d56Sopenharmony_ci if (!fastargs) { 327db96d56Sopenharmony_ci goto exit; 337db96d56Sopenharmony_ci } 347db96d56Sopenharmony_ci format = fastargs[0]; 357db96d56Sopenharmony_ci return_value = Struct___init___impl((PyStructObject *)self, format); 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ciexit: 387db96d56Sopenharmony_ci return return_value; 397db96d56Sopenharmony_ci} 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ciPyDoc_STRVAR(Struct_unpack__doc__, 427db96d56Sopenharmony_ci"unpack($self, buffer, /)\n" 437db96d56Sopenharmony_ci"--\n" 447db96d56Sopenharmony_ci"\n" 457db96d56Sopenharmony_ci"Return a tuple containing unpacked values.\n" 467db96d56Sopenharmony_ci"\n" 477db96d56Sopenharmony_ci"Unpack according to the format string Struct.format. The buffer\'s size\n" 487db96d56Sopenharmony_ci"in bytes must be Struct.size.\n" 497db96d56Sopenharmony_ci"\n" 507db96d56Sopenharmony_ci"See help(struct) for more on format strings."); 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci#define STRUCT_UNPACK_METHODDEF \ 537db96d56Sopenharmony_ci {"unpack", (PyCFunction)Struct_unpack, METH_O, Struct_unpack__doc__}, 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_cistatic PyObject * 567db96d56Sopenharmony_ciStruct_unpack_impl(PyStructObject *self, Py_buffer *buffer); 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_cistatic PyObject * 597db96d56Sopenharmony_ciStruct_unpack(PyStructObject *self, PyObject *arg) 607db96d56Sopenharmony_ci{ 617db96d56Sopenharmony_ci PyObject *return_value = NULL; 627db96d56Sopenharmony_ci Py_buffer buffer = {NULL, NULL}; 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &buffer, PyBUF_SIMPLE) != 0) { 657db96d56Sopenharmony_ci goto exit; 667db96d56Sopenharmony_ci } 677db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&buffer, 'C')) { 687db96d56Sopenharmony_ci _PyArg_BadArgument("unpack", "argument", "contiguous buffer", arg); 697db96d56Sopenharmony_ci goto exit; 707db96d56Sopenharmony_ci } 717db96d56Sopenharmony_ci return_value = Struct_unpack_impl(self, &buffer); 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ciexit: 747db96d56Sopenharmony_ci /* Cleanup for buffer */ 757db96d56Sopenharmony_ci if (buffer.obj) { 767db96d56Sopenharmony_ci PyBuffer_Release(&buffer); 777db96d56Sopenharmony_ci } 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci return return_value; 807db96d56Sopenharmony_ci} 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ciPyDoc_STRVAR(Struct_unpack_from__doc__, 837db96d56Sopenharmony_ci"unpack_from($self, /, buffer, offset=0)\n" 847db96d56Sopenharmony_ci"--\n" 857db96d56Sopenharmony_ci"\n" 867db96d56Sopenharmony_ci"Return a tuple containing unpacked values.\n" 877db96d56Sopenharmony_ci"\n" 887db96d56Sopenharmony_ci"Values are unpacked according to the format string Struct.format.\n" 897db96d56Sopenharmony_ci"\n" 907db96d56Sopenharmony_ci"The buffer\'s size in bytes, starting at position offset, must be\n" 917db96d56Sopenharmony_ci"at least Struct.size.\n" 927db96d56Sopenharmony_ci"\n" 937db96d56Sopenharmony_ci"See help(struct) for more on format strings."); 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci#define STRUCT_UNPACK_FROM_METHODDEF \ 967db96d56Sopenharmony_ci {"unpack_from", _PyCFunction_CAST(Struct_unpack_from), METH_FASTCALL|METH_KEYWORDS, Struct_unpack_from__doc__}, 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_cistatic PyObject * 997db96d56Sopenharmony_ciStruct_unpack_from_impl(PyStructObject *self, Py_buffer *buffer, 1007db96d56Sopenharmony_ci Py_ssize_t offset); 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_cistatic PyObject * 1037db96d56Sopenharmony_ciStruct_unpack_from(PyStructObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1047db96d56Sopenharmony_ci{ 1057db96d56Sopenharmony_ci PyObject *return_value = NULL; 1067db96d56Sopenharmony_ci static const char * const _keywords[] = {"buffer", "offset", NULL}; 1077db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "unpack_from", 0}; 1087db96d56Sopenharmony_ci PyObject *argsbuf[2]; 1097db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 1107db96d56Sopenharmony_ci Py_buffer buffer = {NULL, NULL}; 1117db96d56Sopenharmony_ci Py_ssize_t offset = 0; 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf); 1147db96d56Sopenharmony_ci if (!args) { 1157db96d56Sopenharmony_ci goto exit; 1167db96d56Sopenharmony_ci } 1177db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &buffer, PyBUF_SIMPLE) != 0) { 1187db96d56Sopenharmony_ci goto exit; 1197db96d56Sopenharmony_ci } 1207db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&buffer, 'C')) { 1217db96d56Sopenharmony_ci _PyArg_BadArgument("unpack_from", "argument 'buffer'", "contiguous buffer", args[0]); 1227db96d56Sopenharmony_ci goto exit; 1237db96d56Sopenharmony_ci } 1247db96d56Sopenharmony_ci if (!noptargs) { 1257db96d56Sopenharmony_ci goto skip_optional_pos; 1267db96d56Sopenharmony_ci } 1277db96d56Sopenharmony_ci { 1287db96d56Sopenharmony_ci Py_ssize_t ival = -1; 1297db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[1]); 1307db96d56Sopenharmony_ci if (iobj != NULL) { 1317db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 1327db96d56Sopenharmony_ci Py_DECREF(iobj); 1337db96d56Sopenharmony_ci } 1347db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 1357db96d56Sopenharmony_ci goto exit; 1367db96d56Sopenharmony_ci } 1377db96d56Sopenharmony_ci offset = ival; 1387db96d56Sopenharmony_ci } 1397db96d56Sopenharmony_ciskip_optional_pos: 1407db96d56Sopenharmony_ci return_value = Struct_unpack_from_impl(self, &buffer, offset); 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ciexit: 1437db96d56Sopenharmony_ci /* Cleanup for buffer */ 1447db96d56Sopenharmony_ci if (buffer.obj) { 1457db96d56Sopenharmony_ci PyBuffer_Release(&buffer); 1467db96d56Sopenharmony_ci } 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ci return return_value; 1497db96d56Sopenharmony_ci} 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ciPyDoc_STRVAR(Struct_iter_unpack__doc__, 1527db96d56Sopenharmony_ci"iter_unpack($self, buffer, /)\n" 1537db96d56Sopenharmony_ci"--\n" 1547db96d56Sopenharmony_ci"\n" 1557db96d56Sopenharmony_ci"Return an iterator yielding tuples.\n" 1567db96d56Sopenharmony_ci"\n" 1577db96d56Sopenharmony_ci"Tuples are unpacked from the given bytes source, like a repeated\n" 1587db96d56Sopenharmony_ci"invocation of unpack_from().\n" 1597db96d56Sopenharmony_ci"\n" 1607db96d56Sopenharmony_ci"Requires that the bytes length be a multiple of the struct size."); 1617db96d56Sopenharmony_ci 1627db96d56Sopenharmony_ci#define STRUCT_ITER_UNPACK_METHODDEF \ 1637db96d56Sopenharmony_ci {"iter_unpack", (PyCFunction)Struct_iter_unpack, METH_O, Struct_iter_unpack__doc__}, 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ciPyDoc_STRVAR(_clearcache__doc__, 1667db96d56Sopenharmony_ci"_clearcache($module, /)\n" 1677db96d56Sopenharmony_ci"--\n" 1687db96d56Sopenharmony_ci"\n" 1697db96d56Sopenharmony_ci"Clear the internal cache."); 1707db96d56Sopenharmony_ci 1717db96d56Sopenharmony_ci#define _CLEARCACHE_METHODDEF \ 1727db96d56Sopenharmony_ci {"_clearcache", (PyCFunction)_clearcache, METH_NOARGS, _clearcache__doc__}, 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_cistatic PyObject * 1757db96d56Sopenharmony_ci_clearcache_impl(PyObject *module); 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_cistatic PyObject * 1787db96d56Sopenharmony_ci_clearcache(PyObject *module, PyObject *Py_UNUSED(ignored)) 1797db96d56Sopenharmony_ci{ 1807db96d56Sopenharmony_ci return _clearcache_impl(module); 1817db96d56Sopenharmony_ci} 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ciPyDoc_STRVAR(calcsize__doc__, 1847db96d56Sopenharmony_ci"calcsize($module, format, /)\n" 1857db96d56Sopenharmony_ci"--\n" 1867db96d56Sopenharmony_ci"\n" 1877db96d56Sopenharmony_ci"Return size in bytes of the struct described by the format string."); 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci#define CALCSIZE_METHODDEF \ 1907db96d56Sopenharmony_ci {"calcsize", (PyCFunction)calcsize, METH_O, calcsize__doc__}, 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_cistatic Py_ssize_t 1937db96d56Sopenharmony_cicalcsize_impl(PyObject *module, PyStructObject *s_object); 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_cistatic PyObject * 1967db96d56Sopenharmony_cicalcsize(PyObject *module, PyObject *arg) 1977db96d56Sopenharmony_ci{ 1987db96d56Sopenharmony_ci PyObject *return_value = NULL; 1997db96d56Sopenharmony_ci PyStructObject *s_object = NULL; 2007db96d56Sopenharmony_ci Py_ssize_t _return_value; 2017db96d56Sopenharmony_ci 2027db96d56Sopenharmony_ci if (!cache_struct_converter(module, arg, &s_object)) { 2037db96d56Sopenharmony_ci goto exit; 2047db96d56Sopenharmony_ci } 2057db96d56Sopenharmony_ci _return_value = calcsize_impl(module, s_object); 2067db96d56Sopenharmony_ci if ((_return_value == -1) && PyErr_Occurred()) { 2077db96d56Sopenharmony_ci goto exit; 2087db96d56Sopenharmony_ci } 2097db96d56Sopenharmony_ci return_value = PyLong_FromSsize_t(_return_value); 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ciexit: 2127db96d56Sopenharmony_ci /* Cleanup for s_object */ 2137db96d56Sopenharmony_ci Py_XDECREF(s_object); 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ci return return_value; 2167db96d56Sopenharmony_ci} 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_ciPyDoc_STRVAR(unpack__doc__, 2197db96d56Sopenharmony_ci"unpack($module, format, buffer, /)\n" 2207db96d56Sopenharmony_ci"--\n" 2217db96d56Sopenharmony_ci"\n" 2227db96d56Sopenharmony_ci"Return a tuple containing values unpacked according to the format string.\n" 2237db96d56Sopenharmony_ci"\n" 2247db96d56Sopenharmony_ci"The buffer\'s size in bytes must be calcsize(format).\n" 2257db96d56Sopenharmony_ci"\n" 2267db96d56Sopenharmony_ci"See help(struct) for more on format strings."); 2277db96d56Sopenharmony_ci 2287db96d56Sopenharmony_ci#define UNPACK_METHODDEF \ 2297db96d56Sopenharmony_ci {"unpack", _PyCFunction_CAST(unpack), METH_FASTCALL, unpack__doc__}, 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_cistatic PyObject * 2327db96d56Sopenharmony_ciunpack_impl(PyObject *module, PyStructObject *s_object, Py_buffer *buffer); 2337db96d56Sopenharmony_ci 2347db96d56Sopenharmony_cistatic PyObject * 2357db96d56Sopenharmony_ciunpack(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 2367db96d56Sopenharmony_ci{ 2377db96d56Sopenharmony_ci PyObject *return_value = NULL; 2387db96d56Sopenharmony_ci PyStructObject *s_object = NULL; 2397db96d56Sopenharmony_ci Py_buffer buffer = {NULL, NULL}; 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("unpack", nargs, 2, 2)) { 2427db96d56Sopenharmony_ci goto exit; 2437db96d56Sopenharmony_ci } 2447db96d56Sopenharmony_ci if (!cache_struct_converter(module, args[0], &s_object)) { 2457db96d56Sopenharmony_ci goto exit; 2467db96d56Sopenharmony_ci } 2477db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &buffer, PyBUF_SIMPLE) != 0) { 2487db96d56Sopenharmony_ci goto exit; 2497db96d56Sopenharmony_ci } 2507db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&buffer, 'C')) { 2517db96d56Sopenharmony_ci _PyArg_BadArgument("unpack", "argument 2", "contiguous buffer", args[1]); 2527db96d56Sopenharmony_ci goto exit; 2537db96d56Sopenharmony_ci } 2547db96d56Sopenharmony_ci return_value = unpack_impl(module, s_object, &buffer); 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ciexit: 2577db96d56Sopenharmony_ci /* Cleanup for s_object */ 2587db96d56Sopenharmony_ci Py_XDECREF(s_object); 2597db96d56Sopenharmony_ci /* Cleanup for buffer */ 2607db96d56Sopenharmony_ci if (buffer.obj) { 2617db96d56Sopenharmony_ci PyBuffer_Release(&buffer); 2627db96d56Sopenharmony_ci } 2637db96d56Sopenharmony_ci 2647db96d56Sopenharmony_ci return return_value; 2657db96d56Sopenharmony_ci} 2667db96d56Sopenharmony_ci 2677db96d56Sopenharmony_ciPyDoc_STRVAR(unpack_from__doc__, 2687db96d56Sopenharmony_ci"unpack_from($module, format, /, buffer, offset=0)\n" 2697db96d56Sopenharmony_ci"--\n" 2707db96d56Sopenharmony_ci"\n" 2717db96d56Sopenharmony_ci"Return a tuple containing values unpacked according to the format string.\n" 2727db96d56Sopenharmony_ci"\n" 2737db96d56Sopenharmony_ci"The buffer\'s size, minus offset, must be at least calcsize(format).\n" 2747db96d56Sopenharmony_ci"\n" 2757db96d56Sopenharmony_ci"See help(struct) for more on format strings."); 2767db96d56Sopenharmony_ci 2777db96d56Sopenharmony_ci#define UNPACK_FROM_METHODDEF \ 2787db96d56Sopenharmony_ci {"unpack_from", _PyCFunction_CAST(unpack_from), METH_FASTCALL|METH_KEYWORDS, unpack_from__doc__}, 2797db96d56Sopenharmony_ci 2807db96d56Sopenharmony_cistatic PyObject * 2817db96d56Sopenharmony_ciunpack_from_impl(PyObject *module, PyStructObject *s_object, 2827db96d56Sopenharmony_ci Py_buffer *buffer, Py_ssize_t offset); 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_cistatic PyObject * 2857db96d56Sopenharmony_ciunpack_from(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2867db96d56Sopenharmony_ci{ 2877db96d56Sopenharmony_ci PyObject *return_value = NULL; 2887db96d56Sopenharmony_ci static const char * const _keywords[] = {"", "buffer", "offset", NULL}; 2897db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "unpack_from", 0}; 2907db96d56Sopenharmony_ci PyObject *argsbuf[3]; 2917db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2; 2927db96d56Sopenharmony_ci PyStructObject *s_object = NULL; 2937db96d56Sopenharmony_ci Py_buffer buffer = {NULL, NULL}; 2947db96d56Sopenharmony_ci Py_ssize_t offset = 0; 2957db96d56Sopenharmony_ci 2967db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf); 2977db96d56Sopenharmony_ci if (!args) { 2987db96d56Sopenharmony_ci goto exit; 2997db96d56Sopenharmony_ci } 3007db96d56Sopenharmony_ci if (!cache_struct_converter(module, args[0], &s_object)) { 3017db96d56Sopenharmony_ci goto exit; 3027db96d56Sopenharmony_ci } 3037db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &buffer, PyBUF_SIMPLE) != 0) { 3047db96d56Sopenharmony_ci goto exit; 3057db96d56Sopenharmony_ci } 3067db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&buffer, 'C')) { 3077db96d56Sopenharmony_ci _PyArg_BadArgument("unpack_from", "argument 'buffer'", "contiguous buffer", args[1]); 3087db96d56Sopenharmony_ci goto exit; 3097db96d56Sopenharmony_ci } 3107db96d56Sopenharmony_ci if (!noptargs) { 3117db96d56Sopenharmony_ci goto skip_optional_pos; 3127db96d56Sopenharmony_ci } 3137db96d56Sopenharmony_ci { 3147db96d56Sopenharmony_ci Py_ssize_t ival = -1; 3157db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[2]); 3167db96d56Sopenharmony_ci if (iobj != NULL) { 3177db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 3187db96d56Sopenharmony_ci Py_DECREF(iobj); 3197db96d56Sopenharmony_ci } 3207db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 3217db96d56Sopenharmony_ci goto exit; 3227db96d56Sopenharmony_ci } 3237db96d56Sopenharmony_ci offset = ival; 3247db96d56Sopenharmony_ci } 3257db96d56Sopenharmony_ciskip_optional_pos: 3267db96d56Sopenharmony_ci return_value = unpack_from_impl(module, s_object, &buffer, offset); 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ciexit: 3297db96d56Sopenharmony_ci /* Cleanup for s_object */ 3307db96d56Sopenharmony_ci Py_XDECREF(s_object); 3317db96d56Sopenharmony_ci /* Cleanup for buffer */ 3327db96d56Sopenharmony_ci if (buffer.obj) { 3337db96d56Sopenharmony_ci PyBuffer_Release(&buffer); 3347db96d56Sopenharmony_ci } 3357db96d56Sopenharmony_ci 3367db96d56Sopenharmony_ci return return_value; 3377db96d56Sopenharmony_ci} 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ciPyDoc_STRVAR(iter_unpack__doc__, 3407db96d56Sopenharmony_ci"iter_unpack($module, format, buffer, /)\n" 3417db96d56Sopenharmony_ci"--\n" 3427db96d56Sopenharmony_ci"\n" 3437db96d56Sopenharmony_ci"Return an iterator yielding tuples unpacked from the given bytes.\n" 3447db96d56Sopenharmony_ci"\n" 3457db96d56Sopenharmony_ci"The bytes are unpacked according to the format string, like\n" 3467db96d56Sopenharmony_ci"a repeated invocation of unpack_from().\n" 3477db96d56Sopenharmony_ci"\n" 3487db96d56Sopenharmony_ci"Requires that the bytes length be a multiple of the format struct size."); 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci#define ITER_UNPACK_METHODDEF \ 3517db96d56Sopenharmony_ci {"iter_unpack", _PyCFunction_CAST(iter_unpack), METH_FASTCALL, iter_unpack__doc__}, 3527db96d56Sopenharmony_ci 3537db96d56Sopenharmony_cistatic PyObject * 3547db96d56Sopenharmony_ciiter_unpack_impl(PyObject *module, PyStructObject *s_object, 3557db96d56Sopenharmony_ci PyObject *buffer); 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_cistatic PyObject * 3587db96d56Sopenharmony_ciiter_unpack(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 3597db96d56Sopenharmony_ci{ 3607db96d56Sopenharmony_ci PyObject *return_value = NULL; 3617db96d56Sopenharmony_ci PyStructObject *s_object = NULL; 3627db96d56Sopenharmony_ci PyObject *buffer; 3637db96d56Sopenharmony_ci 3647db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("iter_unpack", nargs, 2, 2)) { 3657db96d56Sopenharmony_ci goto exit; 3667db96d56Sopenharmony_ci } 3677db96d56Sopenharmony_ci if (!cache_struct_converter(module, args[0], &s_object)) { 3687db96d56Sopenharmony_ci goto exit; 3697db96d56Sopenharmony_ci } 3707db96d56Sopenharmony_ci buffer = args[1]; 3717db96d56Sopenharmony_ci return_value = iter_unpack_impl(module, s_object, buffer); 3727db96d56Sopenharmony_ci 3737db96d56Sopenharmony_ciexit: 3747db96d56Sopenharmony_ci /* Cleanup for s_object */ 3757db96d56Sopenharmony_ci Py_XDECREF(s_object); 3767db96d56Sopenharmony_ci 3777db96d56Sopenharmony_ci return return_value; 3787db96d56Sopenharmony_ci} 3797db96d56Sopenharmony_ci/*[clinic end generated code: output=2065c9b007be631c input=a9049054013a1b77]*/ 380