From 4f84acffbbb72427e479c9bc2fb952a2531774fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20D=C3=B6rwald?= Date: Wed, 13 Jun 2007 16:57:12 +0000 Subject: Add T_PYSSIZET in structmember.h: This can be used for Py_ssize_t members. Simplify the implementation of UnicodeError objects: start and end attributes are now stored directly as Py_ssize_t members, which simplifies various get and set functions. --- Python/structmember.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Python/structmember.c') diff --git a/Python/structmember.c b/Python/structmember.c index 17422d0d91..4da0c7861c 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -85,6 +85,9 @@ PyMember_GetOne(const char *addr, PyMemberDef *l) case T_ULONG: v = PyLong_FromUnsignedLong(*(unsigned long*)addr); break; + case T_PYSSIZET: + v = PyInt_FromSsize_t(*(Py_ssize_t*)addr); + break; case T_FLOAT: v = PyFloat_FromDouble((double)*(float*)addr); break; @@ -263,6 +266,13 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) } break; } + case T_PYSSIZET:{ + *(Py_ssize_t*)addr = PyInt_AsSsize_t(v); + if ((*(Py_ssize_t*)addr == (Py_ssize_t)-1) + && PyErr_Occurred()) + return -1; + break; + } case T_FLOAT:{ double double_val; double_val = PyFloat_AsDouble(v); -- cgit v1.2.1