summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/Interpreter/CommandAlias.cpp52
-rw-r--r--lldb/source/Interpreter/CommandInterpreter.cpp27
2 files changed, 53 insertions, 26 deletions
diff --git a/lldb/source/Interpreter/CommandAlias.cpp b/lldb/source/Interpreter/CommandAlias.cpp
index 10dc84a2c3d..ffdb3e92ad5 100644
--- a/lldb/source/Interpreter/CommandAlias.cpp
+++ b/lldb/source/Interpreter/CommandAlias.cpp
@@ -9,6 +9,8 @@
#include "lldb/Interpreter/CommandAlias.h"
+#include "llvm/Support/ErrorHandling.h"
+
#include "lldb/Core/StreamString.h"
#include "lldb/Interpreter/CommandObject.h"
#include "lldb/Interpreter/CommandReturnObject.h"
@@ -70,22 +72,48 @@ ProcessAliasOptionsArgs (lldb::CommandObjectSP &cmd_obj_sp,
return success;
}
-CommandAlias::UniquePointer
-CommandAlias::GetCommandAlias (lldb::CommandObjectSP cmd_sp,
- const char *options_args)
+CommandAlias::CommandAlias (CommandInterpreter &interpreter,
+ lldb::CommandObjectSP cmd_sp,
+ const char *options_args,
+ const char *name,
+ const char *help,
+ const char *syntax,
+ uint32_t flags) :
+ CommandObject(interpreter,
+ name,
+ help,
+ syntax,
+ flags),
+m_underlying_command_sp(),
+m_option_args_sp(new OptionArgVector)
+{
+ if (ProcessAliasOptionsArgs(cmd_sp, options_args, m_option_args_sp))
+ {
+ m_underlying_command_sp = cmd_sp;
+ if (!help || !help[0])
+ {
+ StreamString sstr;
+ StreamString translation_and_help;
+ GetAliasExpansion(sstr);
+
+ translation_and_help.Printf ("(%s) %s", sstr.GetData(), GetUnderlyingCommand()->GetHelp());
+ SetHelp(translation_and_help.GetData());
+ }
+ }
+}
+
+bool
+CommandAlias::WantsRawCommandString()
{
- CommandAlias::UniquePointer ret_val(nullptr);
- OptionArgVectorSP opt_args_sp(new OptionArgVector);
- if (ProcessAliasOptionsArgs(cmd_sp, options_args, opt_args_sp))
- ret_val.reset(new CommandAlias(cmd_sp, opt_args_sp));
- return ret_val;
+ if (IsValid())
+ return m_underlying_command_sp->WantsRawCommandString();
+ return false;
}
-CommandAlias::CommandAlias (lldb::CommandObjectSP cmd_sp,
- OptionArgVectorSP args_sp) :
-m_underlying_command_sp(cmd_sp),
-m_option_args_sp(args_sp)
+bool
+CommandAlias::Execute(const char *args_string, CommandReturnObject &result)
{
+ llvm_unreachable("CommandAlias::Execute is not to be called");
}
void
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index ec43fd6fabd..ffe5a57e94d 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -772,7 +772,7 @@ CommandInterpreter::GetCommandSP (const char *cmd_cstr, bool include_aliases, bo
{
CommandAliasMap::iterator alias_pos = m_alias_dict.find(cmd);
if (alias_pos != m_alias_dict.end())
- command_sp = alias_pos->second->GetUnderlyingCommand();
+ command_sp = ((CommandAlias*)alias_pos->second.get())->GetUnderlyingCommand();
}
if (HasUserCommands())
@@ -823,7 +823,7 @@ CommandInterpreter::GetCommandSP (const char *cmd_cstr, bool include_aliases, bo
cmd.assign(matches->GetStringAtIndex (num_cmd_matches));
CommandAliasMap::iterator alias_pos = m_alias_dict.find(cmd);
if (alias_pos != m_alias_dict.end())
- alias_match_sp = alias_pos->second->GetUnderlyingCommand();
+ alias_match_sp = ((CommandAlias*)alias_pos->second.get())->GetUnderlyingCommand();
}
if (HasUserCommands())
@@ -1057,11 +1057,17 @@ CommandInterpreter::AddAlias (const char *alias_name,
if (command_obj_sp.get())
assert((this == &command_obj_sp->GetCommandInterpreter()) && "tried to add a CommandObject from a different interpreter");
- if (auto cmd_alias = CommandAlias::GetCommandAlias(command_obj_sp, args_string))
+ std::unique_ptr<CommandAlias> command_alias_up(new CommandAlias(*this,
+ command_obj_sp,
+ args_string,
+ alias_name));
+
+ if (command_alias_up && command_alias_up->IsValid())
{
- m_alias_dict[alias_name] = std::move(cmd_alias);
+ m_alias_dict[alias_name] = CommandObjectSP(command_alias_up.release());
return true;
}
+
return false;
}
@@ -1144,15 +1150,8 @@ CommandInterpreter::GetHelp (CommandReturnObject &result,
for (auto alias_pos = m_alias_dict.begin(); alias_pos != m_alias_dict.end(); ++alias_pos)
{
- StreamString sstr;
- StreamString translation_and_help;
- std::string entry_name = alias_pos->first;
- std::string second_entry = alias_pos->second->GetUnderlyingCommand()->GetCommandName();
- alias_pos->second->GetAliasExpansion(sstr);
-
- translation_and_help.Printf ("(%s) %s", sstr.GetData(), alias_pos->second->GetUnderlyingCommand()->GetHelp());
- OutputFormattedHelpText (result.GetOutputStream(), alias_pos->first.c_str(), "--",
- translation_and_help.GetData(), max_len);
+ OutputFormattedHelpText (result.GetOutputStream(), alias_pos->first.c_str(), "--", alias_pos->second->GetHelp(),
+ max_len);
}
result.AppendMessage("");
}
@@ -1996,7 +1995,7 @@ CommandInterpreter::GetAlias (const char *alias_name)
auto pos = m_alias_dict.find(alias);
if (pos != m_alias_dict.end())
- return pos->second.get();
+ return (CommandAlias*)pos->second.get();
return nullptr;
}
OpenPOWER on IntegriCloud