OptionValueUInt64.cpp revision 5f35a4be95aed0e5b2cb36f7d785bcbfc67284ae
173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueUInt64.cpp ------------------------------------*- C++ -*-===// 273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// The LLVM Compiler Infrastructure 473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// This file is distributed under the University of Illinois Open Source 673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// License. See LICENSE.TXT for details. 773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===----------------------------------------------------------------------===// 973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValueUInt64.h" 1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes 1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes 1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes 1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes 1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Core/Stream.h" 1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/Args.h" 1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1973844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonusing namespace lldb; 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonusing namespace lldb_private; 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonlldb::OptionValueSP 2373844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueUInt64::Create (const char *value_cstr, Error &error) 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton lldb::OptionValueSP value_sp (new OptionValueUInt64()); 2673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton error = value_sp->SetValueFromCString (value_cstr); 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (error.Fail()) 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton value_sp.reset(); 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return value_sp; 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonvoid 3473844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueUInt64::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & eDumpOptionType) 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.Printf ("(%s)", GetTypeAsCString ()); 3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & eDumpOptionValue) 3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (dump_mask & eDumpOptionType) 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton strm.PutCString (" = "); 425f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea strm.Printf ("%" PRIu64, m_current_value); 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4673844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonError 4773844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueUInt64::SetValueFromCString (const char *value_cstr, VarSetOperationType op) 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Error error; 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton switch (op) 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationClear: 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Clear (); 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationReplace: 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationAssign: 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool success = false; 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton uint64_t value = Args::StringToUInt64 (value_cstr, 0, 0, &success); 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (success) 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set = true; 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value = value; 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton else 6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton error.SetErrorStringWithFormat ("invalid uint64_t string value: '%s'", value_cstr); 6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationInsertBefore: 7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationInsertAfter: 7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationRemove: 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationAppend: 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton case eVarSetOperationInvalid: 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton error = OptionValue::SetValueFromCString (value_cstr, op); 7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton break; 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return error; 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonlldb::OptionValueSP 8573844aa19a7360b662e2be710fc3c969d6c86606Greg ClaytonOptionValueUInt64::DeepCopy () const 8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return OptionValueSP(new OptionValueUInt64(*this)); 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 90