Mercurial > cpython-lru_cache-weakref
diff Modules/parsermodule.c @ 78391:91884d04de06 3.2
Closes #15512: Correct __sizeof__ support for parser
| author | Jesus Cea <jcea@jcea.es> |
|---|---|
| date | Fri, 03 Aug 2012 14:28:37 +0200 |
| parents | 2b1cc84bf1d9 |
| children | 56dc7b09f390 f7248550059c |
line wrap: on
line diff
--- a/Modules/parsermodule.c Thu Aug 02 20:37:12 2012 +0200 +++ b/Modules/parsermodule.c Fri Aug 03 14:28:37 2012 +0200 @@ -167,6 +167,7 @@ static void parser_free(PyST_Object *st); +static PyObject* parser_sizeof(PyST_Object *, void *); static PyObject* parser_richcompare(PyObject *left, PyObject *right, int op); static PyObject* parser_compilest(PyST_Object *, PyObject *, PyObject *); static PyObject* parser_isexpr(PyST_Object *, PyObject *, PyObject *); @@ -187,7 +188,8 @@ PyDoc_STR("Creates a list-tree representation of this ST.")}, {"totuple", (PyCFunction)parser_st2tuple, PUBLIC_METHOD_TYPE, PyDoc_STR("Creates a tuple-tree representation of this ST.")}, - + {"__sizeof__", (PyCFunction)parser_sizeof, METH_NOARGS, + PyDoc_STR("Returns size in memory, in bytes.")}, {NULL, NULL, 0, NULL} }; @@ -361,6 +363,15 @@ PyObject_Del(st); } +static PyObject * +parser_sizeof(PyST_Object *st, void *unused) +{ + Py_ssize_t res; + + res = sizeof(PyST_Object) + _PyNode_SizeOf(st->st_node); + return PyLong_FromSsize_t(res); +} + /* parser_st2tuple(PyObject* self, PyObject* args, PyObject* kw) *
