1/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5static PyObject *
6pysqlite_row_new_impl(PyTypeObject *type, pysqlite_Cursor *cursor,
7                      PyObject *data);
8
9static PyObject *
10pysqlite_row_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
11{
12    PyObject *return_value = NULL;
13    pysqlite_Cursor *cursor;
14    PyObject *data;
15
16    if ((type == clinic_state()->RowType ||
17         type->tp_init == clinic_state()->RowType->tp_init) &&
18        !_PyArg_NoKeywords("Row", kwargs)) {
19        goto exit;
20    }
21    if (!_PyArg_CheckPositional("Row", PyTuple_GET_SIZE(args), 2, 2)) {
22        goto exit;
23    }
24    if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), clinic_state()->CursorType)) {
25        _PyArg_BadArgument("Row", "argument 1", (clinic_state()->CursorType)->tp_name, PyTuple_GET_ITEM(args, 0));
26        goto exit;
27    }
28    cursor = (pysqlite_Cursor *)PyTuple_GET_ITEM(args, 0);
29    if (!PyTuple_Check(PyTuple_GET_ITEM(args, 1))) {
30        _PyArg_BadArgument("Row", "argument 2", "tuple", PyTuple_GET_ITEM(args, 1));
31        goto exit;
32    }
33    data = PyTuple_GET_ITEM(args, 1);
34    return_value = pysqlite_row_new_impl(type, cursor, data);
35
36exit:
37    return return_value;
38}
39
40PyDoc_STRVAR(pysqlite_row_keys__doc__,
41"keys($self, /)\n"
42"--\n"
43"\n"
44"Returns the keys of the row.");
45
46#define PYSQLITE_ROW_KEYS_METHODDEF    \
47    {"keys", (PyCFunction)pysqlite_row_keys, METH_NOARGS, pysqlite_row_keys__doc__},
48
49static PyObject *
50pysqlite_row_keys_impl(pysqlite_Row *self);
51
52static PyObject *
53pysqlite_row_keys(pysqlite_Row *self, PyObject *Py_UNUSED(ignored))
54{
55    return pysqlite_row_keys_impl(self);
56}
57/*[clinic end generated code: output=9d54919dbb4ba5f1 input=a9049054013a1b77]*/
58