extern struct cleanup *make_cleanup_freeargv (char **);
-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);
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 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)