comparison _mysql_results.c @ 42:fdf0cabb27be MySQLdb

Member stuff is stable post py2.2, so remove the MyMember* workarounds
author kylev
date Tue, 17 Feb 2009 05:55:24 +0000
parents 9863f08a337c
children 2b9a9814daab
comparison
equal deleted inserted replaced
41:e80676c3505f 42:fdf0cabb27be
1 /* -*- mode: C; indent-tabs-mode: t; c-basic-offset: 8; -*- */
2
1 #include "_mysql.h" 3 #include "_mysql.h"
2 4
3 static char _mysql_ResultObject__doc__[] = 5 static char _mysql_ResultObject__doc__[] =
4 "result(connection, use=0, converter={}) -- Result set from a query.\n\ 6 "result(connection, use=0, converter={}) -- Result set from a query.\n\
5 \n\ 7 \n\
621 _mysql_ResultObject_num_rows__doc__ 623 _mysql_ResultObject_num_rows__doc__
622 }, 624 },
623 {NULL, NULL} /* sentinel */ 625 {NULL, NULL} /* sentinel */
624 }; 626 };
625 627
626 static MyMemberlist(_mysql_ResultObject_memberlist)[] = { 628 static struct PyMemberDef _mysql_ResultObject_memberlist[] = {
627 MyMember( 629 {
628 "converter", 630 "converter",
629 T_OBJECT, 631 T_OBJECT,
630 offsetof(_mysql_ResultObject,converter), 632 offsetof(_mysql_ResultObject, converter),
631 RO, 633 RO,
632 "Type conversion mapping" 634 "Type conversion mapping"
633 ), 635 },
634 {NULL} /* Sentinel */ 636 {NULL} /* Sentinel */
635 }; 637 };
636 638
637 static PyObject * 639 static PyObject *
638 _mysql_ResultObject_getattr( 640 _mysql_ResultObject_getattr(
639 _mysql_ResultObject *self, 641 _mysql_ResultObject *self,
640 char *name) 642 char *name)
641 { 643 {
642 PyObject *res; 644 PyObject *res;
645 struct PyMemberDef *l;
643 646
644 res = Py_FindMethod(_mysql_ResultObject_methods, (PyObject *)self, name); 647 res = Py_FindMethod(_mysql_ResultObject_methods, (PyObject *)self, name);
645 if (res != NULL) 648 if (res != NULL)
646 return res; 649 return res;
647 PyErr_Clear(); 650 PyErr_Clear();
648 #if PY_VERSION_HEX < 0x02020000 651
649 return PyMember_Get((char *)self, _mysql_ResultObject_memberlist, name); 652 for (l = _mysql_ResultObject_memberlist; l->name != NULL; l++) {
650 #else 653 if (strcmp(l->name, name) == 0)
651 { 654 return PyMember_GetOne((char *)self, l);
652 MyMemberlist(*l); 655 }
653 for (l = _mysql_ResultObject_memberlist; l->name != NULL; l++) { 656
654 if (strcmp(l->name, name) == 0) 657 PyErr_SetString(PyExc_AttributeError, name);
655 return PyMember_GetOne((char *)self, l); 658 return NULL;
656 }
657 PyErr_SetString(PyExc_AttributeError, name);
658 return NULL;
659 }
660 #endif
661 } 659 }
662 660
663 static int 661 static int
664 _mysql_ResultObject_setattr( 662 _mysql_ResultObject_setattr(
665 _mysql_ResultObject *self, 663 _mysql_ResultObject *self,
666 char *name, 664 char *name,
667 PyObject *v) 665 PyObject *v)
668 { 666 {
667 struct PyMemberDef *l;
668
669 if (v == NULL) { 669 if (v == NULL) {
670 PyErr_SetString(PyExc_AttributeError, 670 PyErr_SetString(PyExc_AttributeError,
671 "can't delete connection attributes"); 671 "can't delete connection attributes");
672 return -1; 672 return -1;
673 } 673 }
674 #if PY_VERSION_HEX < 0x02020000 674
675 return PyMember_Set((char *)self, _mysql_ResultObject_memberlist, name, v); 675 for (l = _mysql_ResultObject_memberlist; l->name != NULL; l++)
676 #else 676 if (strcmp(l->name, name) == 0)
677 { 677 return PyMember_SetOne((char *)self, l, v);
678 MyMemberlist(*l); 678
679 for (l = _mysql_ResultObject_memberlist; l->name != NULL; l++)
680 if (strcmp(l->name, name) == 0)
681 return PyMember_SetOne((char *)self, l, v);
682 }
683 PyErr_SetString(PyExc_AttributeError, name); 679 PyErr_SetString(PyExc_AttributeError, name);
684 return -1; 680 return -1;
685 #endif
686 } 681 }
687 682
688 PyTypeObject _mysql_ResultObject_Type = { 683 PyTypeObject _mysql_ResultObject_Type = {
689 PyObject_HEAD_INIT(NULL) 684 PyObject_HEAD_INIT(NULL)
690 0, 685 0,
746 #if PY_VERSION_HEX >= 0x02020000 741 #if PY_VERSION_HEX >= 0x02020000
747 /* Added in release 2.2 */ 742 /* Added in release 2.2 */
748 /* Iterators */ 743 /* Iterators */
749 0, /* (getiterfunc) tp_iter */ 744 0, /* (getiterfunc) tp_iter */
750 0, /* (iternextfunc) tp_iternext */ 745 0, /* (iternextfunc) tp_iternext */
751 746
752 /* Attribute descriptor and subclassing stuff */ 747 /* Attribute descriptor and subclassing stuff */
753 (struct PyMethodDef *) _mysql_ResultObject_methods, /* tp_methods */ 748 (struct PyMethodDef *)_mysql_ResultObject_methods, /* tp_methods */
754 (MyMemberlist(*)) _mysql_ResultObject_memberlist, /*tp_members */ 749 (struct PyMemberDef *)_mysql_ResultObject_memberlist, /*tp_members */
755 0, /* (struct getsetlist *) tp_getset; */ 750 0, /* (struct getsetlist *) tp_getset; */
756 0, /* (struct _typeobject *) tp_base; */ 751 0, /* (struct _typeobject *) tp_base; */
757 0, /* (PyObject *) tp_dict */ 752 0, /* (PyObject *) tp_dict */
758 0, /* (descrgetfunc) tp_descr_get */ 753 0, /* (descrgetfunc) tp_descr_get */
759 0, /* (descrsetfunc) tp_descr_set */ 754 0, /* (descrsetfunc) tp_descr_set */