(original) (raw)
changeset: 76198:010aa5d955ac user: Stefan Krah skrah@bytereef.org date: Mon Apr 09 21:27:20 2012 +0200 files: Modules/_decimal/_decimal.c description: Issue #14520: Add __sizeof__() method to the Decimal object. diff -r 170bdc5c798b -r 010aa5d955ac Modules/_decimal/_decimal.c --- a/Modules/_decimal/_decimal.c Mon Apr 09 20:47:57 2012 +0200 +++ b/Modules/_decimal/_decimal.c Mon Apr 09 21:27:20 2012 +0200 @@ -4340,6 +4340,19 @@ 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 @@ { "__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 } }; /skrah@bytereef.org