head	1.1;
access;
symbols;
locks
	amk:1.1; strict;
comment	@# @;


1.1
date	96.06.20.21.31.23;	author amk;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@/* Code to access structure members by accessing attributes */

#include "structmember.h"

#define OFF(x) offsetof($abbrev$Object, x)

static struct memberlist $abbrev$_memberlist[] = {
	/* $abbrev_members should contain lines like { "foo", T_INT, OFF(foo), RO }  */
	$abbrev$_members,
	{NULL}	/* Sentinel */
};

static PyObject *
$abbrev$_getattr($abbrev$Object *self, char *name)
{
	PyObject *rv;
	
	rv = PyMember_Get((char *)$abbrev$_struct, $abbrev$_memberlist, name);
	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)
{
	if ( v == NULL ) {
		PyErr_SetString(PyExc_AttributeError, "Cannot set attribute");
		return -1;
	}
	return PyMember_Set((char *)$abbrev$_struct, $abbrev$_memberlist, name, v);
}
@
