diff options
author | Eric Smith <eric@trueblade.com> | 2009-04-22 13:29:05 +0000 |
---|---|---|
committer | Eric Smith <eric@trueblade.com> | 2009-04-22 13:29:05 +0000 |
commit | 5326b86b711d32512df666972763df521bb519c9 (patch) | |
tree | 9aac259d80099091dfbb75bd9c2cb5a30bb184c5 /Include/pystrtod.h | |
parent | fb276b1c25d5723e60a11171e9e6dfd9e801cf46 (diff) | |
download | cpython-5326b86b711d32512df666972763df521bb519c9.tar.gz |
Backport of some of the work in r71665 to trunk. This reworks much of
int, long, and float __format__(), and it keeps their implementation
in sync with py3k.
Also added PyOS_double_to_string. This is the "fallback" version
that's also available in trunk, and should be kept in sync with that
code. I'll add an issue to document PyOS_double_to_string in the C
API.
There are many internal cleanups. Externally visible changes include:
- Implement PEP 378, Format Specifier for Thousands Separator, for
floats, ints, and longs.
- Issue #5515: 'n' formatting for ints, longs, and floats handles
leading zero formatting poorly.
- Issue #5772: For float.__format__, don't add a trailing ".0" if
we're using no type code and we have an exponent.
Diffstat (limited to 'Include/pystrtod.h')
-rw-r--r-- | Include/pystrtod.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Include/pystrtod.h b/Include/pystrtod.h index c6921da1a5..1caa7aedfb 100644 --- a/Include/pystrtod.h +++ b/Include/pystrtod.h @@ -10,6 +10,25 @@ PyAPI_FUNC(double) PyOS_ascii_strtod(const char *str, char **ptr); PyAPI_FUNC(double) PyOS_ascii_atof(const char *str); PyAPI_FUNC(char *) PyOS_ascii_formatd(char *buffer, size_t buf_len, const char *format, double d); +/* The caller is responsible for calling PyMem_Free to free the buffer + that's is returned. */ +PyAPI_FUNC(char *) PyOS_double_to_string(double val, + char format_code, + int precision, + int flags, + int *type); + + +/* PyOS_double_to_string's "flags" parameter can be set to 0 or more of: */ +#define Py_DTSF_SIGN 0x01 /* always add the sign */ +#define Py_DTSF_ADD_DOT_0 0x02 /* if the result is an integer add ".0" */ +#define Py_DTSF_ALT 0x04 /* "alternate" formatting. it's format_code + specific */ + +/* PyOS_double_to_string's "type", if non-NULL, will be set to one of: */ +#define Py_DTST_FINITE 0 +#define Py_DTST_INFINITE 1 +#define Py_DTST_NAN 2 #ifdef __cplusplus } |