*** Include/structmember.h 10 Feb 2004 16:50:18 -0000 2.22 --- Include/structmember.h 2 Feb 2005 22:13:13 -0000 *************** *** 65,70 **** --- 65,74 ---- #define T_OBJECT_EX 16 /* Like T_OBJECT, but raises AttributeError when the value is NULL, instead of converting to None. */ + #ifdef HAVE_LONG_LONG + #define T_LONGLONG 17 + #define T_ULONGLONG 18 + #endif /* HAVE_LONG_LONG */ /* Flags */ #define READONLY 1 *** Python/structmember.c 20 Nov 2003 01:44:58 -0000 2.24 --- Python/structmember.c 2 Feb 2005 22:13:21 -0000 *************** *** 118,123 **** --- 118,131 ---- PyErr_SetString(PyExc_AttributeError, l->name); Py_XINCREF(v); break; + #ifdef HAVE_LONG_LONG + case T_LONGLONG: + v = PyLong_FromLongLong(*(PY_LONG_LONG *)addr); + break; + case T_ULONGLONG: + v = PyLong_FromUnsignedLongLong(*(unsigned PY_LONG_LONG *)addr); + break; + #endif /* HAVE_LONG_LONG */ default: PyErr_SetString(PyExc_SystemError, "bad memberdescr type"); v = NULL; *************** *** 246,251 **** --- 254,283 ---- return -1; } break; + #ifdef HAVE_LONG_LONG + case T_LONGLONG: + if (!PyLong_Check(v)) { + PyErr_BadArgument(); + return -1; + } else { + *(PY_LONG_LONG*)addr = PyLong_AsLongLong(v); + if ((*addr == -1) && PyErr_Occurred()) { + return -1; + } + } + break; + case T_ULONGLONG: + if (!PyLong_Check(v)) { + PyErr_BadArgument(); + return -1; + } else { + *(unsigned PY_LONG_LONG*)addr = PyLong_AsUnsignedLongLong(v); + if ((*addr == -1) && PyErr_Occurred()) { + return -1; + } + } + break; + #endif /* HAVE_LONG_LONG */ default: PyErr_Format(PyExc_SystemError, "bad memberdescr type for %s", l->name);