| |
| /* Code to access structure members by accessing attributes */ |
| |
| #include "structmember.h" |
| |
| #define OFF(x) offsetof(XXXXobject, x) |
| |
| static PyMemberDef $abbrev$_memberlist[] = { |
| /* XXXX Add lines like { "foo", T_INT, OFF(foo), READONLY } */ |
| |
| {NULL} /* Sentinel */ |
| }; |
| |
| static PyObject * |
| $abbrev$_getattr($abbrev$object *self, char *name) |
| { |
| PyObject *rv; |
| |
| /* XXXX Add your own getattr code here */ |
| rv = PyMember_GetOne((char *)/*XXXX*/0, &$abbrev$_memberlist[i]); |
| if (rv) |
| return rv; |
| PyErr_Clear(); |
| return Py_FindMethod($abbrev$_methods, (PyObject *)self, name); |
| } |
| |
| |
| static int |
| $abbrev$_setattr($abbrev$object *self, char *name, PyObject *v) |
| { |
| /* XXXX Add your own setattr code here */ |
| if ( v == NULL ) { |
| PyErr_SetString(PyExc_AttributeError, "Cannot delete attribute"); |
| return -1; |
| } |
| return PyMember_SetOne((char *)/*XXXX*/0, &$abbrev$_memberlist[i], v); |
| } |