1254721Semaste//===-- OptionValueSInt64.h --------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef liblldb_OptionValueSInt64_h_ 11254721Semaste#define liblldb_OptionValueSInt64_h_ 12254721Semaste 13254721Semaste// C Includes 14254721Semaste// C++ Includes 15254721Semaste// Other libraries and framework includes 16254721Semaste// Project includes 17254721Semaste#include "lldb/Interpreter/OptionValue.h" 18254721Semaste 19254721Semastenamespace lldb_private { 20254721Semaste 21254721Semasteclass OptionValueSInt64 : public OptionValue 22254721Semaste{ 23254721Semastepublic: 24254721Semaste OptionValueSInt64 () : 25254721Semaste OptionValue(), 26254721Semaste m_current_value (0), 27254721Semaste m_default_value (0), 28254721Semaste m_min_value (INT64_MIN), 29254721Semaste m_max_value (INT64_MAX) 30254721Semaste { 31254721Semaste } 32254721Semaste 33254721Semaste OptionValueSInt64 (int64_t value) : 34254721Semaste OptionValue(), 35254721Semaste m_current_value (value), 36254721Semaste m_default_value (value), 37254721Semaste m_min_value (INT64_MIN), 38254721Semaste m_max_value (INT64_MAX) 39254721Semaste { 40254721Semaste } 41254721Semaste 42254721Semaste OptionValueSInt64 (int64_t current_value, 43254721Semaste int64_t default_value) : 44254721Semaste OptionValue(), 45254721Semaste m_current_value (current_value), 46254721Semaste m_default_value (default_value), 47254721Semaste m_min_value (INT64_MIN), 48254721Semaste m_max_value (INT64_MAX) 49254721Semaste { 50254721Semaste } 51254721Semaste 52254721Semaste OptionValueSInt64 (const OptionValueSInt64 &rhs) : 53254721Semaste OptionValue(rhs), 54254721Semaste m_current_value (rhs.m_current_value), 55254721Semaste m_default_value (rhs.m_default_value), 56254721Semaste m_min_value (rhs.m_min_value), 57254721Semaste m_max_value (rhs.m_max_value) 58254721Semaste { 59254721Semaste } 60254721Semaste 61254721Semaste virtual 62254721Semaste ~OptionValueSInt64() 63254721Semaste { 64254721Semaste } 65254721Semaste 66254721Semaste //--------------------------------------------------------------------- 67254721Semaste // Virtual subclass pure virtual overrides 68254721Semaste //--------------------------------------------------------------------- 69254721Semaste 70254721Semaste virtual OptionValue::Type 71254721Semaste GetType () const 72254721Semaste { 73254721Semaste return eTypeSInt64; 74254721Semaste } 75254721Semaste 76254721Semaste virtual void 77254721Semaste DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask); 78254721Semaste 79254721Semaste virtual Error 80254721Semaste SetValueFromCString (const char *value, 81254721Semaste VarSetOperationType op = eVarSetOperationAssign); 82254721Semaste 83254721Semaste virtual bool 84254721Semaste Clear () 85254721Semaste { 86254721Semaste m_current_value = m_default_value; 87254721Semaste m_value_was_set = false; 88254721Semaste return true; 89254721Semaste } 90254721Semaste 91254721Semaste virtual lldb::OptionValueSP 92254721Semaste DeepCopy () const; 93254721Semaste 94254721Semaste //--------------------------------------------------------------------- 95254721Semaste // Subclass specific functions 96254721Semaste //--------------------------------------------------------------------- 97254721Semaste 98254721Semaste const int64_t & 99254721Semaste operator = (int64_t value) 100254721Semaste { 101254721Semaste m_current_value = value; 102254721Semaste return m_current_value; 103254721Semaste } 104254721Semaste 105254721Semaste int64_t 106254721Semaste GetCurrentValue() const 107254721Semaste { 108254721Semaste return m_current_value; 109254721Semaste } 110254721Semaste 111254721Semaste int64_t 112254721Semaste GetDefaultValue() const 113254721Semaste { 114254721Semaste return m_default_value; 115254721Semaste } 116254721Semaste 117254721Semaste bool 118254721Semaste SetCurrentValue (int64_t value) 119254721Semaste { 120254721Semaste if (value >= m_min_value && value <= m_max_value) 121254721Semaste { 122254721Semaste m_current_value = value; 123254721Semaste return true; 124254721Semaste } 125254721Semaste return false; 126254721Semaste } 127254721Semaste 128254721Semaste bool 129254721Semaste SetDefaultValue (int64_t value) 130254721Semaste { 131254721Semaste if (value >= m_min_value && value <= m_max_value) 132254721Semaste { 133254721Semaste m_default_value = value; 134254721Semaste return true; 135254721Semaste } 136254721Semaste return false; 137254721Semaste } 138254721Semaste 139254721Semaste void 140254721Semaste SetMinimumValue (int64_t v) 141254721Semaste { 142254721Semaste m_min_value = v; 143254721Semaste } 144254721Semaste 145254721Semaste int64_t 146254721Semaste GetMinimumValue () const 147254721Semaste { 148254721Semaste return m_min_value; 149254721Semaste } 150254721Semaste 151254721Semaste void 152254721Semaste SetMaximumValue (int64_t v) 153254721Semaste { 154254721Semaste m_max_value = v; 155254721Semaste } 156254721Semaste 157254721Semaste int64_t 158254721Semaste GetMaximumValue () const 159254721Semaste { 160254721Semaste return m_max_value; 161254721Semaste } 162254721Semaste 163254721Semasteprotected: 164254721Semaste int64_t m_current_value; 165254721Semaste int64_t m_default_value; 166254721Semaste int64_t m_min_value; 167254721Semaste int64_t m_max_value; 168254721Semaste}; 169254721Semaste 170254721Semaste} // namespace lldb_private 171254721Semaste 172254721Semaste#endif // liblldb_OptionValueSInt64_h_ 173