[Python-checkins] r71989 - in python/branches/py3k: Doc/c-api/conversion.rst Misc/NEWS Python/pystrtod.c

eric.smith python-checkins at python.org
Sun Apr 26 23:35:15 CEST 2009


Author: eric.smith
Date: Sun Apr 26 23:35:14 2009
New Revision: 71989
Log:
Issue #5835: Deprecate PyOS_ascii_formatd.
Modified:
 python/branches/py3k/Doc/c-api/conversion.rst
 python/branches/py3k/Misc/NEWS
 python/branches/py3k/Python/pystrtod.c
Modified: python/branches/py3k/Doc/c-api/conversion.rst
==============================================================================
--- python/branches/py3k/Doc/c-api/conversion.rst	(original)
+++ python/branches/py3k/Doc/c-api/conversion.rst	Sun Apr 26 23:35:14 2009
@@ -73,6 +73,43 @@
 The return value is a pointer to *buffer* with the converted string or NULL if
 the conversion failed.
 
+ .. deprecated:: 3.1
+ Use :cfunc:`PyOS_double_to_string` instead.
+
+
+.. cfunction:: char* PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)
+
+ Convert a :ctype:`double` *val* to a string using supplied
+ *format_code*, *precision*, and *flags*.
+
+ *format_code* must be one of ``'e'``, ``'E'``, ``'f'``, ``'F'``, ``'g'``,
+ ``'G'``, ``'s'``, or ``'r'``. For ``'s'`` and ``'r'``, the supplied
+ *precision* must be 0 and is ignored. These specify the standard
+ :func:`str` and :func:`repr` formats, respectively.
+
+ *flags* can be zero or more of the values *Py_DTSF_SIGN*,
+ *Py_DTSF_ADD_DOT_0*, or *Py_DTSF_ALT*, or-ed together:
+
+ * *Py_DTSF_SIGN* means to always precede the returned string with a sign
+ character, even if *val* is non-negative.
+
+ * *Py_DTSF_ADD_DOT_0* means to ensure that the returned string will not look
+ like an integer.
+
+ * *Py_DTSF_ALT* means to apply "alternate" formatting rules. See the
+ documentation for the :cfunc:`PyOS_snprintf` ``'#'`` specifier for
+ details.
+
+ If *ptype* is non-NULL, then the value it points to will be set to one of
+ *Py_DTST_FINITE*, *Py_DTST_INFINITE*, or *Py_DTST_NAN*, signifying that
+ *val* is a finite number, an infinite number, or not a number, respectively.
+
+ The return value is a pointer to *buffer* with the converted string or
+ *NULL* if the conversion failed. The caller is responsible for freeing the
+ returned string by calling :cfunc:`PyMem_Free`.
+
+ .. versionadded:: 3.1
+
 
 .. cfunction:: double PyOS_ascii_atof(const char *nptr)
 
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Sun Apr 26 23:35:14 2009
@@ -12,6 +12,8 @@
 Core and Builtins
 -----------------
 
+- Issue #5835: Deprecate PyOS_ascii_formatd.
+
 - Issue #4971: Fix titlecase for characters that are their own
 titlecase, but not their own uppercase.
 
Modified: python/branches/py3k/Python/pystrtod.c
==============================================================================
--- python/branches/py3k/Python/pystrtod.c	(original)
+++ python/branches/py3k/Python/pystrtod.c	Sun Apr 26 23:35:14 2009
@@ -433,7 +433,7 @@
 * Return value: The pointer to the buffer with the converted string.
 **/
 char *
-PyOS_ascii_formatd(char *buffer, 
+_PyOS_ascii_formatd(char *buffer, 
 		 size_t buf_size, 
 		 const char *format, 
 		 double d)
@@ -508,6 +508,20 @@
 	return buffer;
 }
 
+char *
+PyOS_ascii_formatd(char *buffer, 
+		 size_t buf_size, 
+		 const char *format, 
+		 double d)
+{
+	if (PyErr_WarnEx(PyExc_DeprecationWarning,
+			 "PyOS_ascii_formatd is deprecated, "
+			 "use PyOS_double_to_string instead", 1) < 0)
+		return NULL;
+
+	return _PyOS_ascii_formatd(buffer, buf_size, format, d);
+}
+
 #ifdef PY_NO_SHORT_FLOAT_REPR
 
 /* The fallback code to use if _Py_dg_dtoa is not available. */
@@ -638,8 +652,10 @@
 		if ((flags & Py_DTSF_ADD_DOT_0) && (format_code != 'e'))
 			format_code = 'Z';
 
-		PyOS_snprintf(format, 32, "%%%s.%i%c", (flags & Py_DTSF_ALT ? "#" : ""), precision, format_code);
-		PyOS_ascii_formatd(buf, sizeof(buf), format, val);
+		PyOS_snprintf(format, sizeof(format), "%%%s.%i%c",
+			 (flags & Py_DTSF_ALT ? "#" : ""), precision,
+			 format_code);
+		_PyOS_ascii_formatd(buf, sizeof(buf), format, val);
 		/* remove trailing zeros if necessary */
 		if (strip_trailing_zeros)
 			remove_trailing_zeros(buf);


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /