From: Stefan Krah Date: Mon, 9 Apr 2012 19:27:20 +0000 (+0200) Subject: Issue #14520: Add __sizeof__() method to the Decimal object. X-Git-Tag: v3.3.0a3~270 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e37f8b29fcba54807c5b60208b68de379a8dd01a;p=python Issue #14520: Add __sizeof__() method to the Decimal object. --- diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index c3d20dfd89..d5bb52f71d 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -4340,6 +4340,19 @@ dec_reduce(PyObject *self, PyObject *dummy UNUSED) return result; } +/* __sizeof__ */ +static PyObject * +dec_sizeof(PyObject *v, PyObject *dummy UNUSED) +{ + Py_ssize_t res; + + res = sizeof(PyDecObject); + if (mpd_isdynamic_data(MPD(v))) { + res += MPD(v)->alloc * sizeof(mpd_uint_t); + } + return PyLong_FromSsize_t(res); +} + /* __trunc__ */ static PyObject * dec_trunc(PyObject *self, PyObject *dummy UNUSED) @@ -4503,6 +4516,7 @@ static PyMethodDef dec_methods [] = { "__floor__", dec_floor, METH_NOARGS, NULL }, { "__trunc__", dec_trunc, METH_NOARGS, NULL }, { "__complex__", dec_complex, METH_NOARGS, NULL }, + { "__sizeof__", dec_sizeof, METH_NOARGS, NULL }, { NULL, NULL, 1 } };