OptionValueArch.cpp revision 344779
1254721Semaste//===-- OptionValueArch.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/OptionValueArch.h" 11254721Semaste 12254721Semaste#include "lldb/DataFormatters/FormatManager.h" 13254721Semaste#include "lldb/Interpreter/CommandCompletions.h" 14314564Sdim#include "lldb/Interpreter/CommandInterpreter.h" 15341825Sdim#include "lldb/Utility/Args.h" 16344779Sdim#include "lldb/Utility/State.h" 17254721Semaste 18254721Semasteusing namespace lldb; 19254721Semasteusing namespace lldb_private; 20254721Semaste 21314564Sdimvoid OptionValueArch::DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 22314564Sdim uint32_t dump_mask) { 23314564Sdim if (dump_mask & eDumpOptionType) 24314564Sdim strm.Printf("(%s)", GetTypeAsCString()); 25314564Sdim if (dump_mask & eDumpOptionValue) { 26254721Semaste if (dump_mask & eDumpOptionType) 27314564Sdim strm.PutCString(" = "); 28254721Semaste 29314564Sdim if (m_current_value.IsValid()) { 30314564Sdim const char *arch_name = m_current_value.GetArchitectureName(); 31314564Sdim if (arch_name) 32314564Sdim strm.PutCString(arch_name); 33254721Semaste } 34314564Sdim } 35254721Semaste} 36254721Semaste 37321369SdimStatus OptionValueArch::SetValueFromString(llvm::StringRef value, 38321369Sdim VarSetOperationType op) { 39321369Sdim Status error; 40314564Sdim switch (op) { 41314564Sdim case eVarSetOperationClear: 42314564Sdim Clear(); 43314564Sdim NotifyValueChanged(); 44314564Sdim break; 45314564Sdim 46314564Sdim case eVarSetOperationReplace: 47314564Sdim case eVarSetOperationAssign: { 48314564Sdim std::string value_str = value.trim().str(); 49314564Sdim if (m_current_value.SetTriple(value_str.c_str())) { 50314564Sdim m_value_was_set = true; 51314564Sdim NotifyValueChanged(); 52314564Sdim } else 53314564Sdim error.SetErrorStringWithFormat("unsupported architecture '%s'", 54314564Sdim value_str.c_str()); 55314564Sdim break; 56314564Sdim } 57314564Sdim case eVarSetOperationInsertBefore: 58314564Sdim case eVarSetOperationInsertAfter: 59314564Sdim case eVarSetOperationRemove: 60314564Sdim case eVarSetOperationAppend: 61314564Sdim case eVarSetOperationInvalid: 62314564Sdim error = OptionValue::SetValueFromString(value, op); 63314564Sdim break; 64314564Sdim } 65314564Sdim return error; 66254721Semaste} 67254721Semaste 68314564Sdimlldb::OptionValueSP OptionValueArch::DeepCopy() const { 69314564Sdim return OptionValueSP(new OptionValueArch(*this)); 70254721Semaste} 71254721Semaste 72314564Sdimsize_t OptionValueArch::AutoComplete(CommandInterpreter &interpreter, 73341825Sdim CompletionRequest &request) { 74341825Sdim request.SetWordComplete(false); 75314564Sdim CommandCompletions::InvokeCommonCompletionCallbacks( 76341825Sdim interpreter, CommandCompletions::eArchitectureCompletion, request, 77341825Sdim nullptr); 78341825Sdim return request.GetNumberOfMatches(); 79254721Semaste} 80