11#include "llvm/ADT/STLExtras.h"
12#include "llvm/Support/ErrorHandling.h"
13#include "llvm/Support/FormatAdapters.h"
26 llvm::StringRef options_args,
30 if (options_args.size() < 1)
31 return llvm::Error::success();
33 Args args(options_args);
34 std::string options_string(options_args);
36 Options *options = cmd_obj_sp->GetOptions();
41 cmd_obj_sp->GetCommandInterpreter().GetExecutionContext();
44 llvm::Expected<Args> args_or =
45 options->
ParseAlias(args, option_arg_vector, options_string);
47 return llvm::createStringError(
48 llvm::formatv(
"unable to create alias: {0}",
49 llvm::fmt_consume(args_or.takeError())));
50 args = std::move(*args_or);
55 if (!options_string.empty()) {
56 if (cmd_obj_sp->WantsRawCommandString()) {
60 for (
auto &entry : args.
entries()) {
61 if (!entry.ref().empty())
62 option_arg_vector->emplace_back(
64 std::string(entry.ref()));
69 return llvm::Error::success();
74 llvm::StringRef options_args, llvm::StringRef name,
75 llvm::StringRef help, llvm::StringRef syntax,
82 if (llvm::Error
error =
86 "ProcessAliasOptionsArgs failed: {0}");
99 translation_and_help.
Printf(
139 llvm_unreachable(
"CommandAlias::Execute is not to be called");
144 help_string.
Printf(
"'%*s", (
int)command_name.size(), command_name.data());
155 for (
const auto &opt_entry : *options) {
156 std::tie(opt, std::ignore, value) = opt_entry;
158 help_string.
Printf(
" %s", value.c_str());
160 help_string.
Printf(
" %s", opt.c_str());
163 help_string.
Printf(
" %s", value.c_str());
182 std::tie(opt, std::ignore, value) = opt_entry;
184 llvm::StringRef(value).ends_with(
"--")) {
208 return {
nullptr,
nullptr};
210 if (underlying->IsAlias()) {
213 auto desugared = ((
CommandAlias *)underlying.get())->Desugar();
215 llvm::append_range(*options, *desugared.second);
217 return {desugared.first, options};
240 return llvm::StringRef();
248 return llvm::StringRef();
static llvm::Error ProcessAliasOptionsArgs(lldb::CommandObjectSP &cmd_obj_sp, llvm::StringRef options_args, OptionArgVectorSP &option_arg_vector_sp)
static llvm::raw_ostream & error(Stream &strm)
#define LLDB_LOG_ERROR(log, error,...)
A command line argument class.
llvm::ArrayRef< ArgEntry > entries() const
lldb::CommandObjectSP GetUnderlyingCommand()
llvm::StringRef GetHelpLong() override
void HandleCompletion(CompletionRequest &request) override
This default version handles calling option argument completions and then calls HandleArgumentComplet...
LazyBool m_is_dashdash_alias
void Execute(const char *args_string, CommandReturnObject &result) override
OptionArgVectorSP GetOptionArguments() const
bool WantsCompletion() override
OptionArgVectorSP m_option_args_sp
Options * GetOptions() override
void SetHelp(llvm::StringRef str) override
bool WantsRawCommandString() override
void GetAliasExpansion(StreamString &help_string) const
void SetHelpLong(llvm::StringRef str) override
std::pair< lldb::CommandObjectSP, OptionArgVectorSP > Desugar()
void HandleArgumentCompletion(CompletionRequest &request, OptionElementVector &opt_element_vector) override
The default version handles argument definitions that have only one argument type,...
CommandAlias(CommandInterpreter &interpreter, lldb::CommandObjectSP cmd_sp, llvm::StringRef options_args, llvm::StringRef name, llvm::StringRef help=llvm::StringRef(), llvm::StringRef syntax=llvm::StringRef(), uint32_t flags=0)
lldb::CommandObjectSP m_underlying_command_sp
llvm::StringRef GetHelp() override
std::string m_option_string
bool IsDashDashCommand() override
static const char * g_no_argument
static const char * g_need_argument
static const char * g_argument
virtual void SetHelpLong(llvm::StringRef str)
std::vector< CommandArgumentEntry > m_arguments
std::string m_cmd_help_long
CommandObject(CommandInterpreter &interpreter, llvm::StringRef name, llvm::StringRef help="", llvm::StringRef syntax="", uint32_t flags=0)
std::string m_cmd_help_short
virtual void SetHelp(llvm::StringRef str)
"lldb/Utility/ArgCompletionRequest.h"
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
A command line option parsing protocol class.
llvm::Error VerifyPartialOptions()
void NotifyOptionParsingStarting(ExecutionContext *execution_context)
llvm::Expected< Args > ParseAlias(const Args &args, OptionArgVector *option_arg_vector, std::string &input_line)
const char * GetData() const
llvm::StringRef GetString() const
size_t Printf(const char *format,...) __attribute__((format(printf
Output printf formatted output to the stream.
A class that represents a running process on the host machine.
Log * GetLog(Cat mask)
Retrieve the Log object for the channel associated with the given log enum.
std::vector< OptionArgElement > OptionElementVector
std::shared_ptr< OptionArgVector > OptionArgVectorSP
std::vector< std::tuple< std::string, int, std::string > > OptionArgVector
std::shared_ptr< lldb_private::CommandObject > CommandObjectSP