CommandObjectDisassemble.h revision da26bd203cbb104291b39891febf7481794f205f
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef liblldb_CommandObjectDisassemble_h_
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define liblldb_CommandObjectDisassemble_h_
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// C Includes
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// C++ Includes
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Other libraries and framework includes
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Project includes
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/Interpreter/CommandObject.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/Interpreter/Options.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace lldb_private {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//-------------------------------------------------------------------------
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// CommandObjectDisassemble
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//-------------------------------------------------------------------------
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CommandObjectDisassemble : public CommandObjectParsed
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public:
29    class CommandOptions : public Options
30    {
31    public:
32
33        CommandOptions (CommandInterpreter &interpreter);
34
35        virtual
36        ~CommandOptions ();
37
38        virtual Error
39        SetOptionValue (uint32_t option_idx, const char *option_arg);
40
41        void
42        OptionParsingStarting ();
43
44        const OptionDefinition*
45        GetDefinitions ();
46
47        const char *
48        GetPluginName ()
49        {
50            if (plugin_name.empty())
51                return NULL;
52            return plugin_name.c_str();
53        }
54
55        virtual Error
56        OptionParsingFinished ();
57
58        bool show_mixed; // Show mixed source/assembly
59        bool show_bytes;
60        uint32_t num_lines_context;
61        uint32_t num_instructions;
62        bool raw;
63        std::string func_name;
64        bool cur_function;
65        lldb::addr_t start_addr;
66        lldb::addr_t end_addr;
67        bool at_pc;
68        bool frame_line;
69        std::string plugin_name;
70        ArchSpec arch;
71        bool some_location_specified; // If no location was specified, we'll select "at_pc".  This should be set
72                                      // in SetOptionValue if anything the selects a location is set.
73        static OptionDefinition g_option_table[];
74    };
75
76    CommandObjectDisassemble (CommandInterpreter &interpreter);
77
78    virtual
79    ~CommandObjectDisassemble ();
80
81    virtual
82    Options *
83    GetOptions ()
84    {
85        return &m_options;
86    }
87
88protected:
89    virtual bool
90    DoExecute (Args& command,
91             CommandReturnObject &result);
92
93    CommandOptions m_options;
94
95};
96
97} // namespace lldb_private
98
99#endif  // liblldb_CommandObjectDisassemble_h_
100