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