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