1 //===-- OptionValueString.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_OptionValueString_h_
11 #define liblldb_OptionValueString_h_
17 // Other libraries and framework includes
19 #include "lldb/Core/Flags.h"
20 #include "lldb/Interpreter/OptionValue.h"
22 namespace lldb_private {
24 class OptionValueString : public OptionValue
27 typedef Error (*ValidatorCallback) (const char* string,
32 eOptionEncodeCharacterEscapeSequences = (1u << 0)
35 OptionValueString () :
45 OptionValueString(ValidatorCallback validator,
46 void* baton = nullptr) :
51 m_validator(validator),
52 m_validator_baton(baton)
56 OptionValueString (const char *value) :
64 if (value && value[0])
66 m_current_value.assign (value);
67 m_default_value.assign (value);
71 OptionValueString (const char *current_value,
72 const char *default_value) :
80 if (current_value && current_value[0])
81 m_current_value.assign (current_value);
82 if (default_value && default_value[0])
83 m_default_value.assign (default_value);
86 OptionValueString(const char *value,
87 ValidatorCallback validator,
88 void* baton = nullptr) :
93 m_validator(validator),
94 m_validator_baton(baton)
96 if (value && value[0])
98 m_current_value.assign (value);
99 m_default_value.assign (value);
103 OptionValueString(const char *current_value,
104 const char *default_value,
105 ValidatorCallback validator,
106 void* baton = nullptr) :
111 m_validator(validator),
112 m_validator_baton(baton)
114 if (current_value && current_value[0])
115 m_current_value.assign (current_value);
116 if (default_value && default_value[0])
117 m_default_value.assign (default_value);
120 ~OptionValueString() override = default;
122 //---------------------------------------------------------------------
123 // Virtual subclass pure virtual overrides
124 //---------------------------------------------------------------------
127 GetType() const override
133 DumpValue(const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) override;
136 SetValueFromString(llvm::StringRef value,
137 VarSetOperationType op = eVarSetOperationAssign) override;
142 m_current_value = m_default_value;
143 m_value_was_set = false;
148 DeepCopy() const override;
150 //---------------------------------------------------------------------
151 // Subclass specific functions
152 //---------------------------------------------------------------------
167 operator = (const char *value)
169 SetCurrentValue(value);
170 return m_current_value.c_str();
174 GetCurrentValue() const
176 return m_current_value.c_str();
180 GetDefaultValue() const
182 return m_default_value.c_str();
186 SetCurrentValue (const char *value);
189 AppendToCurrentValue (const char *value);
192 SetDefaultValue (const char *value)
194 if (value && value[0])
195 m_default_value.assign (value);
197 m_default_value.clear();
201 IsCurrentValueEmpty () const
203 return m_current_value.empty();
207 IsDefaultValueEmpty () const
209 return m_default_value.empty();
213 std::string m_current_value;
214 std::string m_default_value;
216 ValidatorCallback m_validator;
217 void* m_validator_baton;
220 } // namespace lldb_private
222 #endif // liblldb_OptionValueString_h_