1 //===-- OptionGroupArchitecture.cpp -----------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Interpreter/OptionGroupArchitecture.h"
14 // Other libraries and framework includes
16 #include "lldb/Host/OptionParser.h"
19 using namespace lldb_private;
21 OptionGroupArchitecture::OptionGroupArchitecture() : m_arch_str() {}
23 OptionGroupArchitecture::~OptionGroupArchitecture() {}
25 static OptionDefinition g_option_table[] = {
26 {LLDB_OPT_SET_1, false, "arch", 'a', OptionParser::eRequiredArgument,
27 nullptr, nullptr, 0, eArgTypeArchitecture,
28 "Specify the architecture for the target."},
31 llvm::ArrayRef<OptionDefinition> OptionGroupArchitecture::GetDefinitions() {
32 return llvm::makeArrayRef(g_option_table);
35 bool OptionGroupArchitecture::GetArchitecture(Platform *platform,
37 if (m_arch_str.empty())
40 arch.SetTriple(m_arch_str.c_str(), platform);
41 return arch.IsValid();
45 OptionGroupArchitecture::SetOptionValue(uint32_t option_idx,
46 llvm::StringRef option_arg,
47 ExecutionContext *execution_context) {
49 const int short_option = g_option_table[option_idx].short_option;
51 switch (short_option) {
53 m_arch_str.assign(option_arg);
57 error.SetErrorStringWithFormat("unrecognized option '%c'", short_option);
64 void OptionGroupArchitecture::OptionParsingStarting(
65 ExecutionContext *execution_context) {