17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(_symtable_symtable__doc__, 67db96d56Sopenharmony_ci"symtable($module, source, filename, startstr, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Return symbol and scope dictionaries used internally by compiler."); 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci#define _SYMTABLE_SYMTABLE_METHODDEF \ 127db96d56Sopenharmony_ci {"symtable", _PyCFunction_CAST(_symtable_symtable), METH_FASTCALL, _symtable_symtable__doc__}, 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_cistatic PyObject * 157db96d56Sopenharmony_ci_symtable_symtable_impl(PyObject *module, PyObject *source, 167db96d56Sopenharmony_ci PyObject *filename, const char *startstr); 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_cistatic PyObject * 197db96d56Sopenharmony_ci_symtable_symtable(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 207db96d56Sopenharmony_ci{ 217db96d56Sopenharmony_ci PyObject *return_value = NULL; 227db96d56Sopenharmony_ci PyObject *source; 237db96d56Sopenharmony_ci PyObject *filename; 247db96d56Sopenharmony_ci const char *startstr; 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("symtable", nargs, 3, 3)) { 277db96d56Sopenharmony_ci goto exit; 287db96d56Sopenharmony_ci } 297db96d56Sopenharmony_ci source = args[0]; 307db96d56Sopenharmony_ci if (!PyUnicode_FSDecoder(args[1], &filename)) { 317db96d56Sopenharmony_ci goto exit; 327db96d56Sopenharmony_ci } 337db96d56Sopenharmony_ci if (!PyUnicode_Check(args[2])) { 347db96d56Sopenharmony_ci _PyArg_BadArgument("symtable", "argument 3", "str", args[2]); 357db96d56Sopenharmony_ci goto exit; 367db96d56Sopenharmony_ci } 377db96d56Sopenharmony_ci Py_ssize_t startstr_length; 387db96d56Sopenharmony_ci startstr = PyUnicode_AsUTF8AndSize(args[2], &startstr_length); 397db96d56Sopenharmony_ci if (startstr == NULL) { 407db96d56Sopenharmony_ci goto exit; 417db96d56Sopenharmony_ci } 427db96d56Sopenharmony_ci if (strlen(startstr) != (size_t)startstr_length) { 437db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 447db96d56Sopenharmony_ci goto exit; 457db96d56Sopenharmony_ci } 467db96d56Sopenharmony_ci return_value = _symtable_symtable_impl(module, source, filename, startstr); 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ciexit: 497db96d56Sopenharmony_ci return return_value; 507db96d56Sopenharmony_ci} 517db96d56Sopenharmony_ci/*[clinic end generated code: output=3f7ccf535d750238 input=a9049054013a1b77]*/ 52