1 //===-- OptionValueUInt64.cpp ------------------------------------*- C++
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Interpreter/OptionValueUInt64.h"
12 #include "lldb/Host/StringConvert.h"
13 #include "lldb/Utility/Stream.h"
16 using namespace lldb_private;
18 lldb::OptionValueSP OptionValueUInt64::Create(llvm::StringRef value_str,
20 lldb::OptionValueSP value_sp(new OptionValueUInt64());
21 error = value_sp->SetValueFromString(value_str);
27 void OptionValueUInt64::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
29 if (dump_mask & eDumpOptionType)
30 strm.Printf("(%s)", GetTypeAsCString());
31 if (dump_mask & eDumpOptionValue) {
32 if (dump_mask & eDumpOptionType)
33 strm.PutCString(" = ");
34 strm.Printf("%" PRIu64, m_current_value);
38 Status OptionValueUInt64::SetValueFromString(llvm::StringRef value_ref,
39 VarSetOperationType op) {
42 case eVarSetOperationClear:
47 case eVarSetOperationReplace:
48 case eVarSetOperationAssign: {
50 std::string value_str = value_ref.trim().str();
51 uint64_t value = StringConvert::ToUInt64(value_str.c_str(), 0, 0, &success);
53 m_value_was_set = true;
54 m_current_value = value;
57 error.SetErrorStringWithFormat("invalid uint64_t string value: '%s'",
62 case eVarSetOperationInsertBefore:
63 case eVarSetOperationInsertAfter:
64 case eVarSetOperationRemove:
65 case eVarSetOperationAppend:
66 case eVarSetOperationInvalid:
67 error = OptionValue::SetValueFromString(value_ref, op);
73 lldb::OptionValueSP OptionValueUInt64::DeepCopy() const {
74 return OptionValueSP(new OptionValueUInt64(*this));