@@ -1400,13 +1400,33 @@ static struct PyMemberDef cursor_members[] =
14001400 {"description" , _Py_T_OBJECT , offsetof(pysqlite_Cursor , description ), Py_READONLY },
14011401 {"lastrowid" , _Py_T_OBJECT , offsetof(pysqlite_Cursor , lastrowid ), Py_READONLY },
14021402 {"rowcount" , Py_T_LONG , offsetof(pysqlite_Cursor , rowcount ), Py_READONLY },
1403- {"row_factory" , _Py_T_OBJECT , offsetof(pysqlite_Cursor , row_factory ), 0 },
14041403 {"__weaklistoffset__" , Py_T_PYSSIZET , offsetof(pysqlite_Cursor , in_weakreflist ), Py_READONLY },
14051404 {NULL }
14061405};
14071406
1407+ static PyObject *
1408+ cursor_get_row_factory (PyObject * op , void * closure )
1409+ {
1410+ pysqlite_Cursor * self = (pysqlite_Cursor * )op ;
1411+ return Py_NewRef (self -> row_factory );
1412+ }
1413+
1414+ static int
1415+ cursor_set_row_factory (PyObject * op , PyObject * value , void * closure )
1416+ {
1417+ pysqlite_Cursor * self = (pysqlite_Cursor * )op ;
1418+ if (value == NULL ) {
1419+ PyErr_SetString (PyExc_AttributeError ,
1420+ "cannot delete row_factory attribute" );
1421+ return -1 ;
1422+ }
1423+ Py_XSETREF (self -> row_factory , Py_NewRef (value ));
1424+ return 0 ;
1425+ }
1426+
14081427static struct PyGetSetDef cursor_getsets [] = {
14091428 _SQLITE3_CURSOR_ARRAYSIZE_GETSETDEF
1429+ {"row_factory" , cursor_get_row_factory , cursor_set_row_factory },
14101430 {NULL },
14111431};
14121432
0 commit comments