1 //===-- OptionValueDictionary.h ---------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_OptionValueDictionary_h_
11 #define liblldb_OptionValueDictionary_h_
17 // Other libraries and framework includes
19 #include "lldb/Interpreter/OptionValue.h"
21 namespace lldb_private {
23 class OptionValueDictionary : public OptionValue
26 OptionValueDictionary (uint32_t type_mask = UINT32_MAX, bool raw_value_dump = true) :
28 m_type_mask (type_mask),
30 m_raw_value_dump (raw_value_dump)
34 ~OptionValueDictionary() override
38 //---------------------------------------------------------------------
39 // Virtual subclass pure virtual overrides
40 //---------------------------------------------------------------------
43 GetType() const override
45 return eTypeDictionary;
49 DumpValue(const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) override;
52 SetValueFromString(llvm::StringRef value,
53 VarSetOperationType op = eVarSetOperationAssign) override;
59 m_value_was_set = false;
64 DeepCopy() const override;
67 IsAggregateValue() const override
75 return ConvertTypeMaskToType (m_type_mask) != eTypeInvalid;
78 //---------------------------------------------------------------------
79 // Subclass specific functions
80 //---------------------------------------------------------------------
85 return m_values.size();
89 GetValueForKey (const ConstString &key) const;
92 GetSubValue(const ExecutionContext *exe_ctx,
95 Error &error) const override;
98 SetSubValue(const ExecutionContext *exe_ctx,
99 VarSetOperationType op,
101 const char *value) override;
103 //---------------------------------------------------------------------
104 // String value getters and setters
105 //---------------------------------------------------------------------
107 GetStringValueForKey (const ConstString &key);
110 SetStringValueForKey (const ConstString &key,
112 bool can_replace = true);
116 SetValueForKey (const ConstString &key,
117 const lldb::OptionValueSP &value_sp,
118 bool can_replace = true);
121 DeleteValueForKey (const ConstString &key);
124 GetArgs (Args &args) const;
127 SetArgs (const Args &args, VarSetOperationType op);
130 typedef std::map<ConstString, lldb::OptionValueSP> collection;
131 uint32_t m_type_mask;
133 bool m_raw_value_dump;
136 } // namespace lldb_private
138 #endif // liblldb_OptionValueDictionary_h_