break-cond-parse.h revision 1.1.1.1 1 1.1 christos /* Copyright (C) 2023 Free Software Foundation, Inc.
2 1.1 christos
3 1.1 christos This file is part of GDB.
4 1.1 christos
5 1.1 christos This program is free software; you can redistribute it and/or modify
6 1.1 christos it under the terms of the GNU General Public License as published by
7 1.1 christos the Free Software Foundation; either version 3 of the License, or
8 1.1 christos (at your option) any later version.
9 1.1 christos
10 1.1 christos This program is distributed in the hope that it will be useful,
11 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of
12 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 1.1 christos GNU General Public License for more details.
14 1.1 christos
15 1.1 christos You should have received a copy of the GNU General Public License
16 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */
17 1.1 christos
18 1.1 christos #ifndef GDB_BREAK_COND_PARSE_H
19 1.1 christos #define GDB_BREAK_COND_PARSE_H
20 1.1 christos
21 1.1 christos /* Given TOK, a string possibly containing a condition, thread, inferior,
22 1.1 christos task and force-condition flag, as accepted by the 'break' command,
23 1.1 christos extract the condition string, thread, inferior, task number, and the
24 1.1 christos force_condition flag, then set *COND_STRING, *THREAD, *INFERIOR, *TASK,
25 1.1 christos and *FORCE.
26 1.1 christos
27 1.1 christos As TOK is parsed, if an unknown keyword is encountered before the 'if'
28 1.1 christos keyword then everything starting from the unknown keyword is placed into
29 1.1 christos *REST.
30 1.1 christos
31 1.1 christos Both *COND and *REST are initialized to nullptr. If no 'if' keyword is
32 1.1 christos found then *COND will be returned as nullptr. If no unknown content is
33 1.1 christos found then *REST is returned as nullptr.
34 1.1 christos
35 1.1 christos If no thread is found, *THREAD is set to -1. If no inferior is found,
36 1.1 christos *INFERIOR is set to -1. If no task is found, *TASK is set to -1. If
37 1.1 christos the -force-condition flag is not found then *FORCE is set to false.
38 1.1 christos
39 1.1 christos Due to the free-form nature that the string TOK might take (a 'thread'
40 1.1 christos keyword can appear before or after an 'if' condition) then we end up
41 1.1 christos having to check for keywords from both the start of TOK and the end of
42 1.1 christos TOK.
43 1.1 christos
44 1.1 christos If TOK is nullptr, or TOK is the empty string, then the output variables
45 1.1 christos are all given their default values. */
46 1.1 christos
47 1.1 christos extern void create_breakpoint_parse_arg_string
48 1.1 christos (const char *tok, gdb::unique_xmalloc_ptr<char> *cond_string,
49 1.1 christos int *thread, int *inferior, int *task,
50 1.1 christos gdb::unique_xmalloc_ptr<char> *rest, bool *force);
51 1.1 christos
52 1.1 christos #endif /* GDB_BREAK_COND_PARSE_H */
53