mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	 8dfc4a9bac
			
		
	
	
		8dfc4a9bac
		
	
	
	
	
		
			
			some cleanup to do on this. Particularly in Python/traceback.c with getting rid of the getattr if possible and Demo/*metaclasses/Enum.py.
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			873 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			873 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
 | |
| /* 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);
 | |
| }
 |