diff options
author | Just van Rossum <just@letterror.com> | 2001-11-05 11:12:12 (GMT) |
---|---|---|
committer | Just van Rossum <just@letterror.com> | 2001-11-05 11:12:12 (GMT) |
commit | 3b5074b0fba839326b914b0bfbcbc6d5e33e8f7c (patch) | |
tree | 623a529810f615877d34f5a0c24133cb26dedff8 | |
parent | b26fbc644751f615158c1aea33086b1fb58ec20f (diff) | |
download | cpython-3b5074b0fba839326b914b0bfbcbc6d5e33e8f7c.zip cpython-3b5074b0fba839326b914b0bfbcbc6d5e33e8f7c.tar.gz cpython-3b5074b0fba839326b914b0bfbcbc6d5e33e8f7c.tar.bz2 |
added acces to the cellSize field, rewrote setattr code
-rw-r--r-- | Mac/Modules/list/_Listmodule.c | 28 | ||||
-rw-r--r-- | 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 d2df406..d0b19bd 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 78ab494..1d0223f 100644 --- a/Mac/Modules/list/listsupport.py +++ b/Mac/Modules/list/listsupport.py @@ -137,11 +137,12 @@ class ListMethodGenerator(MethodGenerator): 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 @@ 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; } """ |