1254721Semaste//===-- OptionValueArch.cpp ---------------------------------*- C++ -*-===// 2254721Semaste// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6254721Semaste// 7254721Semaste//===----------------------------------------------------------------------===// 8254721Semaste 9254721Semaste#include "lldb/Interpreter/OptionValueArch.h" 10254721Semaste 11254721Semaste#include "lldb/DataFormatters/FormatManager.h" 12254721Semaste#include "lldb/Interpreter/CommandCompletions.h" 13314564Sdim#include "lldb/Interpreter/CommandInterpreter.h" 14341825Sdim#include "lldb/Utility/Args.h" 15344779Sdim#include "lldb/Utility/State.h" 16254721Semaste 17254721Semasteusing namespace lldb; 18254721Semasteusing namespace lldb_private; 19254721Semaste 20314564Sdimvoid OptionValueArch::DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 21314564Sdim uint32_t dump_mask) { 22314564Sdim if (dump_mask & eDumpOptionType) 23314564Sdim strm.Printf("(%s)", GetTypeAsCString()); 24314564Sdim if (dump_mask & eDumpOptionValue) { 25254721Semaste if (dump_mask & eDumpOptionType) 26314564Sdim strm.PutCString(" = "); 27254721Semaste 28314564Sdim if (m_current_value.IsValid()) { 29314564Sdim const char *arch_name = m_current_value.GetArchitectureName(); 30314564Sdim if (arch_name) 31314564Sdim strm.PutCString(arch_name); 32254721Semaste } 33314564Sdim } 34254721Semaste} 35254721Semaste 36321369SdimStatus OptionValueArch::SetValueFromString(llvm::StringRef value, 37321369Sdim VarSetOperationType op) { 38321369Sdim Status error; 39314564Sdim switch (op) { 40314564Sdim case eVarSetOperationClear: 41314564Sdim Clear(); 42314564Sdim NotifyValueChanged(); 43314564Sdim break; 44314564Sdim 45314564Sdim case eVarSetOperationReplace: 46314564Sdim case eVarSetOperationAssign: { 47314564Sdim std::string value_str = value.trim().str(); 48314564Sdim if (m_current_value.SetTriple(value_str.c_str())) { 49314564Sdim m_value_was_set = true; 50314564Sdim NotifyValueChanged(); 51314564Sdim } else 52314564Sdim error.SetErrorStringWithFormat("unsupported architecture '%s'", 53314564Sdim value_str.c_str()); 54314564Sdim break; 55314564Sdim } 56314564Sdim case eVarSetOperationInsertBefore: 57314564Sdim case eVarSetOperationInsertAfter: 58314564Sdim case eVarSetOperationRemove: 59314564Sdim case eVarSetOperationAppend: 60314564Sdim case eVarSetOperationInvalid: 61314564Sdim error = OptionValue::SetValueFromString(value, op); 62314564Sdim break; 63314564Sdim } 64314564Sdim return error; 65254721Semaste} 66254721Semaste 67314564Sdimlldb::OptionValueSP OptionValueArch::DeepCopy() const { 68314564Sdim return OptionValueSP(new OptionValueArch(*this)); 69254721Semaste} 70254721Semaste 71360784Sdimvoid OptionValueArch::AutoComplete(CommandInterpreter &interpreter, 72360784Sdim CompletionRequest &request) { 73314564Sdim CommandCompletions::InvokeCommonCompletionCallbacks( 74341825Sdim interpreter, CommandCompletions::eArchitectureCompletion, request, 75341825Sdim nullptr); 76254721Semaste} 77