diff options
author | Andrew Burgess <aburgess@redhat.com> | 2022-02-21 14:07:45 +0000 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2022-02-25 17:50:22 +0000 |
commit | 820ed8af6a757408873d8955a2db03b0989fdaeb (patch) | |
tree | 702c8ff17e87f29eba4bd4db307ee026694bdfba /gdbsupport | |
parent | e8b4efc3cf3d5d2c475b3e5c31439aa5bcd277ae (diff) | |
download | binutils-820ed8af6a757408873d8955a2db03b0989fdaeb.zip binutils-820ed8af6a757408873d8955a2db03b0989fdaeb.tar.gz binutils-820ed8af6a757408873d8955a2db03b0989fdaeb.tar.bz2 |
gdb: add operator+= and operator+ overload for std::string
This commit adds operator+= and operator+ overloads for adding
gdb::unique_xmalloc_ptr<char> to a std::string. I could only find 3
places in GDB where this was useful right now, and these all make use
of operator+=.
I've also added a self test for gdb::unique_xmalloc_ptr<char>, which
makes use of both operator+= and operator+, so they are both getting
used/tested.
There should be no user visible changes after this commit, except when
running 'maint selftest', where the new self test is visible.
Diffstat (limited to 'gdbsupport')
-rw-r--r-- | gdbsupport/gdb_unique_ptr.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gdbsupport/gdb_unique_ptr.h b/gdbsupport/gdb_unique_ptr.h index d8a87a3..51ee7a4 100644 --- a/gdbsupport/gdb_unique_ptr.h +++ b/gdbsupport/gdb_unique_ptr.h @@ -21,6 +21,7 @@ #define COMMON_GDB_UNIQUE_PTR_H #include <memory> +#include <string> #include "gdbsupport/gdb-xfree.h" namespace gdb @@ -74,4 +75,22 @@ make_unique_xstrndup (const char *str, size_t n) return gdb::unique_xmalloc_ptr<char> (xstrndup (str, n)); } +/* An overload of operator+= fo adding gdb::unique_xmalloc_ptr<char> to a + std::string. */ + +static inline std::string & +operator+= (std::string &lhs, const gdb::unique_xmalloc_ptr<char> &rhs) +{ + return lhs += rhs.get (); +} + +/* An overload of operator+ for adding gdb::unique_xmalloc_ptr<char> to a + std::string. */ + +static inline std::string +operator+ (const std::string &lhs, const gdb::unique_xmalloc_ptr<char> &rhs) +{ + return lhs + rhs.get (); +} + #endif /* COMMON_GDB_UNIQUE_PTR_H */ |