1 //===-- OptionValueSInt64.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_OPTIONVALUESINT64_H 11 #define LLDB_INTERPRETER_OPTIONVALUESINT64_H 12 13 #include "lldb/Interpreter/OptionValue.h" 14 15 namespace lldb_private { 16 17 class OptionValueSInt64 : public Cloneable<OptionValueSInt64, OptionValue> { 18 public: 19 OptionValueSInt64() = default; 20 21 OptionValueSInt64(int64_t value) 22 : m_current_value(value), m_default_value(value) {} 23 24 OptionValueSInt64(int64_t current_value, int64_t default_value) 25 : m_current_value(current_value), m_default_value(default_value) {} 26 27 OptionValueSInt64(const OptionValueSInt64 &rhs) = default; 28 29 ~OptionValueSInt64() override = default; 30 31 // Virtual subclass pure virtual overrides 32 33 OptionValue::Type GetType() const override { return eTypeSInt64; } 34 35 void DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 36 uint32_t dump_mask) override; 37 38 llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override { 39 return m_current_value; 40 } 41 42 Status 43 SetValueFromString(llvm::StringRef value, 44 VarSetOperationType op = eVarSetOperationAssign) override; 45 46 void Clear() override { 47 m_current_value = m_default_value; 48 m_value_was_set = false; 49 } 50 51 // Subclass specific functions 52 53 const int64_t &operator=(int64_t value) { 54 m_current_value = value; 55 return m_current_value; 56 } 57 58 int64_t GetCurrentValue() const { return m_current_value; } 59 60 int64_t GetDefaultValue() const { return m_default_value; } 61 62 bool SetCurrentValue(int64_t value) { 63 if (value >= m_min_value && value <= m_max_value) { 64 m_current_value = value; 65 return true; 66 } 67 return false; 68 } 69 70 bool SetDefaultValue(int64_t value) { 71 if (value >= m_min_value && value <= m_max_value) { 72 m_default_value = value; 73 return true; 74 } 75 return false; 76 } 77 78 void SetMinimumValue(int64_t v) { m_min_value = v; } 79 80 int64_t GetMinimumValue() const { return m_min_value; } 81 82 void SetMaximumValue(int64_t v) { m_max_value = v; } 83 84 int64_t GetMaximumValue() const { return m_max_value; } 85 86 protected: 87 int64_t m_current_value = 0; 88 int64_t m_default_value = 0; 89 int64_t m_min_value = INT64_MIN; 90 int64_t m_max_value = INT64_MAX; 91 }; 92 93 } // namespace lldb_private 94 95 #endif // LLDB_INTERPRETER_OPTIONVALUESINT64_H 96