1abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton//===-- OptionGroupArchitecture.cpp -----------------------------*- C++ -*-===// 2abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 3abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// The LLVM Compiler Infrastructure 4abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 5abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// This file is distributed under the University of Illinois Open Source 6abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// License. See LICENSE.TXT for details. 7abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// 8abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton//===----------------------------------------------------------------------===// 9abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 10a0f34698c457091c0d15b8fdfbf638421b1283d4Johnny Chen#include "lldb/Interpreter/OptionGroupArchitecture.h" 11abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 12abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// C Includes 13abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// C++ Includes 14abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// Other libraries and framework includes 15abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton// Project includes 164003f57f86a92411f0563f355a32e8f86ae29d5aJohnny Chen#include "lldb/Utility/Utils.h" 17abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 18abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonusing namespace lldb; 19abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonusing namespace lldb_private; 20abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 21abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::OptionGroupArchitecture() : 22abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_arch_str () 23abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 24abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 25abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 26abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::~OptionGroupArchitecture () 27abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 28abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 29abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 3057b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonstatic OptionDefinition 3157b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytong_option_table[] = 32abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 334003f57f86a92411f0563f355a32e8f86ae29d5aJohnny Chen { LLDB_OPT_SET_1 , false, "arch" , 'a', required_argument, NULL, 0, eArgTypeArchitecture , "Specify the architecture for the target."}, 34abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton}; 3557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton 36abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonuint32_t 37abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::GetNumDefinitions () 38abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 3908af5983cb349e7167f3832d00d36ca611bfa2f1Johnny Chen return llvm::array_lengthof(g_option_table); 40abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 41abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 42abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonconst OptionDefinition * 43abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::GetDefinitions () 44abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 4557b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Clayton return g_option_table; 46abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 47abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 48abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonbool 49abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::GetArchitecture (Platform *platform, ArchSpec &arch) 50abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 51abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton if (m_arch_str.empty()) 52abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton arch.Clear(); 53abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton else 54abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton arch.SetTriple(m_arch_str.c_str(), platform); 55abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton return arch.IsValid(); 56abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 57abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 58abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 59abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonError 60abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::SetOptionValue (CommandInterpreter &interpreter, 61abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton uint32_t option_idx, 62abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton const char *option_arg) 63abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 64abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton Error error; 656475c42148a8ea1ca86e5db465db7eca742d897dGreg Clayton const int short_option = g_option_table[option_idx].short_option; 66abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 67abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton switch (short_option) 68abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton { 69abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton case 'a': 70abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_arch_str.assign (option_arg); 71abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton break; 72abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 73abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton default: 749c236733d43e6250c8a5671a438f4a2afeb9c0b2Greg Clayton error.SetErrorStringWithFormat ("unrecognized option '%c'", short_option); 75abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton break; 76abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton } 77abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 78abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton return error; 79abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 80abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 81abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Claytonvoid 82abe0fed36d83e1c37af9dae90c2d25db742b4515Greg ClaytonOptionGroupArchitecture::OptionParsingStarting (CommandInterpreter &interpreter) 83abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton{ 84abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton m_arch_str.clear(); 85abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton} 86abe0fed36d83e1c37af9dae90c2d25db742b4515Greg Clayton 87