diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_struct.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Modules/_struct.c b/Modules/_struct.c index 606ae5e..4da6542 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -2165,6 +2165,19 @@ s_sizeof(PyStructObject *self, void *unused) return PyLong_FromSize_t(size); } +static PyObject * +s_repr(PyStructObject *self) +{ + PyObject* fmt = PyUnicode_FromStringAndSize( + PyBytes_AS_STRING(self->s_format), PyBytes_GET_SIZE(self->s_format)); + if (fmt == NULL) { + return NULL; + } + PyObject* s = PyUnicode_FromFormat("%s(%R)", _PyType_Name(Py_TYPE(self)), fmt); + Py_DECREF(fmt); + return s; +} + /* List of functions */ static struct PyMethodDef s_methods[] = { @@ -2197,6 +2210,7 @@ static PyType_Slot PyStructType_slots[] = { {Py_tp_dealloc, s_dealloc}, {Py_tp_getattro, PyObject_GenericGetAttr}, {Py_tp_setattro, PyObject_GenericSetAttr}, + {Py_tp_repr, s_repr}, {Py_tp_doc, (void*)s__doc__}, {Py_tp_traverse, s_traverse}, {Py_tp_clear, s_clear}, |