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