added acces to the cellSize field, rewrote setattr code

This commit is contained in:
Just van Rossum 2001-11-05 11:12:12 +00:00
parent b26fbc6447
commit 3b5074b0fb
2 changed files with 32 additions and 24 deletions

View File

@ -607,11 +607,12 @@ PyMethodChain ListObj_chain = { ListObj_methods, NULL };
static PyObject *ListObj_getattr(ListObject *self, char *name) static PyObject *ListObj_getattr(ListObject *self, char *name)
{ {
{ {
/* XXXX Should we HLock() here?? */
if ( strcmp(name, "listFlags") == 0 ) if ( strcmp(name, "listFlags") == 0 )
return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff); return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff);
if ( strcmp(name, "selFlags") == 0 ) if ( strcmp(name, "selFlags") == 0 )
return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff); return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff);
if ( strcmp(name, "cellSize") == 0 )
return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->cellSize);
} }
return Py_FindMethodInChain(&ListObj_chain, (PyObject *)self, name); return Py_FindMethodInChain(&ListObj_chain, (PyObject *)self, name);
} }
@ -620,19 +621,22 @@ static int
ListObj_setattr(ListObject *self, char *name, PyObject *value) ListObj_setattr(ListObject *self, char *name, PyObject *value)
{ {
long intval; long intval;
int err = 0;
if ( value == NULL || !PyInt_Check(value) )
if ( value == NULL ) {
PyErr_SetString(PyExc_AttributeError, "Cannot delete attribute");
return -1; return -1;
intval = PyInt_AsLong(value);
if (strcmp(name, "listFlags") == 0 ) {
SetListFlags(self->ob_itself, intval);
return 0;
} }
if (strcmp(name, "selFlags") == 0 ) { if (strcmp(name, "listFlags") == 0 )
SetListSelectionFlags(self->ob_itself, intval); err = PyArg_Parse(value, "B", &(*self->ob_itself)->listFlags);
return 0; else if (strcmp(name, "selFlags") == 0 )
} err = PyArg_Parse(value, "B", &(*self->ob_itself)->selFlags);
return -1; else if (strcmp(name, "cellSize") == 0 )
err = PyArg_Parse(value, "O&", PyMac_GetPoint, &(*self->ob_itself)->cellSize);
else
PyErr_SetString(PyExc_AttributeError, "No such attribute");
if (err) return 0;
else return -1;
} }

View File

@ -137,11 +137,12 @@ def parseArgumentList(self, args):
self.argumentList.append(self.itself) self.argumentList.append(self.itself)
getattrHookCode = """{ getattrHookCode = """{
/* XXXX Should we HLock() here?? */
if ( strcmp(name, "listFlags") == 0 ) if ( strcmp(name, "listFlags") == 0 )
return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff); return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff);
if ( strcmp(name, "selFlags") == 0 ) if ( strcmp(name, "selFlags") == 0 )
return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff); return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff);
if ( strcmp(name, "cellSize") == 0 )
return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->cellSize);
}""" }"""
setattrCode = """ setattrCode = """
@ -149,19 +150,22 @@ def parseArgumentList(self, args):
ListObj_setattr(ListObject *self, char *name, PyObject *value) ListObj_setattr(ListObject *self, char *name, PyObject *value)
{ {
long intval; long intval;
int err = 0;
if ( value == NULL || !PyInt_Check(value) )
if ( value == NULL ) {
PyErr_SetString(PyExc_AttributeError, "Cannot delete attribute");
return -1; return -1;
intval = PyInt_AsLong(value);
if (strcmp(name, "listFlags") == 0 ) {
SetListFlags(self->ob_itself, intval);
return 0;
} }
if (strcmp(name, "selFlags") == 0 ) { if (strcmp(name, "listFlags") == 0 )
SetListSelectionFlags(self->ob_itself, intval); err = PyArg_Parse(value, "B", &(*self->ob_itself)->listFlags);
return 0; else if (strcmp(name, "selFlags") == 0 )
} err = PyArg_Parse(value, "B", &(*self->ob_itself)->selFlags);
return -1; else if (strcmp(name, "cellSize") == 0 )
err = PyArg_Parse(value, "O&", PyMac_GetPoint, &(*self->ob_itself)->cellSize);
else
PyErr_SetString(PyExc_AttributeError, "No such attribute");
if (err) return 0;
else return -1;
} }
""" """