//===-- 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; int 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: error.SetErrorStringWithFormat("unrecognized option '%c'", short_option); break; } return error; } void OptionParsingStarting(ExecutionContext *execution_context) override { m_show_aliases = true; m_show_user_defined = true; m_show_hidden = false; } llvm::ArrayRef 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_