17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(func_new__doc__, 67db96d56Sopenharmony_ci"function(code, globals, name=None, argdefs=None, closure=None)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Create a function object.\n" 107db96d56Sopenharmony_ci"\n" 117db96d56Sopenharmony_ci" code\n" 127db96d56Sopenharmony_ci" a code object\n" 137db96d56Sopenharmony_ci" globals\n" 147db96d56Sopenharmony_ci" the globals dictionary\n" 157db96d56Sopenharmony_ci" name\n" 167db96d56Sopenharmony_ci" a string that overrides the name from the code object\n" 177db96d56Sopenharmony_ci" argdefs\n" 187db96d56Sopenharmony_ci" a tuple that specifies the default argument values\n" 197db96d56Sopenharmony_ci" closure\n" 207db96d56Sopenharmony_ci" a tuple that supplies the bindings for free variables"); 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_cistatic PyObject * 237db96d56Sopenharmony_cifunc_new_impl(PyTypeObject *type, PyCodeObject *code, PyObject *globals, 247db96d56Sopenharmony_ci PyObject *name, PyObject *defaults, PyObject *closure); 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_cistatic PyObject * 277db96d56Sopenharmony_cifunc_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) 287db96d56Sopenharmony_ci{ 297db96d56Sopenharmony_ci PyObject *return_value = NULL; 307db96d56Sopenharmony_ci static const char * const _keywords[] = {"code", "globals", "name", "argdefs", "closure", NULL}; 317db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "function", 0}; 327db96d56Sopenharmony_ci PyObject *argsbuf[5]; 337db96d56Sopenharmony_ci PyObject * const *fastargs; 347db96d56Sopenharmony_ci Py_ssize_t nargs = PyTuple_GET_SIZE(args); 357db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 2; 367db96d56Sopenharmony_ci PyCodeObject *code; 377db96d56Sopenharmony_ci PyObject *globals; 387db96d56Sopenharmony_ci PyObject *name = Py_None; 397db96d56Sopenharmony_ci PyObject *defaults = Py_None; 407db96d56Sopenharmony_ci PyObject *closure = Py_None; 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 2, 5, 0, argsbuf); 437db96d56Sopenharmony_ci if (!fastargs) { 447db96d56Sopenharmony_ci goto exit; 457db96d56Sopenharmony_ci } 467db96d56Sopenharmony_ci if (!PyObject_TypeCheck(fastargs[0], &PyCode_Type)) { 477db96d56Sopenharmony_ci _PyArg_BadArgument("function", "argument 'code'", (&PyCode_Type)->tp_name, fastargs[0]); 487db96d56Sopenharmony_ci goto exit; 497db96d56Sopenharmony_ci } 507db96d56Sopenharmony_ci code = (PyCodeObject *)fastargs[0]; 517db96d56Sopenharmony_ci if (!PyDict_Check(fastargs[1])) { 527db96d56Sopenharmony_ci _PyArg_BadArgument("function", "argument 'globals'", "dict", fastargs[1]); 537db96d56Sopenharmony_ci goto exit; 547db96d56Sopenharmony_ci } 557db96d56Sopenharmony_ci globals = fastargs[1]; 567db96d56Sopenharmony_ci if (!noptargs) { 577db96d56Sopenharmony_ci goto skip_optional_pos; 587db96d56Sopenharmony_ci } 597db96d56Sopenharmony_ci if (fastargs[2]) { 607db96d56Sopenharmony_ci name = fastargs[2]; 617db96d56Sopenharmony_ci if (!--noptargs) { 627db96d56Sopenharmony_ci goto skip_optional_pos; 637db96d56Sopenharmony_ci } 647db96d56Sopenharmony_ci } 657db96d56Sopenharmony_ci if (fastargs[3]) { 667db96d56Sopenharmony_ci defaults = fastargs[3]; 677db96d56Sopenharmony_ci if (!--noptargs) { 687db96d56Sopenharmony_ci goto skip_optional_pos; 697db96d56Sopenharmony_ci } 707db96d56Sopenharmony_ci } 717db96d56Sopenharmony_ci closure = fastargs[4]; 727db96d56Sopenharmony_ciskip_optional_pos: 737db96d56Sopenharmony_ci return_value = func_new_impl(type, code, globals, name, defaults, closure); 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ciexit: 767db96d56Sopenharmony_ci return return_value; 777db96d56Sopenharmony_ci} 787db96d56Sopenharmony_ci/*[clinic end generated code: output=3d96afa3396e5c82 input=a9049054013a1b77]*/ 79