]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Interpreter/OptionValueArch.h
Merge ^/head r303250 through r308226.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Interpreter / OptionValueArch.h
1 //===-- OptionValueArch.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_OptionValueArch_h_
11 #define liblldb_OptionValueArch_h_
12
13 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/Core/ArchSpec.h"
18 #include "lldb/Interpreter/OptionValue.h"
19
20 namespace lldb_private {
21
22 class OptionValueArch : public OptionValue
23 {
24 public:
25     OptionValueArch () :
26         OptionValue(),
27         m_current_value (),
28         m_default_value ()
29     {
30     }
31
32     OptionValueArch (const char *triple) :
33         OptionValue(),
34         m_current_value (triple),
35         m_default_value ()
36     {
37         m_default_value = m_current_value;
38     }
39
40     OptionValueArch (const ArchSpec &value) :
41         OptionValue(),
42         m_current_value (value),
43         m_default_value (value)
44     {
45     }
46     
47     OptionValueArch (const ArchSpec &current_value,
48                      const ArchSpec &default_value) :
49         OptionValue(),
50         m_current_value (current_value),
51         m_default_value (default_value)
52     {
53     }
54     
55     ~OptionValueArch() override
56     {
57     }
58     
59     //---------------------------------------------------------------------
60     // Virtual subclass pure virtual overrides
61     //---------------------------------------------------------------------
62     
63     OptionValue::Type
64     GetType() const override
65     {
66         return eTypeArch;
67     }
68     
69     void
70     DumpValue(const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) override;
71     
72     Error
73     SetValueFromString(llvm::StringRef value,
74                        VarSetOperationType op = eVarSetOperationAssign) override;
75     
76     bool
77     Clear() override
78     {
79         m_current_value = m_default_value;
80         m_value_was_set = false;
81         return true;
82     }
83     
84     lldb::OptionValueSP
85     DeepCopy() const override;
86
87     size_t
88     AutoComplete(CommandInterpreter &interpreter,
89                  const char *s,
90                  int match_start_point,
91                  int max_return_elements,
92                  bool &word_complete,
93                  StringList &matches) override;
94     
95     //---------------------------------------------------------------------
96     // Subclass specific functions
97     //---------------------------------------------------------------------
98     
99     ArchSpec &
100     GetCurrentValue()
101     {
102         return m_current_value;
103     }
104
105     const ArchSpec &
106     GetCurrentValue() const
107     {
108         return m_current_value;
109     }
110
111     const ArchSpec &
112     GetDefaultValue() const
113     {
114         return m_default_value;
115     }
116     
117     void
118     SetCurrentValue (const ArchSpec &value, bool set_value_was_set)
119     {
120         m_current_value = value;
121         if (set_value_was_set)
122             m_value_was_set = true;
123     }
124     
125     void
126     SetDefaultValue (const ArchSpec &value)
127     {
128         m_default_value = value;
129     }
130     
131 protected:
132     ArchSpec m_current_value;
133     ArchSpec m_default_value;
134 };
135
136 } // namespace lldb_private
137
138 #endif // liblldb_OptionValueArch_h_