Issue #20186: Converted the symtable module to Argument Clinic.
Original patch by Georg Brandl.
This commit is contained in:
parent
685c203e84
commit
5106ad13b2
|
@ -0,0 +1,39 @@
|
|||
/*[clinic input]
|
||||
preserve
|
||||
[clinic start generated code]*/
|
||||
|
||||
PyDoc_STRVAR(_symtable_symtable__doc__,
|
||||
"symtable($module, str, filename, startstr, /)\n"
|
||||
"--\n"
|
||||
"\n"
|
||||
"Return symbol and scope dictionaries used internally by compiler.");
|
||||
|
||||
#define _SYMTABLE_SYMTABLE_METHODDEF \
|
||||
{"symtable", (PyCFunction)_symtable_symtable, METH_FASTCALL, _symtable_symtable__doc__},
|
||||
|
||||
static PyObject *
|
||||
_symtable_symtable_impl(PyObject *module, const char *str,
|
||||
PyObject *filename, const char *startstr);
|
||||
|
||||
static PyObject *
|
||||
_symtable_symtable(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
const char *str;
|
||||
PyObject *filename;
|
||||
const char *startstr;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, "sO&s:symtable",
|
||||
&str, PyUnicode_FSDecoder, &filename, &startstr)) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (!_PyArg_NoStackKeywords("symtable", kwnames)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = _symtable_symtable_impl(module, str, filename, startstr);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
}
|
||||
/*[clinic end generated code: output=071dee4d836e2cfd input=a9049054013a1b77]*/
|
|
@ -4,20 +4,33 @@
|
|||
#include "Python-ast.h"
|
||||
#include "symtable.h"
|
||||
|
||||
#include "clinic/symtablemodule.c.h"
|
||||
/*[clinic input]
|
||||
module _symtable
|
||||
[clinic start generated code]*/
|
||||
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=f4685845a7100605]*/
|
||||
|
||||
|
||||
/*[clinic input]
|
||||
_symtable.symtable
|
||||
|
||||
str: str
|
||||
filename: object(converter='PyUnicode_FSDecoder')
|
||||
startstr: str
|
||||
/
|
||||
|
||||
Return symbol and scope dictionaries used internally by compiler.
|
||||
[clinic start generated code]*/
|
||||
|
||||
static PyObject *
|
||||
symtable_symtable(PyObject *self, PyObject *args)
|
||||
_symtable_symtable_impl(PyObject *module, const char *str,
|
||||
PyObject *filename, const char *startstr)
|
||||
/*[clinic end generated code: output=914b369c9b785956 input=6c615e84d5f408e3]*/
|
||||
{
|
||||
struct symtable *st;
|
||||
PyObject *t;
|
||||
|
||||
char *str;
|
||||
PyObject *filename;
|
||||
char *startstr;
|
||||
int start;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "sO&s:symtable",
|
||||
&str, PyUnicode_FSDecoder, &filename, &startstr))
|
||||
return NULL;
|
||||
if (strcmp(startstr, "exec") == 0)
|
||||
start = Py_file_input;
|
||||
else if (strcmp(startstr, "eval") == 0)
|
||||
|
@ -42,9 +55,7 @@ symtable_symtable(PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
static PyMethodDef symtable_methods[] = {
|
||||
{"symtable", symtable_symtable, METH_VARARGS,
|
||||
PyDoc_STR("Return symbol and scope dictionaries"
|
||||
" used internally by compiler.")},
|
||||
_SYMTABLE_SYMTABLE_METHODDEF
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue