From 3b5074b0fba839326b914b0bfbcbc6d5e33e8f7c Mon Sep 17 00:00:00 2001 From: Just van Rossum Date: Mon, 5 Nov 2001 11:12:12 +0000 Subject: [PATCH] added acces to the cellSize field, rewrote setattr code --- Mac/Modules/list/_Listmodule.c | 28 ++++++++++++++++------------ Mac/Modules/list/listsupport.py | 28 ++++++++++++++++------------ 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/Mac/Modules/list/_Listmodule.c b/Mac/Modules/list/_Listmodule.c index d2df406a4d7..d0b19bd6575 100644 --- a/Mac/Modules/list/_Listmodule.c +++ b/Mac/Modules/list/_Listmodule.c @@ -607,11 +607,12 @@ PyMethodChain ListObj_chain = { ListObj_methods, NULL }; static PyObject *ListObj_getattr(ListObject *self, char *name) { { - /* XXXX Should we HLock() here?? */ if ( strcmp(name, "listFlags") == 0 ) return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff); if ( strcmp(name, "selFlags") == 0 ) 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); } @@ -620,19 +621,22 @@ static int ListObj_setattr(ListObject *self, char *name, PyObject *value) { long intval; - - if ( value == NULL || !PyInt_Check(value) ) + int err = 0; + + if ( value == NULL ) { + PyErr_SetString(PyExc_AttributeError, "Cannot delete attribute"); return -1; - intval = PyInt_AsLong(value); - if (strcmp(name, "listFlags") == 0 ) { - SetListFlags(self->ob_itself, intval); - return 0; } - if (strcmp(name, "selFlags") == 0 ) { - SetListSelectionFlags(self->ob_itself, intval); - return 0; - } - return -1; + if (strcmp(name, "listFlags") == 0 ) + err = PyArg_Parse(value, "B", &(*self->ob_itself)->listFlags); + else if (strcmp(name, "selFlags") == 0 ) + err = PyArg_Parse(value, "B", &(*self->ob_itself)->selFlags); + 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; } diff --git a/Mac/Modules/list/listsupport.py b/Mac/Modules/list/listsupport.py index 78ab49405b3..1d0223fc3fe 100644 --- a/Mac/Modules/list/listsupport.py +++ b/Mac/Modules/list/listsupport.py @@ -137,11 +137,12 @@ def parseArgumentList(self, args): self.argumentList.append(self.itself) getattrHookCode = """{ - /* XXXX Should we HLock() here?? */ if ( strcmp(name, "listFlags") == 0 ) return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff); if ( strcmp(name, "selFlags") == 0 ) 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 = """ @@ -149,19 +150,22 @@ def parseArgumentList(self, args): ListObj_setattr(ListObject *self, char *name, PyObject *value) { long intval; - - if ( value == NULL || !PyInt_Check(value) ) + int err = 0; + + if ( value == NULL ) { + PyErr_SetString(PyExc_AttributeError, "Cannot delete attribute"); return -1; - intval = PyInt_AsLong(value); - if (strcmp(name, "listFlags") == 0 ) { - SetListFlags(self->ob_itself, intval); - return 0; } - if (strcmp(name, "selFlags") == 0 ) { - SetListSelectionFlags(self->ob_itself, intval); - return 0; - } - return -1; + if (strcmp(name, "listFlags") == 0 ) + err = PyArg_Parse(value, "B", &(*self->ob_itself)->listFlags); + else if (strcmp(name, "selFlags") == 0 ) + err = PyArg_Parse(value, "B", &(*self->ob_itself)->selFlags); + 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; } """