OptionValueUInt64.cpp revision 288943
1254721Semaste//===-- OptionValueUInt64.cpp ------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#include "lldb/Interpreter/OptionValueUInt64.h" 11254721Semaste 12254721Semaste// C Includes 13254721Semaste// C++ Includes 14254721Semaste// Other libraries and framework includes 15254721Semaste// Project includes 16254721Semaste#include "lldb/Core/Stream.h" 17288943Sdim#include "lldb/Host/StringConvert.h" 18254721Semaste 19254721Semasteusing namespace lldb; 20254721Semasteusing namespace lldb_private; 21254721Semaste 22254721Semastelldb::OptionValueSP 23254721SemasteOptionValueUInt64::Create (const char *value_cstr, Error &error) 24254721Semaste{ 25254721Semaste lldb::OptionValueSP value_sp (new OptionValueUInt64()); 26288943Sdim error = value_sp->SetValueFromString (value_cstr); 27254721Semaste if (error.Fail()) 28254721Semaste value_sp.reset(); 29254721Semaste return value_sp; 30254721Semaste} 31254721Semaste 32254721Semaste 33254721Semastevoid 34254721SemasteOptionValueUInt64::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 35254721Semaste{ 36254721Semaste if (dump_mask & eDumpOptionType) 37254721Semaste strm.Printf ("(%s)", GetTypeAsCString ()); 38254721Semaste if (dump_mask & eDumpOptionValue) 39254721Semaste { 40254721Semaste if (dump_mask & eDumpOptionType) 41254721Semaste strm.PutCString (" = "); 42254721Semaste strm.Printf ("%" PRIu64, m_current_value); 43254721Semaste } 44254721Semaste} 45254721Semaste 46254721SemasteError 47288943SdimOptionValueUInt64::SetValueFromString (llvm::StringRef value_ref, VarSetOperationType op) 48254721Semaste{ 49254721Semaste Error error; 50254721Semaste switch (op) 51254721Semaste { 52254721Semaste case eVarSetOperationClear: 53254721Semaste Clear (); 54280031Sdim NotifyValueChanged(); 55254721Semaste break; 56254721Semaste 57254721Semaste case eVarSetOperationReplace: 58254721Semaste case eVarSetOperationAssign: 59254721Semaste { 60254721Semaste bool success = false; 61288943Sdim std::string value_str = value_ref.trim().str(); 62288943Sdim uint64_t value = StringConvert::ToUInt64 (value_str.c_str(), 0, 0, &success); 63254721Semaste if (success) 64254721Semaste { 65254721Semaste m_value_was_set = true; 66254721Semaste m_current_value = value; 67280031Sdim NotifyValueChanged(); 68254721Semaste } 69254721Semaste else 70254721Semaste { 71288943Sdim error.SetErrorStringWithFormat ("invalid uint64_t string value: '%s'", value_str.c_str()); 72254721Semaste } 73254721Semaste } 74254721Semaste break; 75254721Semaste 76254721Semaste case eVarSetOperationInsertBefore: 77254721Semaste case eVarSetOperationInsertAfter: 78254721Semaste case eVarSetOperationRemove: 79254721Semaste case eVarSetOperationAppend: 80254721Semaste case eVarSetOperationInvalid: 81288943Sdim error = OptionValue::SetValueFromString (value_ref, op); 82254721Semaste break; 83254721Semaste } 84254721Semaste return error; 85254721Semaste} 86254721Semaste 87254721Semastelldb::OptionValueSP 88254721SemasteOptionValueUInt64::DeepCopy () const 89254721Semaste{ 90254721Semaste return OptionValueSP(new OptionValueUInt64(*this)); 91254721Semaste} 92254721Semaste 93