1 //===-- OptionValueArray.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_OptionValueArray_h_
11 #define liblldb_OptionValueArray_h_
17 // Other libraries and framework includes
19 #include "lldb/Interpreter/OptionValue.h"
21 namespace lldb_private {
23 class OptionValueArray : public OptionValue
26 OptionValueArray (uint32_t type_mask = UINT32_MAX, bool raw_value_dump = false) :
27 m_type_mask (type_mask),
29 m_raw_value_dump(raw_value_dump)
38 //---------------------------------------------------------------------
39 // Virtual subclass pure virtual overrides
40 //---------------------------------------------------------------------
42 virtual OptionValue::Type
49 DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
52 SetValueFromCString (const char *value,
53 VarSetOperationType op = eVarSetOperationAssign);
59 m_value_was_set = false;
63 virtual lldb::OptionValueSP
67 IsAggregateValue () const
72 virtual lldb::OptionValueSP
73 GetSubValue (const ExecutionContext *exe_ctx,
78 //---------------------------------------------------------------------
79 // Subclass specific functions
80 //---------------------------------------------------------------------
85 return m_values.size();
89 operator[](size_t idx) const
91 lldb::OptionValueSP value_sp;
92 if (idx < m_values.size())
93 value_sp = m_values[idx];
98 GetValueAtIndex (size_t idx) const
100 lldb::OptionValueSP value_sp;
101 if (idx < m_values.size())
102 value_sp = m_values[idx];
107 AppendValue (const lldb::OptionValueSP &value_sp)
109 // Make sure the value_sp object is allowed to contain
110 // values of the type passed in...
111 if (value_sp && (m_type_mask & value_sp->GetTypeAsMask()))
113 m_values.push_back(value_sp);
120 InsertValue (size_t idx, const lldb::OptionValueSP &value_sp)
122 // Make sure the value_sp object is allowed to contain
123 // values of the type passed in...
124 if (value_sp && (m_type_mask & value_sp->GetTypeAsMask()))
126 if (idx < m_values.size())
127 m_values.insert(m_values.begin() + idx, value_sp);
129 m_values.push_back(value_sp);
136 ReplaceValue (size_t idx, const lldb::OptionValueSP &value_sp)
138 // Make sure the value_sp object is allowed to contain
139 // values of the type passed in...
140 if (value_sp && (m_type_mask & value_sp->GetTypeAsMask()))
142 if (idx < m_values.size())
144 m_values[idx] = value_sp;
152 DeleteValue (size_t idx)
154 if (idx < m_values.size())
156 m_values.erase (m_values.begin() + idx);
163 GetArgs (Args &args) const;
166 SetArgs (const Args &args, VarSetOperationType op);
169 typedef std::vector<lldb::OptionValueSP> collection;
171 uint32_t m_type_mask;
173 bool m_raw_value_dump;
176 } // namespace lldb_private
178 #endif // liblldb_OptionValueArray_h_