aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Zverovich <viz@fb.com>2020-05-06 07:31:35 -0700
committerVictor Zverovich <viz@fb.com>2020-05-06 07:31:35 -0700
commit59fe455f36f2dca71369b5d1eeca63daf3ba7558 (patch)
tree1ed803b344d9896a577f276c3128af56b6302165
parentb0f47a13e6984af578816dccb02da2f04f26b4b1 (diff)
downloadfmtlib-59fe455f36f2dca71369b5d1eeca63daf3ba7558.tar.gz
Remove compatibility stubs
-rw-r--r--src/format.cc97
1 files changed, 0 insertions, 97 deletions
diff --git a/src/format.cc b/src/format.cc
index e6849b93..c26ce6a5 100644
--- a/src/format.cc
+++ b/src/format.cc
@@ -23,97 +23,6 @@ int format_float(char* buf, std::size_t size, const char* format, int precision,
return precision < 0 ? snprintf_ptr(buf, size, format, value)
: snprintf_ptr(buf, size, format, precision, value);
}
-struct sprintf_specs {
- int precision;
- char type;
- bool alt : 1;
-
- template <typename Char>
- constexpr explicit sprintf_specs(basic_format_specs<Char> specs)
- : precision(specs.precision), type(specs.type), alt(specs.alt) {}
-
- constexpr bool has_precision() const { return precision >= 0; }
-};
-
-// This is deprecated and is kept only to preserve ABI compatibility.
-template <typename Double>
-char* sprintf_format(Double value, internal::buffer<char>& buf,
- sprintf_specs specs) {
- // Buffer capacity must be non-zero, otherwise MSVC's vsnprintf_s will fail.
- FMT_ASSERT(buf.capacity() != 0, "empty buffer");
-
- // Build format string.
- enum { max_format_size = 10 }; // longest format: %#-*.*Lg
- char format[max_format_size];
- char* format_ptr = format;
- *format_ptr++ = '%';
- if (specs.alt || !specs.type) *format_ptr++ = '#';
- if (specs.precision >= 0) {
- *format_ptr++ = '.';
- *format_ptr++ = '*';
- }
- if (std::is_same<Double, long double>::value) *format_ptr++ = 'L';
-
- char type = specs.type;
-
- if (type == '%')
- type = 'f';
- else if (type == 0 || type == 'n')
- type = 'g';
-#if FMT_MSC_VER
- if (type == 'F') {
- // MSVC's printf doesn't support 'F'.
- type = 'f';
- }
-#endif
- *format_ptr++ = type;
- *format_ptr = '\0';
-
- // Format using snprintf.
- char* start = nullptr;
- char* decimal_point_pos = nullptr;
- for (;;) {
- std::size_t buffer_size = buf.capacity();
- start = &buf[0];
- int result =
- format_float(start, buffer_size, format, specs.precision, value);
- if (result >= 0) {
- unsigned n = internal::to_unsigned(result);
- if (n < buf.capacity()) {
- // Find the decimal point.
- auto* p = buf.data();
- auto* end = p + n;
- if (*p == '+' || *p == '-') ++p;
- if (specs.type != 'a' && specs.type != 'A') {
- while (p < end && *p >= '0' && *p <= '9') ++p;
- if (p < end && *p != 'e' && *p != 'E') {
- decimal_point_pos = p;
- if (!specs.type) {
- // Keep only one trailing zero after the decimal point.
- ++p;
- if (*p == '0') ++p;
- while (p != end && *p >= '1' && *p <= '9') ++p;
- char* where = p;
- while (p != end && *p == '0') ++p;
- if (p == end || *p < '0' || *p > '9') {
- if (p != end) std::memmove(where, p, to_unsigned(end - p));
- n -= static_cast<unsigned>(p - where);
- }
- }
- }
- }
- buf.resize(n);
- break; // The buffer is large enough - continue with formatting.
- }
- buf.reserve(n + 1);
- } else {
- // If result is negative we ask to increase the capacity by at least 1,
- // but as std::vector, the buffer grows exponentially.
- buf.reserve(buf.capacity() + 1);
- }
- }
- return decimal_point_pos;
-}
// DEPRECATED.
template <typename Context> class arg_map {
@@ -156,12 +65,6 @@ void arg_map<Context>::init(const basic_format_args<Context>& args) {
}
} // namespace internal
-template FMT_API char* internal::sprintf_format(double, internal::buffer<char>&,
- sprintf_specs);
-template FMT_API char* internal::sprintf_format(long double,
- internal::buffer<char>&,
- sprintf_specs);
-
template struct FMT_INSTANTIATION_DEF_API internal::basic_data<void>;
// Workaround a bug in MSVC2013 that prevents instantiation of format_float.