1 //===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 10 #define LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 11 12 #include "lldb/Host/OptionParser.h" 13 #include "lldb/Interpreter/CommandObject.h" 14 #include "lldb/Interpreter/Options.h" 15 16 namespace lldb_private { 17 18 // CommandObjectHelp 19 20 class CommandObjectHelp : public CommandObjectParsed { 21 public: 22 CommandObjectHelp(CommandInterpreter &interpreter); 23 24 ~CommandObjectHelp() override; 25 26 void HandleCompletion(CompletionRequest &request) override; 27 28 static void GenerateAdditionalHelpAvenuesMessage( 29 Stream *s, llvm::StringRef command, llvm::StringRef prefix, 30 llvm::StringRef subcommand, bool include_upropos = true, 31 bool include_type_lookup = true); 32 33 class CommandOptions : public Options { 34 public: CommandOptions()35 CommandOptions() : Options() {} 36 ~CommandOptions()37 ~CommandOptions() override {} 38 SetOptionValue(uint32_t option_idx,llvm::StringRef option_arg,ExecutionContext * execution_context)39 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, 40 ExecutionContext *execution_context) override { 41 Status error; 42 const int short_option = m_getopt_table[option_idx].val; 43 44 switch (short_option) { 45 case 'a': 46 m_show_aliases = false; 47 break; 48 case 'u': 49 m_show_user_defined = false; 50 break; 51 case 'h': 52 m_show_hidden = true; 53 break; 54 default: 55 llvm_unreachable("Unimplemented option"); 56 } 57 58 return error; 59 } 60 OptionParsingStarting(ExecutionContext * execution_context)61 void OptionParsingStarting(ExecutionContext *execution_context) override { 62 m_show_aliases = true; 63 m_show_user_defined = true; 64 m_show_hidden = false; 65 } 66 67 llvm::ArrayRef<OptionDefinition> GetDefinitions() override; 68 69 // Instance variables to hold the values for command options. 70 71 bool m_show_aliases; 72 bool m_show_user_defined; 73 bool m_show_hidden; 74 }; 75 GetOptions()76 Options *GetOptions() override { return &m_options; } 77 78 protected: 79 bool DoExecute(Args &command, CommandReturnObject &result) override; 80 81 private: 82 CommandOptions m_options; 83 }; 84 85 } // namespace lldb_private 86 87 #endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 88