1 //===-- OptionValueBoolean.h ------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_INTERPRETER_OPTIONVALUEBOOLEAN_H 10 #define LLDB_INTERPRETER_OPTIONVALUEBOOLEAN_H 11 12 #include "lldb/Interpreter/OptionValue.h" 13 14 namespace lldb_private { 15 16 class OptionValueBoolean : public Cloneable<OptionValueBoolean, OptionValue> { 17 public: OptionValueBoolean(bool value)18 OptionValueBoolean(bool value) 19 : m_current_value(value), m_default_value(value) {} OptionValueBoolean(bool current_value,bool default_value)20 OptionValueBoolean(bool current_value, bool default_value) 21 : m_current_value(current_value), m_default_value(default_value) {} 22 23 ~OptionValueBoolean() override = default; 24 25 // Virtual subclass pure virtual overrides 26 GetType()27 OptionValue::Type GetType() const override { return eTypeBoolean; } 28 29 void DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 30 uint32_t dump_mask) override; 31 ToJSON(const ExecutionContext * exe_ctx)32 llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override { 33 return m_current_value; 34 } 35 36 Status 37 SetValueFromString(llvm::StringRef value, 38 VarSetOperationType op = eVarSetOperationAssign) override; 39 Clear()40 void Clear() override { 41 m_current_value = m_default_value; 42 m_value_was_set = false; 43 } 44 45 void AutoComplete(CommandInterpreter &interpreter, 46 CompletionRequest &request) override; 47 48 // Subclass specific functions 49 50 /// Convert to bool operator. 51 /// 52 /// This allows code to check a OptionValueBoolean in conditions. 53 /// 54 /// \code 55 /// OptionValueBoolean bool_value(...); 56 /// if (bool_value) 57 /// { ... 58 /// \endcode 59 /// 60 /// \return 61 /// /b True this object contains a valid namespace decl, \b 62 /// false otherwise. 63 explicit operator bool() const { return m_current_value; } 64 65 const bool &operator=(bool b) { 66 m_current_value = b; 67 return m_current_value; 68 } 69 GetCurrentValue()70 bool GetCurrentValue() const { return m_current_value; } 71 GetDefaultValue()72 bool GetDefaultValue() const { return m_default_value; } 73 SetCurrentValue(bool value)74 void SetCurrentValue(bool value) { m_current_value = value; } 75 SetDefaultValue(bool value)76 void SetDefaultValue(bool value) { m_default_value = value; } 77 78 protected: 79 bool m_current_value; 80 bool m_default_value; 81 }; 82 83 } // namespace lldb_private 84 85 #endif // LLDB_INTERPRETER_OPTIONVALUEBOOLEAN_H 86