summaryrefslogtreecommitdiff
path: root/gdb/target
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/target')
-rw-r--r--gdb/target/target.h67
1 files changed, 38 insertions, 29 deletions
diff --git a/gdb/target/target.h b/gdb/target/target.h
index 5571e16b34f..879e7308ab7 100644
--- a/gdb/target/target.h
+++ b/gdb/target/target.h
@@ -95,6 +95,21 @@ extern void target_mourn_inferior (ptid_t ptid);
extern int target_supports_multi_process (void);
+/* Possible terminal states. */
+
+enum class target_terminal_state
+ {
+ /* The inferior's terminal settings are in effect. */
+ is_inferior = 0,
+
+ /* Some of our terminal settings are in effect, enough to get
+ proper output. */
+ is_ours_for_output = 1,
+
+ /* Our terminal settings are in effect, for output and input. */
+ is_ours = 2
+ };
+
/* Represents the state of the target terminal. */
class target_terminal
{
@@ -108,9 +123,9 @@ public:
before we actually run the inferior. */
static void init ();
- /* Put the inferior's terminal settings into effect. This is
- preparation for starting or resuming the inferior. This is a no-op
- unless called with the main UI as current UI. */
+ /* Put the current inferior's terminal settings into effect. This
+ is preparation for starting or resuming the inferior. This is a
+ no-op unless called with the main UI as current UI. */
static void inferior ();
/* Put our terminal settings into effect. First record the inferior's
@@ -125,40 +140,34 @@ public:
UI as current UI. */
static void ours_for_output ();
+ /* Restore terminal settings of inferiors that are in
+ is_ours_for_output state back to "inferior". Used when we need
+ to temporarily switch to is_ours_for_output state. */
+ static void restore_inferior ();
+
/* Returns true if the terminal settings of the inferior are in
effect. */
static bool is_inferior ()
{
- return terminal_state == terminal_is_inferior;
+ return m_terminal_state == target_terminal_state::is_inferior;
}
/* Returns true if our terminal settings are in effect. */
static bool is_ours ()
{
- return terminal_state == terminal_is_ours;
+ return m_terminal_state == target_terminal_state::is_ours;
+ }
+
+ /* Returns true if our terminal settings are in effect. */
+ static bool is_ours_for_output ()
+ {
+ return m_terminal_state == target_terminal_state::is_ours_for_output;
}
/* Print useful information about our terminal status, if such a thing
exists. */
static void info (const char *arg, int from_tty);
-private:
-
- /* Possible terminal states. */
-
- enum terminal_state
- {
- /* The inferior's terminal settings are in effect. */
- terminal_is_inferior = 0,
-
- /* Some of our terminal settings are in effect, enough to get
- proper output. */
- terminal_is_ours_for_output = 1,
-
- /* Our terminal settings are in effect, for output and input. */
- terminal_is_ours = 2
- };
-
public:
/* A class that restores the state of the terminal to the current
@@ -168,7 +177,7 @@ public:
public:
scoped_restore_terminal_state ()
- : m_state (terminal_state)
+ : m_state (m_terminal_state)
{
}
@@ -176,14 +185,14 @@ public:
{
switch (m_state)
{
- case terminal_is_ours:
+ case target_terminal_state::is_ours:
ours ();
break;
- case terminal_is_ours_for_output:
+ case target_terminal_state::is_ours_for_output:
ours_for_output ();
break;
- case terminal_is_inferior:
- inferior ();
+ case target_terminal_state::is_inferior:
+ restore_inferior ();
break;
}
}
@@ -192,12 +201,12 @@ public:
private:
- target_terminal::terminal_state m_state;
+ target_terminal_state m_state;
};
private:
- static terminal_state terminal_state;
+ static target_terminal_state m_terminal_state;
};
#endif /* TARGET_COMMON_H */