aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli/cli-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/cli/cli-utils.h')
-rw-r--r--gdb/cli/cli-utils.h45
1 files changed, 40 insertions, 5 deletions
diff --git a/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h
index e34ee0d..fa7d02d 100644
--- a/gdb/cli/cli-utils.h
+++ b/gdb/cli/cli-utils.h
@@ -75,8 +75,7 @@ public:
const char *end_ptr);
/* Returns true if parsing has completed. */
- bool finished () const
- { return m_finished; }
+ bool finished () const;
/* Return the string being parsed. When parsing has finished, this
points past the last parsed token. */
@@ -96,6 +95,7 @@ public:
{
gdb_assert (m_in_range);
m_cur_tok = m_end_ptr;
+ m_in_range = false;
}
private:
@@ -103,9 +103,6 @@ private:
number_or_range_parser (const number_or_range_parser &);
number_or_range_parser &operator= (const number_or_range_parser &);
- /* True if parsing has completed. */
- bool m_finished;
-
/* The string being parsed. When parsing has finished, this points
past the last parsed token. */
const char *m_cur_tok;
@@ -173,4 +170,42 @@ check_for_argument (char **str, const char *arg, int arg_len)
arg, arg_len);
}
+/* A helper function that looks for a set of flags at the start of a
+ string. The possible flags are given as a null terminated string.
+ A flag in STR must either be at the end of the string,
+ or be followed by whitespace.
+ Returns 0 if no valid flag is found at the start of STR.
+ Otherwise updates *STR, and returns N (which is > 0),
+ such that FLAGS [N - 1] is the valid found flag. */
+extern int parse_flags (const char **str, const char *flags);
+
+/* qcs_flags struct regroups the flags parsed by parse_flags_qcs. */
+
+struct qcs_flags
+{
+ bool quiet = false;
+ bool cont = false;
+ bool silent = false;
+};
+
+/* A helper function that uses parse_flags to handle the flags qcs :
+ A flag -q sets FLAGS->QUIET to true.
+ A flag -c sets FLAGS->CONT to true.
+ A flag -s sets FLAGS->SILENT to true.
+
+ The caller is responsible to initialize *FLAGS to false before the (first)
+ call to parse_flags_qcs.
+ parse_flags_qcs can then be called iteratively to search for more
+ valid flags, as part of a 'main parsing loop' searching for -q/-c/-s
+ flags together with other flags and options.
+
+ Returns true and updates *STR and one of FLAGS->QUIET, FLAGS->CONT,
+ FLAGS->SILENT if it finds a valid flag.
+ Returns false if no valid flag is found at the beginning of STR.
+
+ Throws an error if a flag is found such that both FLAGS->CONT and
+ FLAGS->SILENT are true. */
+
+extern bool parse_flags_qcs (const char *which_command, const char **str,
+ qcs_flags *flags);
#endif /* CLI_UTILS_H */