summaryrefslogtreecommitdiffstats
path: root/lldb/source/Commands/CommandObjectSettings.h
diff options
context:
space:
mode:
authorCaroline Tice <ctice@apple.com>2010-09-04 00:03:46 +0000
committerCaroline Tice <ctice@apple.com>2010-09-04 00:03:46 +0000
commit3df9a8dfd7714dd6d03d5e1a93dbbfee736946bc (patch)
tree5855b97cff85c66d8e0236d43ed974c031a5bf3b /lldb/source/Commands/CommandObjectSettings.h
parent070ebd93d2765e5f88e9739edb673a1fee5cbe9c (diff)
downloadbcm5719-llvm-3df9a8dfd7714dd6d03d5e1a93dbbfee736946bc.tar.gz
bcm5719-llvm-3df9a8dfd7714dd6d03d5e1a93dbbfee736946bc.zip
This is a very large commit that completely re-does the way lldb
handles user settable internal variables (the equivalent of set/show variables in gdb). In addition to the basic infrastructure (most of which is defined in UserSettingsController.{h,cpp}, there are examples of two classes that have been set up to contain user settable variables (the Debugger and Process classes). The 'settings' command has been modified to be a command-subcommand structure, and the 'set', 'show' and 'append' commands have been moved into this sub-commabnd structure. The old StateVariable class has been completely replaced by this, and the state variable dictionary has been removed from the Command Interpreter. Places that formerly accessed the state variable mechanism have been modified to access the variables in this new structure instead (checking the term-width; getting/checking the prompt; etc.) Variables are attached to classes; there are two basic "flavors" of variables that can be set: "global" variables (static/class-wide), and "instance" variables (one per instance of the class). The whole thing has been set up so that any global or instance variable can be set at any time (e.g. on start up, in your .lldbinit file), whether or not any instances actually exist (there's a whole pending and default values mechanism to help deal with that). llvm-svn: 113041
Diffstat (limited to 'lldb/source/Commands/CommandObjectSettings.h')
-rw-r--r--lldb/source/Commands/CommandObjectSettings.h308
1 files changed, 304 insertions, 4 deletions
diff --git a/lldb/source/Commands/CommandObjectSettings.h b/lldb/source/Commands/CommandObjectSettings.h
index 4159b8b03b6..0bfb3caff3c 100644
--- a/lldb/source/Commands/CommandObjectSettings.h
+++ b/lldb/source/Commands/CommandObjectSettings.h
@@ -15,27 +15,327 @@
// Other libraries and framework includes
// Project includes
#include "lldb/Interpreter/CommandObject.h"
+#include "lldb/Interpreter/CommandObjectMultiword.h"
+#include "lldb/Interpreter/Options.h"
+
namespace lldb_private {
//-------------------------------------------------------------------------
-// CommandObjectSettings
+// CommandObjectMultiwordSettings
+//-------------------------------------------------------------------------
+
+class CommandObjectMultiwordSettings : public CommandObjectMultiword
+{
+public:
+
+ CommandObjectMultiwordSettings (CommandInterpreter &interpreter);
+
+ virtual
+ ~CommandObjectMultiwordSettings ();
+
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsSet
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsSet : public CommandObject
+{
+public:
+ CommandObjectSettingsSet ();
+
+ virtual
+ ~CommandObjectSettingsSet ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+ virtual Options *
+ GetOptions ();
+
+ class CommandOptions : public Options
+ {
+ public:
+
+ CommandOptions ();
+
+ virtual
+ ~CommandOptions ();
+
+ virtual Error
+ SetOptionValue (int option_idx, const char *option_arg);
+
+ void
+ ResetOptionValues ();
+
+ const lldb::OptionDefinition*
+ GetDefinitions ();
+
+ // Options table: Required for subclasses of Options.
+
+ static lldb::OptionDefinition g_option_table[];
+
+ // Instance variables to hold the values for command options.
+
+ bool m_override;
+ bool m_reset;
+
+ };
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+ CommandOptions m_options;
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsShow -- Show current values
//-------------------------------------------------------------------------
-class CommandObjectSettings : public CommandObject
+class CommandObjectSettingsShow : public CommandObject
{
public:
+ CommandObjectSettingsShow ();
+
+ virtual
+ ~CommandObjectSettingsShow ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsList -- List settable variables
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsList : public CommandObject
+{
+public:
+ CommandObjectSettingsList ();
+
+ virtual
+ ~CommandObjectSettingsList ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+private:
+};
- CommandObjectSettings ();
+//-------------------------------------------------------------------------
+// CommandObjectSettingsRemove
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsRemove : public CommandObject
+{
+public:
+ CommandObjectSettingsRemove ();
virtual
- ~CommandObjectSettings ();
+ ~CommandObjectSettingsRemove ();
virtual bool
Execute (CommandInterpreter &interpreter,
Args& command,
CommandReturnObject &result);
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsReplace
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsReplace : public CommandObject
+{
+public:
+ CommandObjectSettingsReplace ();
+
+ virtual
+ ~CommandObjectSettingsReplace ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsInsertBefore
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsInsertBefore : public CommandObject
+{
+public:
+ CommandObjectSettingsInsertBefore ();
+
+ virtual
+ ~CommandObjectSettingsInsertBefore ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingInsertAfter
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsInsertAfter : public CommandObject
+{
+public:
+ CommandObjectSettingsInsertAfter ();
+
+ virtual
+ ~CommandObjectSettingsInsertAfter ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsAppend
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsAppend : public CommandObject
+{
+public:
+ CommandObjectSettingsAppend ();
+
+ virtual
+ ~CommandObjectSettingsAppend ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
+};
+
+//-------------------------------------------------------------------------
+// CommandObjectSettingsClear
+//-------------------------------------------------------------------------
+
+class CommandObjectSettingsClear : public CommandObject
+{
+public:
+ CommandObjectSettingsClear ();
+
+ virtual
+ ~CommandObjectSettingsClear ();
+
+ virtual bool
+ Execute (CommandInterpreter &interpreter,
+ Args& command,
+ CommandReturnObject &result);
+
+ virtual int
+ HandleArgumentCompletion (CommandInterpreter &interpreter,
+ Args &input,
+ int &cursor_index,
+ int &cursor_char_position,
+ OptionElementVector &opt_element_vector,
+ int match_start_point,
+ int max_return_elements,
+ bool &word_complete,
+ StringList &matches);
+
+private:
};
} // namespace lldb_private
OpenPOWER on IntegriCloud