llvm-capstone/lldb/source/Commands/CommandObjectHelp.h
Enrico Granata 46d4aa211f When 'help' cannot find a command, produce additional help text that also points the user to the apropos and type lookup commands
This is useful in cases such as, e.g.

(lldb) help NSString
(the user meant type lookup)

or

(lldb) help kill
(the user is looking for process kill)

Fixes rdar://24868537

llvm-svn: 262271
2016-02-29 23:22:53 +00:00

130 lines
3.5 KiB
C++

//===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_CommandObjectHelp_h_
#define liblldb_CommandObjectHelp_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Interpreter/CommandObject.h"
#include "lldb/Interpreter/Options.h"
namespace lldb_private {
//-------------------------------------------------------------------------
// CommandObjectHelp
//-------------------------------------------------------------------------
class CommandObjectHelp : public CommandObjectParsed
{
public:
CommandObjectHelp (CommandInterpreter &interpreter);
~CommandObjectHelp() override;
int
HandleCompletion(Args &input,
int &cursor_index,
int &cursor_char_position,
int match_start_point,
int max_return_elements,
bool &word_complete,
StringList &matches) override;
static void
GenerateAdditionalHelpAvenuesMessage (Stream *s,
const char* command,
const char* prefix = nullptr,
const char* subcommand = nullptr,
bool include_apropos = true,
bool include_type_lookup = true);
class CommandOptions : public Options
{
public:
CommandOptions (CommandInterpreter &interpreter) :
Options (interpreter)
{
}
~CommandOptions() override {}
Error
SetOptionValue(uint32_t option_idx, const char *option_arg) override
{
Error error;
const int short_option = m_getopt_table[option_idx].val;
switch (short_option)
{
case 'a':
m_show_aliases = false;
break;
case 'u':
m_show_user_defined = false;
break;
case 'h':
m_show_hidden = true;
break;
default:
error.SetErrorStringWithFormat ("unrecognized option '%c'", short_option);
break;
}
return error;
}
void
OptionParsingStarting() override
{
m_show_aliases = true;
m_show_user_defined = true;
m_show_hidden = false;
}
const OptionDefinition*
GetDefinitions() override
{
return g_option_table;
}
// Options table: Required for subclasses of Options.
static OptionDefinition g_option_table[];
// Instance variables to hold the values for command options.
bool m_show_aliases;
bool m_show_user_defined;
bool m_show_hidden;
};
Options *
GetOptions() override
{
return &m_options;
}
protected:
bool
DoExecute(Args& command,
CommandReturnObject &result) override;
private:
CommandOptions m_options;
};
} // namespace lldb_private
#endif // liblldb_CommandObjectHelp_h_