blob: c78682dead1fbc86eb9d1cfa2e9618d57846af29 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001//===-- CommandObjectHelp.h -------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_CommandObjectHelp_h_
11#define liblldb_CommandObjectHelp_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
Zachary Turner3eb2b442017-03-22 23:33:16 +000017#include "lldb/Host/OptionParser.h"
Chris Lattner30fdc8d2010-06-08 16:52:24 +000018#include "lldb/Interpreter/CommandObject.h"
Enrico Granata08633ee2011-09-09 17:49:36 +000019#include "lldb/Interpreter/Options.h"
Chris Lattner30fdc8d2010-06-08 16:52:24 +000020
21namespace lldb_private {
22
23//-------------------------------------------------------------------------
24// CommandObjectHelp
25//-------------------------------------------------------------------------
26
Kate Stoneb9c1b512016-09-06 20:57:50 +000027class CommandObjectHelp : public CommandObjectParsed {
Chris Lattner30fdc8d2010-06-08 16:52:24 +000028public:
Kate Stoneb9c1b512016-09-06 20:57:50 +000029 CommandObjectHelp(CommandInterpreter &interpreter);
Chris Lattner30fdc8d2010-06-08 16:52:24 +000030
Kate Stoneb9c1b512016-09-06 20:57:50 +000031 ~CommandObjectHelp() override;
Chris Lattner30fdc8d2010-06-08 16:52:24 +000032
Raphael Isemann2443bbd2018-07-02 21:29:56 +000033 int HandleCompletion(CompletionRequest &request) override;
Chris Lattner30fdc8d2010-06-08 16:52:24 +000034
Kate Stoneb9c1b512016-09-06 20:57:50 +000035 static void GenerateAdditionalHelpAvenuesMessage(
Zachary Turnera49c2012016-11-16 21:34:22 +000036 Stream *s, llvm::StringRef command, llvm::StringRef prefix,
37 llvm::StringRef subcommand, bool include_apropos = true,
Kate Stoneb9c1b512016-09-06 20:57:50 +000038 bool include_type_lookup = true);
39
40 class CommandOptions : public Options {
41 public:
42 CommandOptions() : Options() {}
43
44 ~CommandOptions() override {}
45
Zachary Turner97206d52017-05-12 04:51:55 +000046 Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
47 ExecutionContext *execution_context) override {
48 Status error;
Kate Stoneb9c1b512016-09-06 20:57:50 +000049 const int short_option = m_getopt_table[option_idx].val;
50
51 switch (short_option) {
52 case 'a':
53 m_show_aliases = false;
54 break;
55 case 'u':
56 m_show_user_defined = false;
57 break;
58 case 'h':
59 m_show_hidden = true;
60 break;
61 default:
62 error.SetErrorStringWithFormat("unrecognized option '%c'",
63 short_option);
64 break;
65 }
66
67 return error;
Enrico Granata08633ee2011-09-09 17:49:36 +000068 }
Kate Stoneb9c1b512016-09-06 20:57:50 +000069
70 void OptionParsingStarting(ExecutionContext *execution_context) override {
71 m_show_aliases = true;
72 m_show_user_defined = true;
73 m_show_hidden = false;
74 }
75
Zachary Turner1f0f5b52016-09-22 20:22:55 +000076 llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Kate Stoneb9c1b512016-09-06 20:57:50 +000077
78 // Instance variables to hold the values for command options.
79
80 bool m_show_aliases;
81 bool m_show_user_defined;
82 bool m_show_hidden;
83 };
84
85 Options *GetOptions() override { return &m_options; }
86
Jim Ingham5a988412012-06-08 21:56:10 +000087protected:
Kate Stoneb9c1b512016-09-06 20:57:50 +000088 bool DoExecute(Args &command, CommandReturnObject &result) override;
89
Jim Ingham5a988412012-06-08 21:56:10 +000090private:
Kate Stoneb9c1b512016-09-06 20:57:50 +000091 CommandOptions m_options;
Chris Lattner30fdc8d2010-06-08 16:52:24 +000092};
93
94} // namespace lldb_private
95
Pavel Labath1fb7e202015-09-02 09:33:09 +000096#endif // liblldb_CommandObjectHelp_h_