Introduce ui_file_as_string

ui_file_as_string is a variant of ui_file_xstrdup that returns a
std::string instead of a xmalloc'ed char *.  The idea is using the new
function to eliminate "make_cleanup (xfree, ...)"  cleanups
throughout.

Following patches will make use of this.

gdb/ChangeLog:
2016-11-08  Pedro Alves  <palves@redhat.com>

	* ui-file.c (do_ui_file_as_string, ui_file_as_string): New
	functions.
	* ui-file.h: Include <string>.
	(ui_file_as_string): New declaration.
This commit is contained in:
Pedro Alves 2016-11-08 15:26:43 +00:00
parent 4d01a485d2
commit 8de00631b8
3 changed files with 35 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2016-11-08 Pedro Alves <palves@redhat.com>
* ui-file.c (do_ui_file_as_string, ui_file_as_string): New
functions.
* ui-file.h: Include <string>.
(ui_file_as_string): New declaration.
2016-11-08 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_read_renaming_var_value): Use expression_up.

View File

@ -356,6 +356,28 @@ ui_file_xstrdup (struct ui_file *file, long *length)
return acc.buffer;
}
/* ui_file utility function for converting a ``struct ui_file'' into a
std:string. */
static void
do_ui_file_as_string (void *context, const char *buffer, long length)
{
std::string *str = (std::string *) context;
*str = std::string (buffer, length);
}
/* See ui-file.h. */
std::string
ui_file_as_string (struct ui_file *file)
{
std::string str;
ui_file_put (file, do_ui_file_as_string, &str);
return str;
}
static void
do_ui_file_obsavestring (void *context, const char *buffer, long length)
{

View File

@ -22,6 +22,8 @@
struct obstack;
struct ui_file;
#include <string>
/* Create a generic ui_file object with null methods. */
extern struct ui_file *ui_file_new (void);
@ -117,6 +119,10 @@ extern void ui_file_put (struct ui_file *src,
minus that appended NUL. */
extern char *ui_file_xstrdup (struct ui_file *file, long *length);
/* Returns a std::string containing the entire contents of FILE (as
determined by ui_file_put()). */
extern std::string ui_file_as_string (struct ui_file *file);
/* Similar to ui_file_xstrdup, but return a new string allocated on
OBSTACK. */
extern char *ui_file_obsavestring (struct ui_file *file,