diff Modules/_elementtree.c @ 77485:093dec81ea1f

Issue #14055: Add __sizeof__ support to _elementtree.
author Martin v. Löwis <martin@v.loewis.de>
date Sun, 17 Jun 2012 10:41:22 +0200
parents 3c089edbf02c
children c8774ff45733
line wrap: on
line diff
--- a/Modules/_elementtree.c	Sun Jun 17 10:40:16 2012 +0200
+++ b/Modules/_elementtree.c	Sun Jun 17 10:41:22 2012 +0200
@@ -842,6 +842,19 @@
     return NULL;
 }
 
+static PyObject*
+element_sizeof(PyObject* _self, PyObject* args)
+{
+    ElementObject *self = (ElementObject*)_self;
+    Py_ssize_t result = sizeof(ElementObject);
+    if (self->extra) {
+        result += sizeof(ElementObjectExtra);
+        if (self->extra->children != self->extra->_children)
+            result += sizeof(PyObject*) * self->extra->allocated;
+    }
+    return PyLong_FromSsize_t(result);
+}
+
 LOCAL(int)
 checkpath(PyObject* tag)
 {
@@ -1609,6 +1622,7 @@
 
     {"__copy__", (PyCFunction) element_copy, METH_VARARGS},
     {"__deepcopy__", (PyCFunction) element_deepcopy, METH_VARARGS},
+    {"__sizeof__", element_sizeof, METH_NOARGS},
 
     {NULL, NULL}
 };