1061da546Spatrick //===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9dda28197Spatrick #ifndef LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 10dda28197Spatrick #define LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 11061da546Spatrick 12061da546Spatrick #include "lldb/Host/OptionParser.h" 13061da546Spatrick #include "lldb/Interpreter/CommandObject.h" 14061da546Spatrick #include "lldb/Interpreter/Options.h" 15061da546Spatrick 16061da546Spatrick namespace lldb_private { 17061da546Spatrick 18061da546Spatrick // CommandObjectHelp 19061da546Spatrick 20061da546Spatrick class CommandObjectHelp : public CommandObjectParsed { 21061da546Spatrick public: 22061da546Spatrick CommandObjectHelp(CommandInterpreter &interpreter); 23061da546Spatrick 24061da546Spatrick ~CommandObjectHelp() override; 25061da546Spatrick 26061da546Spatrick void HandleCompletion(CompletionRequest &request) override; 27061da546Spatrick 28061da546Spatrick static void GenerateAdditionalHelpAvenuesMessage( 29061da546Spatrick Stream *s, llvm::StringRef command, llvm::StringRef prefix, 30061da546Spatrick llvm::StringRef subcommand, bool include_upropos = true, 31061da546Spatrick bool include_type_lookup = true); 32061da546Spatrick 33061da546Spatrick class CommandOptions : public Options { 34061da546Spatrick public: 35*f6aab3d8Srobert CommandOptions() = default; 36061da546Spatrick 37be691f3bSpatrick ~CommandOptions() override = default; 38061da546Spatrick SetOptionValue(uint32_t option_idx,llvm::StringRef option_arg,ExecutionContext * execution_context)39061da546Spatrick Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, 40061da546Spatrick ExecutionContext *execution_context) override { 41061da546Spatrick Status error; 42061da546Spatrick const int short_option = m_getopt_table[option_idx].val; 43061da546Spatrick 44061da546Spatrick switch (short_option) { 45061da546Spatrick case 'a': 46061da546Spatrick m_show_aliases = false; 47061da546Spatrick break; 48061da546Spatrick case 'u': 49061da546Spatrick m_show_user_defined = false; 50061da546Spatrick break; 51061da546Spatrick case 'h': 52061da546Spatrick m_show_hidden = true; 53061da546Spatrick break; 54061da546Spatrick default: 55061da546Spatrick llvm_unreachable("Unimplemented option"); 56061da546Spatrick } 57061da546Spatrick 58061da546Spatrick return error; 59061da546Spatrick } 60061da546Spatrick OptionParsingStarting(ExecutionContext * execution_context)61061da546Spatrick void OptionParsingStarting(ExecutionContext *execution_context) override { 62061da546Spatrick m_show_aliases = true; 63061da546Spatrick m_show_user_defined = true; 64061da546Spatrick m_show_hidden = false; 65061da546Spatrick } 66061da546Spatrick 67061da546Spatrick llvm::ArrayRef<OptionDefinition> GetDefinitions() override; 68061da546Spatrick 69061da546Spatrick // Instance variables to hold the values for command options. 70061da546Spatrick 71061da546Spatrick bool m_show_aliases; 72061da546Spatrick bool m_show_user_defined; 73061da546Spatrick bool m_show_hidden; 74061da546Spatrick }; 75061da546Spatrick GetOptions()76061da546Spatrick Options *GetOptions() override { return &m_options; } 77061da546Spatrick 78061da546Spatrick protected: 79061da546Spatrick bool DoExecute(Args &command, CommandReturnObject &result) override; 80061da546Spatrick 81061da546Spatrick private: 82061da546Spatrick CommandOptions m_options; 83061da546Spatrick }; 84061da546Spatrick 85061da546Spatrick } // namespace lldb_private 86061da546Spatrick 87dda28197Spatrick #endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 88