1 //===-- OptionGroupValueObjectDisplay.h -------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef liblldb_OptionGroupValueObjectDisplay_h_
11 #define liblldb_OptionGroupValueObjectDisplay_h_
12 
13 #include "lldb/Core/ValueObject.h"
14 #include "lldb/Interpreter/Options.h"
15 
16 namespace lldb_private {
17 
18 //-------------------------------------------------------------------------
19 // OptionGroupValueObjectDisplay
20 //-------------------------------------------------------------------------
21 
22 class OptionGroupValueObjectDisplay : public OptionGroup {
23 public:
24   OptionGroupValueObjectDisplay();
25 
26   ~OptionGroupValueObjectDisplay() override;
27 
28   llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
29 
30   Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
31                         ExecutionContext *execution_context) override;
32   Status SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
33 
34   void OptionParsingStarting(ExecutionContext *execution_context) override;
35 
AnyOptionWasSet()36   bool AnyOptionWasSet() const {
37     return show_types || no_summary_depth != 0 || show_location ||
38            flat_output || use_objc || max_depth != UINT32_MAX ||
39            ptr_depth != 0 || !use_synth || be_raw || ignore_cap ||
40            run_validator;
41   }
42 
43   DumpValueObjectOptions GetAsDumpOptions(
44       LanguageRuntimeDescriptionDisplayVerbosity lang_descr_verbosity =
45           eLanguageRuntimeDescriptionDisplayVerbosityFull,
46       lldb::Format format = lldb::eFormatDefault,
47       lldb::TypeSummaryImplSP summary_sp = lldb::TypeSummaryImplSP());
48 
49   bool show_types : 1, show_location : 1, flat_output : 1, use_objc : 1,
50       use_synth : 1, be_raw : 1, ignore_cap : 1, run_validator : 1;
51 
52   uint32_t no_summary_depth;
53   uint32_t max_depth;
54   uint32_t ptr_depth;
55   uint32_t elem_count;
56   lldb::DynamicValueType use_dynamic;
57 };
58 
59 } // namespace lldb_private
60 
61 #endif // liblldb_OptionGroupValueObjectDisplay_h_
62