OptionValueUInt64.h revision 73844aa19a7360b662e2be710fc3c969d6c86606
1//===-- OptionValueUInt64.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_OptionValueUInt64_h_
11#define liblldb_OptionValueUInt64_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Interpreter/OptionValue.h"
18
19namespace lldb_private {
20
21class OptionValueUInt64 : public OptionValue
22{
23public:
24    OptionValueUInt64 () :
25        OptionValue(),
26        m_current_value (0),
27        m_default_value (0)
28    {
29    }
30
31    OptionValueUInt64 (uint64_t value) :
32        OptionValue(),
33        m_current_value (value),
34        m_default_value (value)
35    {
36    }
37
38    OptionValueUInt64 (uint64_t current_value,
39                       uint64_t default_value) :
40        OptionValue(),
41        m_current_value (current_value),
42        m_default_value (default_value)
43    {
44    }
45
46    virtual
47    ~OptionValueUInt64()
48    {
49    }
50
51    //---------------------------------------------------------------------
52    // Decode a uint64_t from "value_cstr" return a OptionValueUInt64 object
53    // inside of a lldb::OptionValueSP object if all goes well. If the
54    // string isn't a uint64_t value or any other error occurs, return an
55    // empty lldb::OptionValueSP and fill error in with the correct stuff.
56    //---------------------------------------------------------------------
57    static lldb::OptionValueSP
58    Create (const char *value_cstr, Error &error);
59    //---------------------------------------------------------------------
60    // Virtual subclass pure virtual overrides
61    //---------------------------------------------------------------------
62
63    virtual OptionValue::Type
64    GetType () const
65    {
66        return eTypeUInt64;
67    }
68
69    virtual void
70    DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask);
71
72    virtual Error
73    SetValueFromCString (const char *value,
74                         VarSetOperationType op = eVarSetOperationAssign);
75
76    virtual bool
77    Clear ()
78    {
79        m_current_value = m_default_value;
80        m_value_was_set = false;
81        return true;
82    }
83
84    virtual lldb::OptionValueSP
85    DeepCopy () const;
86
87    //---------------------------------------------------------------------
88    // Subclass specific functions
89    //---------------------------------------------------------------------
90
91    const uint64_t &
92    operator = (uint64_t value)
93    {
94        m_current_value = value;
95        return m_current_value;
96    }
97
98    operator uint64_t () const
99    {
100        return m_current_value;
101    }
102
103    uint64_t
104    GetCurrentValue() const
105    {
106        return m_current_value;
107    }
108
109    uint64_t
110    GetDefaultValue() const
111    {
112        return m_default_value;
113    }
114
115    void
116    SetCurrentValue (uint64_t value)
117    {
118        m_current_value = value;
119    }
120
121    void
122    SetDefaultValue (uint64_t value)
123    {
124        m_default_value = value;
125    }
126
127protected:
128    uint64_t m_current_value;
129    uint64_t m_default_value;
130};
131
132} // namespace lldb_private
133
134#endif  // liblldb_OptionValueUInt64_h_
135