1 //===-- OptionValueUInt64.cpp ---------------------------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 #include "lldb/Interpreter/OptionValueUInt64.h"
11 #include "lldb/Utility/Stream.h"
14 using namespace lldb_private
;
16 lldb::OptionValueSP
OptionValueUInt64::Create(llvm::StringRef value_str
,
18 lldb::OptionValueSP
value_sp(new OptionValueUInt64());
19 error
= value_sp
->SetValueFromString(value_str
);
25 void OptionValueUInt64::DumpValue(const ExecutionContext
*exe_ctx
, Stream
&strm
,
27 if (dump_mask
& eDumpOptionType
)
28 strm
.Printf("(%s)", GetTypeAsCString());
29 if (dump_mask
& eDumpOptionValue
) {
30 if (dump_mask
& eDumpOptionType
)
31 strm
.PutCString(" = ");
32 strm
.Printf("%" PRIu64
, m_current_value
);
36 Status
OptionValueUInt64::SetValueFromString(llvm::StringRef value_ref
,
37 VarSetOperationType op
) {
40 case eVarSetOperationClear
:
45 case eVarSetOperationReplace
:
46 case eVarSetOperationAssign
: {
47 llvm::StringRef value_trimmed
= value_ref
.trim();
49 if (llvm::to_integer(value_trimmed
, value
)) {
50 if (value
>= m_min_value
&& value
<= m_max_value
) {
51 m_value_was_set
= true;
52 m_current_value
= value
;
55 error
= Status::FromErrorStringWithFormat(
56 "%" PRIu64
" is out of range, valid values must be between %" PRIu64
58 value
, m_min_value
, m_max_value
);
61 error
= Status::FromErrorStringWithFormat(
62 "invalid uint64_t string value: '%s'", value_ref
.str().c_str());
66 case eVarSetOperationInsertBefore
:
67 case eVarSetOperationInsertAfter
:
68 case eVarSetOperationRemove
:
69 case eVarSetOperationAppend
:
70 case eVarSetOperationInvalid
:
71 error
= OptionValue::SetValueFromString(value_ref
, op
);