130fdc8d8SChris Lattner //===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 630fdc8d8SChris Lattner // 730fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 830fdc8d8SChris Lattner 9cdc514e4SJonas Devlieghere #ifndef LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 10cdc514e4SJonas Devlieghere #define LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 1130fdc8d8SChris Lattner 123eb2b44dSZachary Turner #include "lldb/Host/OptionParser.h" 1330fdc8d8SChris Lattner #include "lldb/Interpreter/CommandObject.h" 1408633eeaSEnrico Granata #include "lldb/Interpreter/Options.h" 1530fdc8d8SChris Lattner 1630fdc8d8SChris Lattner namespace lldb_private { 1730fdc8d8SChris Lattner 1830fdc8d8SChris Lattner // CommandObjectHelp 1930fdc8d8SChris Lattner 20b9c1b51eSKate Stone class CommandObjectHelp : public CommandObjectParsed { 2130fdc8d8SChris Lattner public: 22a7015092SGreg Clayton CommandObjectHelp(CommandInterpreter &interpreter); 2330fdc8d8SChris Lattner 241fb7e202SPavel Labath ~CommandObjectHelp() override; 2530fdc8d8SChris Lattner 26ae34ed2cSRaphael Isemann void HandleCompletion(CompletionRequest &request) override; 2730fdc8d8SChris Lattner 28b9c1b51eSKate Stone static void GenerateAdditionalHelpAvenuesMessage( 29a49c2019SZachary Turner Stream *s, llvm::StringRef command, llvm::StringRef prefix, 30d5b44036SJonas Devlieghere llvm::StringRef subcommand, bool include_upropos = true, 3146d4aa21SEnrico Granata bool include_type_lookup = true); 3246d4aa21SEnrico Granata 33b9c1b51eSKate Stone class CommandOptions : public Options { 3408633eeaSEnrico Granata public: 35*91688716SJonas Devlieghere CommandOptions() = default; 3608633eeaSEnrico Granata 37fd2433e1SJonas Devlieghere ~CommandOptions() override = default; 3808633eeaSEnrico Granata SetOptionValue(uint32_t option_idx,llvm::StringRef option_arg,ExecutionContext * execution_context)3997206d57SZachary Turner Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg, 40b9c1b51eSKate Stone ExecutionContext *execution_context) override { 4197206d57SZachary Turner Status error; 423bcdfc0eSGreg Clayton const int short_option = m_getopt_table[option_idx].val; 4308633eeaSEnrico Granata 44b9c1b51eSKate Stone switch (short_option) { 4508633eeaSEnrico Granata case 'a': 46a487aa4cSKate Stone m_show_aliases = false; 4708633eeaSEnrico Granata break; 4808633eeaSEnrico Granata case 'u': 4908633eeaSEnrico Granata m_show_user_defined = false; 5008633eeaSEnrico Granata break; 51a487aa4cSKate Stone case 'h': 52a487aa4cSKate Stone m_show_hidden = true; 53a487aa4cSKate Stone break; 5408633eeaSEnrico Granata default: 5536162014SRaphael Isemann llvm_unreachable("Unimplemented option"); 5608633eeaSEnrico Granata } 5708633eeaSEnrico Granata 5808633eeaSEnrico Granata return error; 5908633eeaSEnrico Granata } 6008633eeaSEnrico Granata OptionParsingStarting(ExecutionContext * execution_context)61b9c1b51eSKate Stone void OptionParsingStarting(ExecutionContext *execution_context) override { 62a487aa4cSKate Stone m_show_aliases = true; 6308633eeaSEnrico Granata m_show_user_defined = true; 64a487aa4cSKate Stone m_show_hidden = false; 6508633eeaSEnrico Granata } 6608633eeaSEnrico Granata 671f0f5b5bSZachary Turner llvm::ArrayRef<OptionDefinition> GetDefinitions() override; 6808633eeaSEnrico Granata 6908633eeaSEnrico Granata // Instance variables to hold the values for command options. 7008633eeaSEnrico Granata 7108633eeaSEnrico Granata bool m_show_aliases; 7208633eeaSEnrico Granata bool m_show_user_defined; 73a487aa4cSKate Stone bool m_show_hidden; 7408633eeaSEnrico Granata }; 7508633eeaSEnrico Granata GetOptions()76b9c1b51eSKate Stone Options *GetOptions() override { return &m_options; } 7708633eeaSEnrico Granata 785a988416SJim Ingham protected: 79b9c1b51eSKate Stone bool DoExecute(Args &command, CommandReturnObject &result) override; 805a988416SJim Ingham 815a988416SJim Ingham private: 825a988416SJim Ingham CommandOptions m_options; 8330fdc8d8SChris Lattner }; 8430fdc8d8SChris Lattner 8530fdc8d8SChris Lattner } // namespace lldb_private 8630fdc8d8SChris Lattner 87cdc514e4SJonas Devlieghere #endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTHELP_H 88