Home | History | Annotate | Line # | Download | only in gdb
break-cond-parse.h revision 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