1 //===-- OptionValueLanguage.h -------------------------------------*- C++ 2 //-*-===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLDB_INTERPRETER_OPTIONVALUELANGUAGE_H 11 #define LLDB_INTERPRETER_OPTIONVALUELANGUAGE_H 12 13 #include "lldb/Interpreter/OptionValue.h" 14 #include "lldb/lldb-enumerations.h" 15 16 namespace lldb_private { 17 18 class OptionValueLanguage : public Cloneable<OptionValueLanguage, OptionValue> { 19 public: OptionValueLanguage(lldb::LanguageType value)20 OptionValueLanguage(lldb::LanguageType value) 21 : m_current_value(value), m_default_value(value) {} 22 OptionValueLanguage(lldb::LanguageType current_value,lldb::LanguageType default_value)23 OptionValueLanguage(lldb::LanguageType current_value, 24 lldb::LanguageType default_value) 25 : m_current_value(current_value), m_default_value(default_value) {} 26 27 ~OptionValueLanguage() override = default; 28 29 // Virtual subclass pure virtual overrides 30 GetType()31 OptionValue::Type GetType() const override { return eTypeLanguage; } 32 33 void DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 34 uint32_t dump_mask) override; 35 36 llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override; 37 38 Status 39 SetValueFromString(llvm::StringRef value, 40 VarSetOperationType op = eVarSetOperationAssign) override; 41 Clear()42 void Clear() override { 43 m_current_value = m_default_value; 44 m_value_was_set = false; 45 } 46 47 // Subclass specific functions 48 GetCurrentValue()49 lldb::LanguageType GetCurrentValue() const { return m_current_value; } 50 GetDefaultValue()51 lldb::LanguageType GetDefaultValue() const { return m_default_value; } 52 SetCurrentValue(lldb::LanguageType value)53 void SetCurrentValue(lldb::LanguageType value) { m_current_value = value; } 54 SetDefaultValue(lldb::LanguageType value)55 void SetDefaultValue(lldb::LanguageType value) { m_default_value = value; } 56 57 protected: 58 lldb::LanguageType m_current_value; 59 lldb::LanguageType m_default_value; 60 }; 61 62 } // namespace lldb_private 63 64 #endif // LLDB_INTERPRETER_OPTIONVALUELANGUAGE_H 65