/* Top level stuff for GDB, the GNU debugger.
- Copyright (C) 1986-2016 Free Software Foundation, Inc.
+ Copyright (C) 1986-2024 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef TOP_H
#define TOP_H
+#include "gdbsupport/event-loop.h"
+#include "gdbsupport/next-iterator.h"
+#include "value.h"
+
/* From top.c. */
-extern char *saved_command_line;
-extern int saved_command_line_size;
-extern FILE *instream;
-extern int in_user_command;
-extern int confirm;
-extern char gdb_dirbuf[1024];
+extern bool confirm;
extern int inhibit_gdbinit;
-extern const char gdbinit[];
+extern auto_boolean interactive_mode;
+
+/* Print the GDB version banner to STREAM. If INTERACTIVE is false,
+ then information referring to commands (e.g., "show configuration")
+ is omitted; this mode is used for the --version command line
+ option. If INTERACTIVE is true, then interactive commands are
+ mentioned. */
+extern void print_gdb_version (struct ui_file *stream, bool interactive);
-extern void print_gdb_version (struct ui_file *);
extern void print_gdb_configuration (struct ui_file *);
extern void read_command_file (FILE *);
extern void init_history (void);
extern void command_loop (void);
extern int quit_confirm (void);
-extern void quit_force (char *, int);
-extern void quit_command (char *, int);
+extern void quit_force (int *, int) ATTRIBUTE_NORETURN;
+extern void quit_command (const char *, int);
extern void quit_cover (void);
-extern void execute_command (char *, int);
+extern void execute_command (const char *, int);
/* If the interpreter is in sync mode (we're running a user command's
list, running command hooks or similars), and we just ran a
/* Prepare for execution of a command.
Call this before every command, CLI or MI.
Returns a cleanup to be run after the command is completed. */
-extern struct cleanup *prepare_execute_command (void);
+extern scoped_value_mark prepare_execute_command (void);
/* This function returns a pointer to the string that is used
by gdb for its command prompt. */
-extern char *get_prompt (void);
+extern const std::string &get_prompt ();
/* This function returns a pointer to the string that is used
by gdb for its command prompt. */
extern void set_prompt (const char *s);
-/* Return 1 if the current input handler is a secondary prompt, 0 otherwise. */
-
-extern int gdb_in_secondary_prompt_p (void);
+/* Return 1 if UI's current input handler is a secondary prompt, 0
+ otherwise. */
-/* From random places. */
-extern int readnow_symbol_files;
+extern int gdb_in_secondary_prompt_p (struct ui *ui);
/* Perform _initialize initialization. */
-extern void gdb_init (char *);
+extern void gdb_init ();
/* For use by event-top.c. */
/* Variables from top.c. */
extern int source_line_number;
-extern const char *source_file_name;
-extern int history_expansion_p;
-extern int server_command;
+extern std::string source_file_name;
+extern bool history_expansion_p;
+extern bool server_command;
extern char *lim_at_start;
extern void gdb_add_history (const char *);
-extern void show_commands (char *args, int from_tty);
+extern void show_commands (const char *args, int from_tty);
+
+extern void set_verbose (const char *, int, struct cmd_list_element *);
+
+extern const char *handle_line_of_input (std::string &cmd_line_buffer,
+ const char *rl, int repeat,
+ const char *annotation_suffix);
-extern void set_history (char *, int);
+/* Call at startup to see if the user has requested that gdb start up
+ quietly. */
-extern void show_history (char *, int);
+extern bool check_quiet_mode ();
-extern void set_verbose (char *, int, struct cmd_list_element *);
+/* Unbuffer STREAM. This is a wrapper around setbuf(STREAM, nullptr)
+ which applies some special rules for MS-Windows hosts. */
-extern void do_restore_instream_cleanup (void *stream);
+extern void unbuffer_stream (FILE *stream);
#endif