diff --git a/ChangeLog.rst b/ChangeLog.rst index 982c1117..8cd24414 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -63,6 +63,16 @@ std::vector out; fmt::format_to(std::back_inserter(out), "{}", 42); +* Added the `formatted_size + `_ function for + computing output size: + + .. code:: c++ + + #include + + auto size = fmt::formatted_size("{}", 12345); // size == 5 + * Improved compile times by reducing dependencies on standard headers and providing a lightweight `core API `_: diff --git a/doc/api.rst b/doc/api.rst index 2a380a16..0eeab744 100644 --- a/doc/api.rst +++ b/doc/api.rst @@ -151,7 +151,7 @@ The following user-defined literals are defined in ``fmt/format.h``. Utilities --------- -.. dosygenfunction:: fmt::formatted_size(string_view, const Args&...) +.. doxygenfunction:: fmt::formatted_size(string_view, const Args&...) .. doxygenfunction:: fmt::to_string(const T&) diff --git a/include/fmt/core.h b/include/fmt/core.h index 66597eed..7a654e2b 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -193,13 +193,11 @@ typename std::add_rvalue_reference::type declval() FMT_NOEXCEPT; } /** - \rst An implementation of ``std::basic_string_view`` for pre-C++17. It provides a subset of the API. ``fmt::basic_string_view`` is used for format strings even if ``std::string_view`` is available to prevent issues when a library is compiled with a different ``-std`` option than the client code (which is not recommended). - \endrst */ template class basic_string_view { @@ -238,11 +236,7 @@ class basic_string_view { basic_string_view(const Char *s) : data_(s), size_(std::char_traits::length(s)) {} - /** - \rst - Constructs a string reference from a ``std::basic_string`` object. - \endrst - */ + /** Constructs a string reference from a ``std::basic_string`` object. */ template FMT_CONSTEXPR basic_string_view( const std::basic_string &s) FMT_NOEXCEPT @@ -329,11 +323,7 @@ class basic_buffer { capacity_ = capacity; } - /** - \rst - Increases the buffer capacity to hold at least *capacity* elements. - \endrst - */ + /** Increases the buffer capacity to hold at least *capacity* elements. */ virtual void grow(std::size_t capacity) = 0; public: @@ -365,11 +355,7 @@ class basic_buffer { size_ = new_size; } - /** - \rst - Reserves space to store at least *capacity* elements. - \endrst - */ + /** Reserves space to store at least *capacity* elements. */ void reserve(std::size_t capacity) { if (capacity > capacity_) grow(capacity); @@ -899,10 +885,8 @@ class basic_format_context : using typename base::iterator; /** - \rst Constructs a ``basic_format_context`` object. References to the arguments are stored in the object so make sure they have appropriate lifetimes. - \endrst */ basic_format_context(OutputIt out, basic_string_view format_str, basic_format_args args) diff --git a/include/fmt/format.h b/include/fmt/format.h index 6e273e84..e9c16b1f 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -3391,9 +3391,7 @@ std::string to_string(const T &value) { } /** - \rst Converts *value* to ``std::wstring`` using the default format for type *T*. - \endrst */ template std::wstring to_wstring(const T &value) { @@ -3455,10 +3453,10 @@ inline OutputIt vformat_to(OutputIt out, string_view format_str, Formats arguments, writes the result to the output iterator ``out`` and returns the iterator past the end of the output range. - **Example**:: + **Example**:: - std::vector out; - fmt::format_to(std::back_inserter(out), "{}", 42); + std::vector out; + fmt::format_to(std::back_inserter(out), "{}", 42); \endrst */ template @@ -3535,7 +3533,10 @@ inline typename std::enable_if::value>::type return vprint(format_str.data(), make_format_args(args...)); } -// Counts the number of characters in the output of format(format_str, args...). +/** + Returns the number of characters in the output of + ``format(format_str, args...)``. + */ template inline std::size_t formatted_size(string_view format_str, const Args & ... args) {