summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2012-04-09 19:27:20 (GMT)
committerStefan Krah <skrah@bytereef.org>2012-04-09 19:27:20 (GMT)
commite37f8b29fcba54807c5b60208b68de379a8dd01a (patch)
tree05685b39f0b95b1b6a26941bb401ef43c8cd258d
parentf69aef747a9a98eb130ed2e3b813ea4dfbfa1ae3 (diff)
downloadcpython-e37f8b29fcba54807c5b60208b68de379a8dd01a.zip
cpython-e37f8b29fcba54807c5b60208b68de379a8dd01a.tar.gz
cpython-e37f8b29fcba54807c5b60208b68de379a8dd01a.tar.bz2
Issue #14520: Add __sizeof__() method to the Decimal object.
-rw-r--r--Modules/_decimal/_decimal.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index c3d20df..d5bb52f 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 }
};