• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- OptionValueSInt64.h --------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef liblldb_OptionValueSInt64_h_
11 #define liblldb_OptionValueSInt64_h_
12 
13 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/Interpreter/OptionValue.h"
18 
19 namespace lldb_private {
20 
21 class OptionValueSInt64 : public OptionValue
22 {
23 public:
OptionValueSInt64()24     OptionValueSInt64 () :
25         OptionValue(),
26         m_current_value (0),
27         m_default_value (0),
28         m_min_value (INT64_MIN),
29         m_max_value (INT64_MAX)
30     {
31     }
32 
OptionValueSInt64(int64_t value)33     OptionValueSInt64 (int64_t value) :
34         OptionValue(),
35         m_current_value (value),
36         m_default_value (value),
37         m_min_value (INT64_MIN),
38         m_max_value (INT64_MAX)
39     {
40     }
41 
OptionValueSInt64(int64_t current_value,int64_t default_value)42     OptionValueSInt64 (int64_t current_value,
43                        int64_t default_value) :
44         OptionValue(),
45         m_current_value (current_value),
46         m_default_value (default_value),
47         m_min_value (INT64_MIN),
48         m_max_value (INT64_MAX)
49     {
50     }
51 
OptionValueSInt64(const OptionValueSInt64 & rhs)52     OptionValueSInt64 (const OptionValueSInt64 &rhs) :
53         OptionValue(rhs),
54         m_current_value (rhs.m_current_value),
55         m_default_value (rhs.m_default_value),
56         m_min_value (rhs.m_min_value),
57         m_max_value (rhs.m_max_value)
58     {
59     }
60 
61     virtual
~OptionValueSInt64()62     ~OptionValueSInt64()
63     {
64     }
65 
66     //---------------------------------------------------------------------
67     // Virtual subclass pure virtual overrides
68     //---------------------------------------------------------------------
69 
70     virtual OptionValue::Type
GetType()71     GetType () const
72     {
73         return eTypeSInt64;
74     }
75 
76     virtual void
77     DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
78 
79     virtual Error
80     SetValueFromCString (const char *value,
81                          VarSetOperationType op = eVarSetOperationAssign);
82 
83     virtual bool
Clear()84     Clear ()
85     {
86         m_current_value = m_default_value;
87         m_value_was_set = false;
88         return true;
89     }
90 
91     virtual lldb::OptionValueSP
92     DeepCopy () const;
93 
94     //---------------------------------------------------------------------
95     // Subclass specific functions
96     //---------------------------------------------------------------------
97 
98     const int64_t &
99     operator = (int64_t value)
100     {
101         m_current_value = value;
102         return m_current_value;
103     }
104 
105     int64_t
GetCurrentValue()106     GetCurrentValue() const
107     {
108         return m_current_value;
109     }
110 
111     int64_t
GetDefaultValue()112     GetDefaultValue() const
113     {
114         return m_default_value;
115     }
116 
117     bool
SetCurrentValue(int64_t value)118     SetCurrentValue (int64_t value)
119     {
120         if (value >= m_min_value && value <= m_max_value)
121         {
122             m_current_value = value;
123             return true;
124         }
125         return false;
126     }
127 
128     bool
SetDefaultValue(int64_t value)129     SetDefaultValue (int64_t value)
130     {
131         if (value >= m_min_value && value <= m_max_value)
132         {
133             m_default_value = value;
134             return true;
135         }
136         return false;
137     }
138 
139     void
SetMinimumValue(int64_t v)140     SetMinimumValue (int64_t v)
141     {
142         m_min_value = v;
143     }
144 
145     int64_t
GetMinimumValue()146     GetMinimumValue () const
147     {
148         return m_min_value;
149     }
150 
151     void
SetMaximumValue(int64_t v)152     SetMaximumValue (int64_t v)
153     {
154         m_max_value = v;
155     }
156 
157     int64_t
GetMaximumValue()158     GetMaximumValue () const
159     {
160         return m_max_value;
161     }
162 
163 protected:
164     int64_t m_current_value;
165     int64_t m_default_value;
166     int64_t m_min_value;
167     int64_t m_max_value;
168 };
169 
170 } // namespace lldb_private
171 
172 #endif  // liblldb_OptionValueSInt64_h_
173