aboutsummaryrefslogtreecommitdiff
path: root/include/lldb/Interpreter/OptionValueUInt64.h
blob: 874e8ca166658fe4f4050e852fdace0b84f972a3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//===-- OptionValueUInt64.h --------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_OptionValueUInt64_h_
#define liblldb_OptionValueUInt64_h_

// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Interpreter/OptionValue.h"

namespace lldb_private {
    
class OptionValueUInt64 : public OptionValue
{
public:
    OptionValueUInt64 () :
        OptionValue(),
        m_current_value (0),
        m_default_value (0)
    {
    }

    OptionValueUInt64 (uint64_t value) :
        OptionValue(),
        m_current_value (value),
        m_default_value (value)
    {
    }

    OptionValueUInt64 (uint64_t current_value,
                       uint64_t default_value) :
        OptionValue(),
        m_current_value (current_value),
        m_default_value (default_value)
    {
    }
    
    ~OptionValueUInt64() override
    {
    }
    
    //---------------------------------------------------------------------
    // Decode a uint64_t from "value_cstr" return a OptionValueUInt64 object
    // inside of a lldb::OptionValueSP object if all goes well. If the 
    // string isn't a uint64_t value or any other error occurs, return an 
    // empty lldb::OptionValueSP and fill error in with the correct stuff.
    //---------------------------------------------------------------------
    static lldb::OptionValueSP
    Create (const char *value_cstr, Error &error);
    //---------------------------------------------------------------------
    // Virtual subclass pure virtual overrides
    //---------------------------------------------------------------------
    
    OptionValue::Type
    GetType() const override
    {
        return eTypeUInt64;
    }
    
    void
    DumpValue(const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) override;
    
    Error
    SetValueFromString(llvm::StringRef value,
		       VarSetOperationType op = eVarSetOperationAssign) override;
    
    bool
    Clear() override
    {
        m_current_value = m_default_value;
        m_value_was_set = false;
        return true;
    }
    
    lldb::OptionValueSP
    DeepCopy() const override;
    
    //---------------------------------------------------------------------
    // Subclass specific functions
    //---------------------------------------------------------------------
    
    const uint64_t &
    operator = (uint64_t value)
    {
        m_current_value = value;
        return m_current_value;
    }

    operator uint64_t () const
    {
        return m_current_value;
    }

    uint64_t
    GetCurrentValue() const
    {
        return m_current_value;
    }
    
    uint64_t
    GetDefaultValue() const
    {
        return m_default_value;
    }
    
    void
    SetCurrentValue (uint64_t value)
    {
        m_current_value = value;
    }
    
    void
    SetDefaultValue (uint64_t value)
    {
        m_default_value = value;
    }
    
protected:
    uint64_t m_current_value;
    uint64_t m_default_value;
};

} // namespace lldb_private

#endif // liblldb_OptionValueUInt64_h_