LLDB  mainline
OptionValueDictionary.h
Go to the documentation of this file.
1 //===-- OptionValueDictionary.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_OPTIONVALUEDICTIONARY_H
10 #define LLDB_INTERPRETER_OPTIONVALUEDICTIONARY_H
11 
12 #include <map>
13 
16 
17 namespace lldb_private {
18 
20  : public Cloneable<OptionValueDictionary, OptionValue> {
21 public:
23  OptionEnumValues enum_values = OptionEnumValues(),
24  bool raw_value_dump = true)
25  : m_type_mask(type_mask), m_enum_values(enum_values),
26  m_raw_value_dump(raw_value_dump) {}
27 
28  ~OptionValueDictionary() override = default;
29 
30  // Virtual subclass pure virtual overrides
31 
32  OptionValue::Type GetType() const override { return eTypeDictionary; }
33 
34  void DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
35  uint32_t dump_mask) override;
36 
37  Status
38  SetValueFromString(llvm::StringRef value,
40 
41  void Clear() override {
42  m_values.clear();
43  m_value_was_set = false;
44  }
45 
46  lldb::OptionValueSP
47  DeepCopy(const lldb::OptionValueSP &new_parent) const override;
48 
49  bool IsAggregateValue() const override { return true; }
50 
51  bool IsHomogenous() const {
53  }
54 
55  // Subclass specific functions
56 
57  size_t GetNumValues() const { return m_values.size(); }
58 
59  lldb::OptionValueSP GetValueForKey(ConstString key) const;
60 
61  lldb::OptionValueSP GetSubValue(const ExecutionContext *exe_ctx,
62  llvm::StringRef name, bool will_modify,
63  Status &error) const override;
64 
66  llvm::StringRef name, llvm::StringRef value) override;
67 
68  bool SetValueForKey(ConstString key,
69  const lldb::OptionValueSP &value_sp,
70  bool can_replace = true);
71 
73 
74  size_t GetArgs(Args &args) const;
75 
76  Status SetArgs(const Args &args, VarSetOperationType op);
77 
78 protected:
79  typedef std::map<ConstString, lldb::OptionValueSP> collection;
81  OptionEnumValues m_enum_values;
84 };
85 
86 } // namespace lldb_private
87 
88 #endif // LLDB_INTERPRETER_OPTIONVALUEDICTIONARY_H
lldb_private::OptionValueDictionary::GetValueForKey
lldb::OptionValueSP GetValueForKey(ConstString key) const
Definition: OptionValueDictionary.cpp:291
lldb_private::ExecutionContext
Definition: ExecutionContext.h:292
lldb-private-types.h
lldb_private::OptionValue::eTypeInvalid
@ eTypeInvalid
Definition: OptionValue.h:27
lldb_private::OptionValueDictionary::m_raw_value_dump
bool m_raw_value_dump
Definition: OptionValueDictionary.h:83
lldb_private::OptionValueDictionary::collection
std::map< ConstString, lldb::OptionValueSP > collection
Definition: OptionValueDictionary.h:79
lldb_private::OptionValueDictionary::Clear
void Clear() override
Definition: OptionValueDictionary.h:41
lldb_private::OptionValueDictionary::SetArgs
Status SetArgs(const Args &args, VarSetOperationType op)
Definition: OptionValueDictionary.cpp:98
lldb_private::OptionValueDictionary::~OptionValueDictionary
~OptionValueDictionary() override=default
lldb_private::Stream
Definition: Stream.h:28
lldb_private::Args
Definition: Args.h:33
lldb_private::OptionValueDictionary::DeepCopy
lldb::OptionValueSP DeepCopy(const lldb::OptionValueSP &new_parent) const override
Definition: OptionValueDictionary.cpp:326
lldb_private::Cloneable
Definition: Cloneable.h:40
lldb_private::OptionValueDictionary::GetArgs
size_t GetArgs(Args &args) const
Definition: OptionValueDictionary.cpp:86
OptionValue.h
lldb_private::OptionValueDictionary::GetType
OptionValue::Type GetType() const override
Definition: OptionValueDictionary.h:32
error
static llvm::raw_ostream & error(Stream &strm)
Definition: CommandReturnObject.cpp:17
lldb_private::VarSetOperationType
VarSetOperationType
Settable state variable types.
Definition: lldb-private-enumerations.h:83
lldb_private::ConstString
Definition: ConstString.h:40
lldb_private::OptionValueDictionary::GetNumValues
size_t GetNumValues() const
Definition: OptionValueDictionary.h:57
lldb_private::OptionValueDictionary::SetValueForKey
bool SetValueForKey(ConstString key, const lldb::OptionValueSP &value_sp, bool can_replace=true)
Definition: OptionValueDictionary.cpp:299
lldb_private::OptionValueDictionary::DumpValue
void DumpValue(const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) override
Definition: OptionValueDictionary.cpp:21
lldb_private::OptionValueDictionary::DeleteValueForKey
bool DeleteValueForKey(ConstString key)
Definition: OptionValueDictionary.cpp:316
lldb_private::OptionValue::ConvertTypeMaskToType
static OptionValue::Type ConvertTypeMaskToType(uint32_t type_mask)
Definition: OptionValue.h:124
lldb_private::OptionValueDictionary::m_enum_values
OptionEnumValues m_enum_values
Definition: OptionValueDictionary.h:81
lldb_private::OptionValueDictionary::GetSubValue
lldb::OptionValueSP GetSubValue(const ExecutionContext *exe_ctx, llvm::StringRef name, bool will_modify, Status &error) const override
Definition: OptionValueDictionary.cpp:224
lldb_private::Status
Definition: Status.h:44
lldb_private::OptionValue::Type
Type
Definition: OptionValue.h:26
lldb_private::OptionValue::eTypeDictionary
@ eTypeDictionary
Definition: OptionValue.h:33
lldb_private::OptionValueDictionary::IsHomogenous
bool IsHomogenous() const
Definition: OptionValueDictionary.h:51
uint32_t
lldb_private::OptionValue::m_value_was_set
bool m_value_was_set
Definition: OptionValue.h:331
UINT32_MAX
#define UINT32_MAX
Definition: lldb-defines.h:19
lldb_private::OptionValueDictionary::IsAggregateValue
bool IsAggregateValue() const override
Definition: OptionValueDictionary.h:49
lldb_private
A class that represents a running process on the host machine.
Definition: SBCommandInterpreterRunOptions.h:16
lldb_private::OptionValueDictionary::m_type_mask
uint32_t m_type_mask
Definition: OptionValueDictionary.h:80
lldb_private::OptionValueDictionary
Definition: OptionValueDictionary.h:19
lldb_private::OptionValueDictionary::SetSubValue
Status SetSubValue(const ExecutionContext *exe_ctx, VarSetOperationType op, llvm::StringRef name, llvm::StringRef value) override
Definition: OptionValueDictionary.cpp:274
lldb_private::OptionValueDictionary::OptionValueDictionary
OptionValueDictionary(uint32_t type_mask=UINT32_MAX, OptionEnumValues enum_values=OptionEnumValues(), bool raw_value_dump=true)
Definition: OptionValueDictionary.h:22
lldb_private::OptionValueDictionary::SetValueFromString
Status SetValueFromString(llvm::StringRef value, VarSetOperationType op=eVarSetOperationAssign) override
Definition: OptionValueDictionary.cpp:214
lldb_private::OptionValueDictionary::m_values
collection m_values
Definition: OptionValueDictionary.h:82
lldb_private::eVarSetOperationAssign
@ eVarSetOperationAssign
Definition: lldb-private-enumerations.h:90