change and rename gmp_string_asprintf to return an std::string

This was suggested by Simon during a code review of this package upstream.
The upside is that this makes the function's API more natural and C++.
The downside is an extra malloc, which might be the reason why we went
for using a unique_xmalloc_ptr in the first place. Since this function
is not expected to be called frequently, the API improvement might be
worth the performance impact.

gdb/ChangeLog:

        * gmp-utils.h (gmp_string_printf): Rename from gmp_string_asprintf.
        Change return type to std::string. Update all callers.
        * gmp-utils.c (gmp_string_printf): Likewise.
This commit is contained in:
Joel Brobecker
2020-11-23 21:45:35 -05:00
parent 4fbb7ccebe
commit 987b670356
6 changed files with 27 additions and 17 deletions

View File

@ -29,9 +29,9 @@
#include <gmp.h>
#include "gdbsupport/traits.h"
/* Same as gmp_asprintf, but returning a convenient wrapper type. */
/* Same as gmp_asprintf, but returning an std::string. */
gdb::unique_xmalloc_ptr<char> gmp_string_asprintf (const char *fmt, ...);
std::string gmp_string_printf (const char *fmt, ...);
/* A class to make it easier to use GMP's mpz_t values within GDB. */
@ -110,8 +110,7 @@ struct gdb_mpz
bool unsigned_p) const;
/* Return a string containing VAL. */
gdb::unique_xmalloc_ptr<char> str () const
{ return gmp_string_asprintf ("%Zd", val); }
std::string str () const { return gmp_string_printf ("%Zd", val); }
/* The destructor. */
~gdb_mpz () { mpz_clear (val); }
@ -163,8 +162,7 @@ struct gdb_mpq
}
/* Return a string representing VAL as "<numerator> / <denominator>". */
gdb::unique_xmalloc_ptr<char> str () const
{ return gmp_string_asprintf ("%Qd", val); }
std::string str () const { return gmp_string_printf ("%Qd", val); }
/* Return VAL rounded to the nearest integer. */
gdb_mpz get_rounded () const;