]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Interpreter/OptionValueUInt64.cpp
Update to zstd 1.3.2
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Interpreter / OptionValueUInt64.cpp
1 //===-- OptionValueUInt64.cpp ------------------------------------*- C++
2 //-*-===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10
11 #include "lldb/Interpreter/OptionValueUInt64.h"
12
13 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/Host/StringConvert.h"
18 #include "lldb/Utility/Stream.h"
19
20 using namespace lldb;
21 using namespace lldb_private;
22
23 lldb::OptionValueSP OptionValueUInt64::Create(llvm::StringRef value_str,
24                                               Status &error) {
25   lldb::OptionValueSP value_sp(new OptionValueUInt64());
26   error = value_sp->SetValueFromString(value_str);
27   if (error.Fail())
28     value_sp.reset();
29   return value_sp;
30 }
31
32 void OptionValueUInt64::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
33                                   uint32_t dump_mask) {
34   if (dump_mask & eDumpOptionType)
35     strm.Printf("(%s)", GetTypeAsCString());
36   if (dump_mask & eDumpOptionValue) {
37     if (dump_mask & eDumpOptionType)
38       strm.PutCString(" = ");
39     strm.Printf("%" PRIu64, m_current_value);
40   }
41 }
42
43 Status OptionValueUInt64::SetValueFromString(llvm::StringRef value_ref,
44                                              VarSetOperationType op) {
45   Status error;
46   switch (op) {
47   case eVarSetOperationClear:
48     Clear();
49     NotifyValueChanged();
50     break;
51
52   case eVarSetOperationReplace:
53   case eVarSetOperationAssign: {
54     bool success = false;
55     std::string value_str = value_ref.trim().str();
56     uint64_t value = StringConvert::ToUInt64(value_str.c_str(), 0, 0, &success);
57     if (success) {
58       m_value_was_set = true;
59       m_current_value = value;
60       NotifyValueChanged();
61     } else {
62       error.SetErrorStringWithFormat("invalid uint64_t string value: '%s'",
63                                      value_str.c_str());
64     }
65   } break;
66
67   case eVarSetOperationInsertBefore:
68   case eVarSetOperationInsertAfter:
69   case eVarSetOperationRemove:
70   case eVarSetOperationAppend:
71   case eVarSetOperationInvalid:
72     error = OptionValue::SetValueFromString(value_ref, op);
73     break;
74   }
75   return error;
76 }
77
78 lldb::OptionValueSP OptionValueUInt64::DeepCopy() const {
79   return OptionValueSP(new OptionValueUInt64(*this));
80 }