1 //===-- CommandObjectMultiword.h --------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_CommandObjectMultiword_h_
11 #define liblldb_CommandObjectMultiword_h_
15 // Other libraries and framework includes
17 #include "lldb/Interpreter/CommandObject.h"
19 namespace lldb_private {
21 //-------------------------------------------------------------------------
22 // CommandObjectMultiword
23 //-------------------------------------------------------------------------
25 class CommandObjectMultiword : public CommandObject
27 // These two want to iterate over the subcommand dictionary.
28 friend class CommandInterpreter;
29 friend class CommandObjectSyntax;
31 CommandObjectMultiword(CommandInterpreter &interpreter,
33 const char *help = nullptr,
34 const char *syntax = nullptr,
37 ~CommandObjectMultiword() override;
40 IsMultiwordObject() override
46 LoadSubCommand(const char *cmd_name,
47 const lldb::CommandObjectSP& command_obj) override;
50 GenerateHelpText(Stream &output_stream) override;
53 GetSubcommandSP(const char *sub_cmd, StringList *matches = nullptr) override;
56 GetSubcommandObject(const char *sub_cmd, StringList *matches = nullptr) override;
59 AproposAllSubCommands(const char *prefix,
60 const char *search_word,
61 StringList &commands_found,
62 StringList &commands_help) override;
65 WantsRawCommandString() override
71 HandleCompletion(Args &input,
73 int &cursor_char_position,
74 int match_start_point,
75 int max_return_elements,
77 StringList &matches) override;
80 GetRepeatCommand (Args ¤t_command_args, uint32_t index) override;
83 Execute(const char *args_string,
84 CommandReturnObject &result) override;
87 IsRemovable() const override
89 return m_can_be_removed;
93 SetRemovable (bool removable)
95 m_can_be_removed = removable;
100 CommandObject::CommandMap m_subcommand_dict;
101 bool m_can_be_removed;
104 class CommandObjectProxy : public CommandObject
107 CommandObjectProxy(CommandInterpreter &interpreter,
109 const char *help = nullptr,
110 const char *syntax = nullptr,
113 ~CommandObjectProxy() override;
115 // Subclasses must provide a command object that will be transparently
116 // used for this object.
117 virtual CommandObject *
118 GetProxyCommandObject() = 0;
121 GetHelpLong() override;
124 IsRemovable() const override;
127 IsMultiwordObject() override;
130 GenerateHelpText (Stream &result) override;
132 lldb::CommandObjectSP
133 GetSubcommandSP(const char *sub_cmd, StringList *matches = nullptr) override;
136 GetSubcommandObject(const char *sub_cmd, StringList *matches = nullptr) override;
139 AproposAllSubCommands(const char *prefix,
140 const char *search_word,
141 StringList &commands_found,
142 StringList &commands_help) override;
145 LoadSubCommand(const char *cmd_name,
146 const lldb::CommandObjectSP& command_obj) override;
149 WantsRawCommandString() override;
152 WantsCompletion() override;
155 GetOptions() override;
158 HandleCompletion(Args &input,
160 int &cursor_char_position,
161 int match_start_point,
162 int max_return_elements,
164 StringList &matches) override;
167 HandleArgumentCompletion(Args &input,
169 int &cursor_char_position,
170 OptionElementVector &opt_element_vector,
171 int match_start_point,
172 int max_return_elements,
174 StringList &matches) override;
177 GetRepeatCommand(Args ¤t_command_args,
178 uint32_t index) override;
181 Execute(const char *args_string,
182 CommandReturnObject &result) override;
185 // These two want to iterate over the subcommand dictionary.
186 friend class CommandInterpreter;
187 friend class CommandObjectSyntax;
190 } // namespace lldb_private
192 #endif // liblldb_CommandObjectMultiword_h_