Files
clang-p2996/lldb/source/Commands/CommandObjectDisassemble.h
Jim Ingham 5a98841673 Make raw & parsed commands subclasses of CommandObject rather than having the raw version implement an
Execute which was never going to get run and another ExecuteRawCommandString.  Took the knowledge of how
to prepare raw & parsed commands out of CommandInterpreter and put it in CommandObject where it belongs.

Also took all the cases where there were the subcommands of Multiword commands declared in the .h file for
the overall command and moved them into the .cpp file.

Made the CommandObject flags work for raw as well as parsed commands.

Made "expr" use the flags so that it requires you to be paused to run "expr".

llvm-svn: 158235
2012-06-08 21:56:10 +00:00

100 lines
2.5 KiB
C++

//===-- CommandObjectDisassemble.h ------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_CommandObjectDisassemble_h_
#define liblldb_CommandObjectDisassemble_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/Interpreter/CommandObject.h"
#include "lldb/Interpreter/Options.h"
namespace lldb_private {
//-------------------------------------------------------------------------
// CommandObjectDisassemble
//-------------------------------------------------------------------------
class CommandObjectDisassemble : public CommandObjectParsed
{
public:
class CommandOptions : public Options
{
public:
CommandOptions (CommandInterpreter &interpreter);
virtual
~CommandOptions ();
virtual Error
SetOptionValue (uint32_t option_idx, const char *option_arg);
void
OptionParsingStarting ();
const OptionDefinition*
GetDefinitions ();
const char *
GetPluginName ()
{
if (plugin_name.empty())
return NULL;
return plugin_name.c_str();
}
virtual Error
OptionParsingFinished ();
bool show_mixed; // Show mixed source/assembly
bool show_bytes;
uint32_t num_lines_context;
uint32_t num_instructions;
bool raw;
std::string func_name;
bool cur_function;
lldb::addr_t start_addr;
lldb::addr_t end_addr;
bool at_pc;
bool frame_line;
std::string plugin_name;
ArchSpec arch;
bool some_location_specified; // If no location was specified, we'll select "at_pc". This should be set
// in SetOptionValue if anything the selects a location is set.
static OptionDefinition g_option_table[];
};
CommandObjectDisassemble (CommandInterpreter &interpreter);
virtual
~CommandObjectDisassemble ();
virtual
Options *
GetOptions ()
{
return &m_options;
}
protected:
virtual bool
DoExecute (Args& command,
CommandReturnObject &result);
CommandOptions m_options;
};
} // namespace lldb_private
#endif // liblldb_CommandObjectDisassemble_h_