xref: /freebsd/contrib/llvm-project/lldb/include/lldb/Interpreter/OptionGroupWatchpoint.h (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1 //===-- OptionGroupWatchpoint.h ---------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_INTERPRETER_OPTIONGROUPWATCHPOINT_H
10 #define LLDB_INTERPRETER_OPTIONGROUPWATCHPOINT_H
11 
12 #include "lldb/Interpreter/OptionValueUInt64.h"
13 #include "lldb/Interpreter/Options.h"
14 
15 namespace lldb_private {
16 
17 // OptionGroupWatchpoint
18 
19 class OptionGroupWatchpoint : public OptionGroup {
20 public:
21   OptionGroupWatchpoint() = default;
22 
23   ~OptionGroupWatchpoint() override = default;
24 
25   llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
26 
27   Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
28                         ExecutionContext *execution_context) override;
29 
30   void OptionParsingStarting(ExecutionContext *execution_context) override;
31 
32   /// eWatchRead == LLDB_WATCH_TYPE_READ
33   /// eWatchWrite == LLDB_WATCH_TYPE_WRITE
34   /// eWatchModify == LLDB_WATCH_TYPE_MODIFY
35   /// eWatchReadWrite == LLDB_WATCH_TYPE_READ | LLDB_WATCH_TYPE_WRITE
36   enum WatchType {
37     eWatchInvalid = 0,
38     eWatchRead,
39     eWatchWrite,
40     eWatchModify,
41     eWatchReadWrite
42   };
43 
44   WatchType watch_type;
45   OptionValueUInt64 watch_size;
46   bool watch_type_specified;
47   lldb::LanguageType language_type;
48 
49 private:
50   OptionGroupWatchpoint(const OptionGroupWatchpoint &) = delete;
51   const OptionGroupWatchpoint &
52   operator=(const OptionGroupWatchpoint &) = delete;
53 };
54 
55 } // namespace lldb_private
56 
57 #endif // LLDB_INTERPRETER_OPTIONGROUPWATCHPOINT_H
58