LLDB
mainline
llvm-project
lldb
source
Interpreter
OptionValueUInt64.cpp
Go to the documentation of this file.
1
//===-- OptionValueUInt64.cpp ---------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "
lldb/Interpreter/OptionValueUInt64.h
"
10
11
#include "
lldb/Interpreter/OptionValue.h
"
12
#include "
lldb/Utility/Stream.h
"
13
14
using namespace
lldb
;
15
using namespace
lldb_private
;
16
17
lldb::OptionValueSP
OptionValueUInt64::Create
(llvm::StringRef value_str,
18
Status
&
error
) {
19
lldb::OptionValueSP
value_sp(
new
OptionValueUInt64
());
20
error
= value_sp->SetValueFromString(value_str);
21
if
(
error
.Fail())
22
value_sp.reset();
23
return
value_sp;
24
}
25
26
void
OptionValueUInt64::DumpValue
(
const
ExecutionContext
*exe_ctx,
Stream
&strm,
27
uint32_t dump_mask) {
28
if
(dump_mask &
eDumpOptionType
)
29
strm.
Printf
(
"(%s)"
,
GetTypeAsCString
());
30
if
(dump_mask &
eDumpOptionValue
) {
31
if
(dump_mask &
eDumpOptionType
)
32
strm.
PutCString
(
" = "
);
33
strm.
Printf
(
"%"
PRIu64,
m_current_value
);
34
if
(dump_mask &
eDumpOptionDefaultValue
&&
35
m_current_value
!=
m_default_value
) {
36
DefaultValueFormat
label(strm);
37
strm.
Printf
(
"%"
PRIu64,
m_default_value
);
38
}
39
}
40
}
41
42
Status
OptionValueUInt64::SetValueFromString
(llvm::StringRef value_ref,
43
VarSetOperationType
op) {
44
Status
error
;
45
switch
(op) {
46
case
eVarSetOperationClear
:
47
Clear
();
48
NotifyValueChanged
();
49
break
;
50
51
case
eVarSetOperationReplace
:
52
case
eVarSetOperationAssign
: {
53
llvm::StringRef value_trimmed = value_ref.trim();
54
uint64_t value;
55
if
(llvm::to_integer(value_trimmed, value)) {
56
if
(value >=
m_min_value
&& value <=
m_max_value
) {
57
m_value_was_set
=
true
;
58
m_current_value
= value;
59
NotifyValueChanged
();
60
}
else
{
61
error
=
Status::FromErrorStringWithFormat
(
62
"%"
PRIu64
" is out of range, valid values must be between %"
PRIu64
63
" and %"
PRIu64
"."
,
64
value,
m_min_value
,
m_max_value
);
65
}
66
}
else
{
67
error
=
Status::FromErrorStringWithFormat
(
68
"invalid uint64_t string value: '%s'"
, value_ref.str().c_str());
69
}
70
}
break
;
71
72
case
eVarSetOperationInsertBefore
:
73
case
eVarSetOperationInsertAfter
:
74
case
eVarSetOperationRemove
:
75
case
eVarSetOperationAppend
:
76
case
eVarSetOperationInvalid
:
77
error
=
OptionValue::SetValueFromString
(value_ref, op);
78
break
;
79
}
80
return
error
;
81
}
error
static llvm::raw_ostream & error(Stream &strm)
Definition
CommandReturnObject.cpp:18
OptionValueUInt64.h
OptionValue.h
Stream.h
lldb_private::ExecutionContext
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
Definition
ExecutionContext.h:293
lldb_private::OptionValueUInt64::m_default_value
uint64_t m_default_value
Definition
OptionValueUInt64.h:92
lldb_private::OptionValueUInt64::OptionValueUInt64
OptionValueUInt64()=default
lldb_private::OptionValueUInt64::m_current_value
uint64_t m_current_value
Definition
OptionValueUInt64.h:91
lldb_private::OptionValueUInt64::Create
static lldb::OptionValueSP Create(llvm::StringRef value_str, Status &error)
Definition
OptionValueUInt64.cpp:17
lldb_private::OptionValueUInt64::SetValueFromString
Status SetValueFromString(llvm::StringRef value, VarSetOperationType op=eVarSetOperationAssign) override
Definition
OptionValueUInt64.cpp:42
lldb_private::OptionValueUInt64::DumpValue
void DumpValue(const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) override
Definition
OptionValueUInt64.cpp:26
lldb_private::OptionValueUInt64::Clear
void Clear() override
Definition
OptionValueUInt64.h:49
lldb_private::OptionValueUInt64::m_max_value
uint64_t m_max_value
Definition
OptionValueUInt64.h:94
lldb_private::OptionValueUInt64::m_min_value
uint64_t m_min_value
Definition
OptionValueUInt64.h:93
lldb_private::OptionValue::DefaultValueFormat
Definition
OptionValue.h:343
lldb_private::OptionValue::SetValueFromString
virtual Status SetValueFromString(llvm::StringRef value, VarSetOperationType op=eVarSetOperationAssign)
Definition
OptionValue.cpp:609
lldb_private::OptionValue::m_value_was_set
bool m_value_was_set
Definition
OptionValue.h:359
lldb_private::OptionValue::NotifyValueChanged
void NotifyValueChanged()
Definition
OptionValue.h:262
lldb_private::OptionValue::GetTypeAsCString
virtual const char * GetTypeAsCString() const
Definition
OptionValue.h:89
lldb_private::OptionValue::eDumpOptionType
@ eDumpOptionType
Definition
OptionValue.h:60
lldb_private::OptionValue::eDumpOptionDefaultValue
@ eDumpOptionDefaultValue
Definition
OptionValue.h:65
lldb_private::OptionValue::eDumpOptionValue
@ eDumpOptionValue
Definition
OptionValue.h:61
lldb_private::Status
An error handling class.
Definition
Status.h:118
lldb_private::Status::FromErrorStringWithFormat
static Status FromErrorStringWithFormat(const char *format,...) __attribute__((format(printf
Definition
Status.cpp:106
lldb_private::Stream
A stream class that can stream formatted output to a file.
Definition
Stream.h:28
lldb_private::Stream::Printf
size_t Printf(const char *format,...) __attribute__((format(printf
Output printf formatted output to the stream.
Definition
Stream.cpp:134
lldb_private::Stream::PutCString
size_t PutCString(llvm::StringRef cstr)
Output a C string to the stream.
Definition
Stream.cpp:65
lldb_private
A class that represents a running process on the host machine.
Definition
SBAddressRange.h:14
lldb_private::VarSetOperationType
VarSetOperationType
Settable state variable types.
Definition
lldb-private-enumerations.h:86
lldb_private::eVarSetOperationRemove
@ eVarSetOperationRemove
Definition
lldb-private-enumerations.h:90
lldb_private::eVarSetOperationAppend
@ eVarSetOperationAppend
Definition
lldb-private-enumerations.h:91
lldb_private::eVarSetOperationAssign
@ eVarSetOperationAssign
Definition
lldb-private-enumerations.h:93
lldb_private::eVarSetOperationReplace
@ eVarSetOperationReplace
Definition
lldb-private-enumerations.h:87
lldb_private::eVarSetOperationInvalid
@ eVarSetOperationInvalid
Definition
lldb-private-enumerations.h:94
lldb_private::eVarSetOperationInsertBefore
@ eVarSetOperationInsertBefore
Definition
lldb-private-enumerations.h:88
lldb_private::eVarSetOperationClear
@ eVarSetOperationClear
Definition
lldb-private-enumerations.h:92
lldb_private::eVarSetOperationInsertAfter
@ eVarSetOperationInsertAfter
Definition
lldb-private-enumerations.h:89
lldb
Definition
SBAddress.h:15
lldb::OptionValueSP
std::shared_ptr< lldb_private::OptionValue > OptionValueSP
Definition
lldb-forward.h:388
Generated on
for LLDB by
1.14.0