diff options
Diffstat (limited to 'lldb/source/Commands/CommandObjectHelp.h')
| -rw-r--r-- | lldb/source/Commands/CommandObjectHelp.h | 87 | 
1 files changed, 87 insertions, 0 deletions
diff --git a/lldb/source/Commands/CommandObjectHelp.h b/lldb/source/Commands/CommandObjectHelp.h new file mode 100644 index 000000000000..52a00ac79ff9 --- /dev/null +++ b/lldb/source/Commands/CommandObjectHelp.h @@ -0,0 +1,87 @@ +//===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_CommandObjectHelp_h_ +#define liblldb_CommandObjectHelp_h_ + +#include "lldb/Host/OptionParser.h" +#include "lldb/Interpreter/CommandObject.h" +#include "lldb/Interpreter/Options.h" + +namespace lldb_private { + +// CommandObjectHelp + +class CommandObjectHelp : public CommandObjectParsed { +public: +  CommandObjectHelp(CommandInterpreter &interpreter); + +  ~CommandObjectHelp() override; + +  void HandleCompletion(CompletionRequest &request) override; + +  static void GenerateAdditionalHelpAvenuesMessage( +      Stream *s, llvm::StringRef command, llvm::StringRef prefix, +      llvm::StringRef subcommand, bool include_upropos = true, +      bool include_type_lookup = true); + +  class CommandOptions : public Options { +  public: +    CommandOptions() : Options() {} + +    ~CommandOptions() override {} + +    Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, +                          ExecutionContext *execution_context) override { +      Status 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: +        llvm_unreachable("Unimplemented option"); +      } + +      return error; +    } + +    void OptionParsingStarting(ExecutionContext *execution_context) override { +      m_show_aliases = true; +      m_show_user_defined = true; +      m_show_hidden = false; +    } + +    llvm::ArrayRef<OptionDefinition> GetDefinitions() override; + +    // 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_  | 
