1 //===-- OptionValueArch.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_OptionValueArch_h_
11 #define liblldb_OptionValueArch_h_
15 // Other libraries and framework includes
17 #include "lldb/Core/ArchSpec.h"
18 #include "lldb/Interpreter/OptionValue.h"
20 namespace lldb_private {
22 class OptionValueArch : public OptionValue {
24 OptionValueArch() : OptionValue(), m_current_value(), m_default_value() {}
26 OptionValueArch(const char *triple)
27 : OptionValue(), m_current_value(triple), m_default_value() {
28 m_default_value = m_current_value;
31 OptionValueArch(const ArchSpec &value)
32 : OptionValue(), m_current_value(value), m_default_value(value) {}
34 OptionValueArch(const ArchSpec ¤t_value, const ArchSpec &default_value)
35 : OptionValue(), m_current_value(current_value),
36 m_default_value(default_value) {}
38 ~OptionValueArch() override {}
40 //---------------------------------------------------------------------
41 // Virtual subclass pure virtual overrides
42 //---------------------------------------------------------------------
44 OptionValue::Type GetType() const override { return eTypeArch; }
46 void DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
47 uint32_t dump_mask) override;
50 SetValueFromString(llvm::StringRef value,
51 VarSetOperationType op = eVarSetOperationAssign) override;
53 SetValueFromString(const char *,
54 VarSetOperationType = eVarSetOperationAssign) = delete;
56 bool Clear() override {
57 m_current_value = m_default_value;
58 m_value_was_set = false;
62 lldb::OptionValueSP DeepCopy() const override;
64 size_t AutoComplete(CommandInterpreter &interpreter, llvm::StringRef s,
65 int match_start_point, int max_return_elements,
66 bool &word_complete, StringList &matches) override;
68 //---------------------------------------------------------------------
69 // Subclass specific functions
70 //---------------------------------------------------------------------
72 ArchSpec &GetCurrentValue() { return m_current_value; }
74 const ArchSpec &GetCurrentValue() const { return m_current_value; }
76 const ArchSpec &GetDefaultValue() const { return m_default_value; }
78 void SetCurrentValue(const ArchSpec &value, bool set_value_was_set) {
79 m_current_value = value;
80 if (set_value_was_set)
81 m_value_was_set = true;
84 void SetDefaultValue(const ArchSpec &value) { m_default_value = value; }
87 ArchSpec m_current_value;
88 ArchSpec m_default_value;
91 } // namespace lldb_private
93 #endif // liblldb_OptionValueArch_h_