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