Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/Interpreter/OptionValueSInt64.cpp
39587 views
1
//===-- OptionValueSInt64.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/OptionValueSInt64.h"
10
11
#include "lldb/Utility/Stream.h"
12
13
using namespace lldb;
14
using namespace lldb_private;
15
16
void OptionValueSInt64::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
17
uint32_t dump_mask) {
18
// printf ("%p: DumpValue (exe_ctx=%p, strm, mask) m_current_value = %"
19
// PRIi64
20
// "\n", this, exe_ctx, m_current_value);
21
if (dump_mask & eDumpOptionType)
22
strm.Printf("(%s)", GetTypeAsCString());
23
// if (dump_mask & eDumpOptionName)
24
// DumpQualifiedName (strm);
25
if (dump_mask & eDumpOptionValue) {
26
if (dump_mask & eDumpOptionType)
27
strm.PutCString(" = ");
28
strm.Printf("%" PRIi64, m_current_value);
29
}
30
}
31
32
Status OptionValueSInt64::SetValueFromString(llvm::StringRef value_ref,
33
VarSetOperationType op) {
34
Status error;
35
switch (op) {
36
case eVarSetOperationClear:
37
Clear();
38
NotifyValueChanged();
39
break;
40
41
case eVarSetOperationReplace:
42
case eVarSetOperationAssign: {
43
llvm::StringRef value_trimmed = value_ref.trim();
44
int64_t value;
45
if (llvm::to_integer(value_trimmed, value)) {
46
if (value >= m_min_value && value <= m_max_value) {
47
m_value_was_set = true;
48
m_current_value = value;
49
NotifyValueChanged();
50
} else
51
error.SetErrorStringWithFormat(
52
"%" PRIi64 " is out of range, valid values must be between %" PRIi64
53
" and %" PRIi64 ".",
54
value, m_min_value, m_max_value);
55
} else {
56
error.SetErrorStringWithFormat("invalid int64_t string value: '%s'",
57
value_ref.str().c_str());
58
}
59
} break;
60
61
case eVarSetOperationInsertBefore:
62
case eVarSetOperationInsertAfter:
63
case eVarSetOperationRemove:
64
case eVarSetOperationAppend:
65
case eVarSetOperationInvalid:
66
error = OptionValue::SetValueFromString(value_ref, op);
67
break;
68
}
69
return error;
70
}
71
72