This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 2017-10-18 23:12, Simon Marchi wrote:
On 2017-10-18 23:11, Simon Marchi wrote:+ +/* See documentation in common-utils.h. */ + +void +string_appendf (std::string &str, const char *fmt, ...) +{ + va_list vp; + int grow_size; + + va_start (vp, fmt); + grow_size = vsnprintf (NULL, 0, fmt, vp); + va_end (vp); + + size_t curr_size = str.size (); + str.resize (curr_size + grow_size); ++ /* C++11 and later guarantee std::string uses contiguous memory and+ always includes the terminating '\0'. */ + va_start (vp, fmt); + vsprintf (&str[curr_size], fmt, vp); + va_end (vp); +} + + +/* See documentation in common-utils.h. */ + +void +string_vappendf (std::string &str, const char *fmt, va_list args) +{ + va_list vp; + int grow_size; + + va_copy (vp, args); + grow_size = vsnprintf (NULL, 0, fmt, vp); + va_end (vp); + + size_t curr_size = str.size (); + str.resize (curr_size + grow_size); ++ /* C++11 and later guarantee std::string uses contiguous memory and+ always includes the terminating '\0'. */ + vsprintf (&str[curr_size], fmt, args); +} +string_appendf can be implemented using string_vappendf, to reduce duplication. It would basically be like string_vappendf_wrapper is. In the tests, we can probably just test string_appendf then. Unless there's a good reason for them not sharing code?Actually the same comment would apply to string_{v,}printf. Simon
Hi Pedro,I came across a case where string_appendf would be useful, so I was wondering if you intended to push this patch. If you don't have the time, I would be happy to take care of it, just tell me if you agree with my comments and I'll make the changes & push.
Simon
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |