/* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
for now. */
/* I/O, string, cleanup, and other random utilities for GDB.
- Copyright (C) 1986-2016 Free Software Foundation, Inc.
+ Copyright (C) 1986-2017 Free Software Foundation, Inc.
This file is part of GDB.
#define UTILS_H
#include "exceptions.h"
+#include "common/scoped_restore.h"
+#include <chrono>
extern void initialize_utils (void);
/* Reset the prompt_for_continue clock. */
void reset_prompt_for_continue_wait_time (void);
/* Return the time spent in prompt_for_continue. */
-struct timeval get_prompt_for_continue_wait_time (void);
+std::chrono::steady_clock::duration get_prompt_for_continue_wait_time ();
\f
/* Parsing utilites. */
extern struct cleanup *make_cleanup_freeargv (char **);
-struct dyn_string;
-extern struct cleanup *make_cleanup_dyn_string_delete (struct dyn_string *);
-
-struct ui_file;
-extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
-
struct ui_out;
extern struct cleanup *
make_cleanup_ui_out_redirect_pop (struct ui_out *uiout);
extern struct cleanup *make_cleanup_fclose (FILE *file);
-extern struct cleanup *make_cleanup_bfd_unref (bfd *abfd);
-
struct obstack;
extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack);
struct target_ops;
extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
-extern struct cleanup *
- make_cleanup_restore_ui_file (struct ui_file **variable);
-
extern struct cleanup *make_cleanup_value_free_to_mark (struct value *);
extern struct cleanup *make_cleanup_value_free (struct value *);
extern struct cleanup *make_cleanup_restore_current_language (void);
-extern struct cleanup *make_cleanup_htab_delete (htab_t htab);
+/* A deleter for a hash table. */
+struct htab_deleter
+{
+ void operator() (htab *ptr) const
+ {
+ htab_delete (ptr);
+ }
+};
+
+/* A unique_ptr wrapper for htab_t. */
+typedef std::unique_ptr<htab, htab_deleter> htab_up;
struct parser_state;
extern struct cleanup *make_cleanup_clear_parser_state
extern void substitute_path_component (char **stringp, const char *from,
const char *to);
-char *ldirname (const char *filename);
+std::string ldirname (const char *filename);
extern int count_path_elements (const char *path);
extern void begin_line (void);
-extern void wrap_here (char *);
+extern void wrap_here (const char *);
extern void reinitialize_more_filter (void);
extern char *warning_pre_print;
-extern void error_stream (struct ui_file *) ATTRIBUTE_NORETURN;
+extern void error_stream (const string_file &) ATTRIBUTE_NORETURN;
extern void demangler_vwarning (const char *file, int line,
const char *, va_list ap)