diff options
author | Eric Smith <eric@trueblade.com> | 2008-05-30 18:10:04 (GMT) |
---|---|---|
committer | Eric Smith <eric@trueblade.com> | 2008-05-30 18:10:04 (GMT) |
commit | dc13b79a384691ed966f760a58d73a1b835e7d6b (patch) | |
tree | 40aa36feea2e0ee23f41801a8959990914e3fc71 /Objects/intobject.c | |
parent | 30fadc17990baf4005081d2cdcb8d3adc9c45a7a (diff) | |
download | cpython-dc13b79a384691ed966f760a58d73a1b835e7d6b.zip cpython-dc13b79a384691ed966f760a58d73a1b835e7d6b.tar.gz cpython-dc13b79a384691ed966f760a58d73a1b835e7d6b.tar.bz2 |
Refactor and clean up str.format() code (and helpers) in advance of optimizations.
Diffstat (limited to 'Objects/intobject.c')
-rw-r--r-- | Objects/intobject.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/Objects/intobject.c b/Objects/intobject.c index 2af9451..3b68640 100644 --- a/Objects/intobject.c +++ b/Objects/intobject.c @@ -3,7 +3,6 @@ #include "Python.h" #include <ctype.h> -#include "formatter_string.h" static PyObject *int_int(PyIntObject *v); @@ -1117,26 +1116,22 @@ int__format__(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) return NULL; if (PyBytes_Check(format_spec)) - return string_int__format__(self, args); + return _PyInt_FormatAdvanced(self, + PyBytes_AS_STRING(format_spec), + PyBytes_GET_SIZE(format_spec)); if (PyUnicode_Check(format_spec)) { /* Convert format_spec to a str */ - PyObject *result = NULL; - PyObject *newargs = NULL; - PyObject *string_format_spec = NULL; + PyObject *result; + PyObject *str_spec = PyObject_Str(format_spec); - string_format_spec = PyObject_Str(format_spec); - if (string_format_spec == NULL) - goto done; - - newargs = Py_BuildValue("(O)", string_format_spec); - if (newargs == NULL) - goto done; + if (str_spec == NULL) + return NULL; - result = string_int__format__(self, newargs); + result = _PyInt_FormatAdvanced(self, + PyBytes_AS_STRING(str_spec), + PyBytes_GET_SIZE(str_spec)); - done: - Py_XDECREF(string_format_spec); - Py_XDECREF(newargs); + Py_DECREF(str_spec); return result; } PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode"); |