diff options
author | Johnny Chen <johnny.chen@apple.com> | 2012-01-23 19:49:28 +0000 |
---|---|---|
committer | Johnny Chen <johnny.chen@apple.com> | 2012-01-23 19:49:28 +0000 |
commit | 8cc80b2914da8b5bd2e5c12e0bb7366e0c915fdc (patch) | |
tree | 933927cc9f5e7c058afad4b5de2a4ca39167ade1 /lldb/source/Commands/CommandObjectSettings.cpp | |
parent | d28ef9ac46fd030df68232643825375faf6f428f (diff) | |
download | bcm5719-llvm-8cc80b2914da8b5bd2e5c12e0bb7366e0c915fdc.tar.gz bcm5719-llvm-8cc80b2914da8b5bd2e5c12e0bb7366e0c915fdc.zip |
Followup check in for http://llvm.org/viewvc/llvm-project?rev=148491&view=rev,
where we changed the CommandObjectSettingsSet object impl to require raw command string.
Do the same for CommandObjectSettingsAppend/InsertBefore/InsertAfter classes and
add test cases for basic functionalities as well as for variable name completion.
llvm-svn: 148719
Diffstat (limited to 'lldb/source/Commands/CommandObjectSettings.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectSettings.cpp | 87 |
1 files changed, 45 insertions, 42 deletions
diff --git a/lldb/source/Commands/CommandObjectSettings.cpp b/lldb/source/Commands/CommandObjectSettings.cpp index b5e328b789c..74fdd503775 100644 --- a/lldb/source/Commands/CommandObjectSettings.cpp +++ b/lldb/source/Commands/CommandObjectSettings.cpp @@ -144,12 +144,12 @@ CommandObjectSettingsSet::ExecuteRawCommandString (const char *raw_command, Comm // Split the raw command into var_name and value pair. std::string var_name_string = var_name; llvm::StringRef raw_str(raw_command); - llvm::StringRef value_str = raw_str.split(var_name_string).second; - StripLeadingSpaces(value_str); - std::string value_string = value_str.str(); + llvm::StringRef var_value_str = raw_str.split(var_name).second; + StripLeadingSpaces(var_value_str); + std::string var_value_string = var_value_str.str(); if (!m_options.m_reset - && value_string.empty()) + && var_value_string.empty()) { result.AppendError ("'settings set' command requires a valid variable value unless using '--reset' option;" " No value supplied"); @@ -158,7 +158,7 @@ CommandObjectSettingsSet::ExecuteRawCommandString (const char *raw_command, Comm else { Error err = usc_sp->SetVariable (var_name_string.c_str(), - value_string.c_str(), + var_value_string.c_str(), eVarSetOperationAssign, m_options.m_override, m_interpreter.GetDebugger().GetInstanceName().AsCString()); @@ -835,11 +835,12 @@ CommandObjectSettingsInsertBefore::~CommandObjectSettingsInsertBefore () } bool -CommandObjectSettingsInsertBefore::Execute (Args& command, CommandReturnObject &result) +CommandObjectSettingsInsertBefore::ExecuteRawCommandString (const char *raw_command, CommandReturnObject &result) { UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ()); - const int argc = command.GetArgumentCount (); + Args cmd_args(raw_command); + const int argc = cmd_args.GetArgumentCount (); if (argc < 3) { @@ -848,7 +849,7 @@ CommandObjectSettingsInsertBefore::Execute (Args& command, CommandReturnObject & return false; } - const char *var_name = command.GetArgumentAtIndex (0); + const char *var_name = cmd_args.GetArgumentAtIndex (0); std::string var_name_string; if ((var_name == NULL) || (var_name[0] == '\0')) { @@ -858,9 +859,9 @@ CommandObjectSettingsInsertBefore::Execute (Args& command, CommandReturnObject & } var_name_string = var_name; - command.Shift(); + cmd_args.Shift(); - const char *index_value = command.GetArgumentAtIndex (0); + const char *index_value = cmd_args.GetArgumentAtIndex (0); std::string index_value_string; if ((index_value == NULL) || (index_value[0] == '\0')) { @@ -870,15 +871,15 @@ CommandObjectSettingsInsertBefore::Execute (Args& command, CommandReturnObject & } index_value_string = index_value; - command.Shift(); - - const char *var_value; - std::string value_string; + cmd_args.Shift(); - command.GetQuotedCommandString (value_string); - var_value = value_string.c_str(); + // Split the raw command into var_name, index_value, and value triple. + llvm::StringRef raw_str(raw_command); + llvm::StringRef var_value_str = raw_str.split(var_name).second.split(index_value).second; + StripLeadingSpaces(var_value_str); + std::string var_value_string = var_value_str.str(); - if ((var_value == NULL) || (var_value[0] == '\0')) + if (var_value_string.empty()) { result.AppendError ("'settings insert-before' command requires a valid variable value;" " No value supplied"); @@ -887,7 +888,7 @@ CommandObjectSettingsInsertBefore::Execute (Args& command, CommandReturnObject & else { Error err = usc_sp->SetVariable (var_name_string.c_str(), - var_value, + var_value_string.c_str(), eVarSetOperationInsertBefore, true, m_interpreter.GetDebugger().GetInstanceName().AsCString(), @@ -981,11 +982,12 @@ CommandObjectSettingsInsertAfter::~CommandObjectSettingsInsertAfter () } bool -CommandObjectSettingsInsertAfter::Execute (Args& command, CommandReturnObject &result) +CommandObjectSettingsInsertAfter::ExecuteRawCommandString (const char *raw_command, CommandReturnObject &result) { UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ()); - const int argc = command.GetArgumentCount (); + Args cmd_args(raw_command); + const int argc = cmd_args.GetArgumentCount (); if (argc < 3) { @@ -994,7 +996,7 @@ CommandObjectSettingsInsertAfter::Execute (Args& command, CommandReturnObject &r return false; } - const char *var_name = command.GetArgumentAtIndex (0); + const char *var_name = cmd_args.GetArgumentAtIndex (0); std::string var_name_string; if ((var_name == NULL) || (var_name[0] == '\0')) { @@ -1004,9 +1006,9 @@ CommandObjectSettingsInsertAfter::Execute (Args& command, CommandReturnObject &r } var_name_string = var_name; - command.Shift(); + cmd_args.Shift(); - const char *index_value = command.GetArgumentAtIndex (0); + const char *index_value = cmd_args.GetArgumentAtIndex (0); std::string index_value_string; if ((index_value == NULL) || (index_value[0] == '\0')) { @@ -1016,15 +1018,15 @@ CommandObjectSettingsInsertAfter::Execute (Args& command, CommandReturnObject &r } index_value_string = index_value; - command.Shift(); - - const char *var_value; - std::string value_string; + cmd_args.Shift(); - command.GetQuotedCommandString (value_string); - var_value = value_string.c_str(); + // Split the raw command into var_name, index_value, and value triple. + llvm::StringRef raw_str(raw_command); + llvm::StringRef var_value_str = raw_str.split(var_name).second.split(index_value).second; + StripLeadingSpaces(var_value_str); + std::string var_value_string = var_value_str.str(); - if ((var_value == NULL) || (var_value[0] == '\0')) + if (var_value_string.empty()) { result.AppendError ("'settings insert-after' command requires a valid variable value;" " No value supplied"); @@ -1033,7 +1035,7 @@ CommandObjectSettingsInsertAfter::Execute (Args& command, CommandReturnObject &r else { Error err = usc_sp->SetVariable (var_name_string.c_str(), - var_value, + var_value_string.c_str(), eVarSetOperationInsertAfter, true, m_interpreter.GetDebugger().GetInstanceName().AsCString(), @@ -1117,11 +1119,12 @@ CommandObjectSettingsAppend::~CommandObjectSettingsAppend () } bool -CommandObjectSettingsAppend::Execute (Args& command, CommandReturnObject &result) +CommandObjectSettingsAppend::ExecuteRawCommandString (const char *raw_command, CommandReturnObject &result) { UserSettingsControllerSP usc_sp (Debugger::GetSettingsController ()); - const int argc = command.GetArgumentCount (); + Args cmd_args(raw_command); + const int argc = cmd_args.GetArgumentCount (); if (argc < 2) { @@ -1130,7 +1133,7 @@ CommandObjectSettingsAppend::Execute (Args& command, CommandReturnObject &result return false; } - const char *var_name = command.GetArgumentAtIndex (0); + const char *var_name = cmd_args.GetArgumentAtIndex (0); std::string var_name_string; if ((var_name == NULL) || (var_name[0] == '\0')) { @@ -1140,15 +1143,15 @@ CommandObjectSettingsAppend::Execute (Args& command, CommandReturnObject &result } var_name_string = var_name; - command.Shift(); - - const char *var_value; - std::string value_string; + cmd_args.Shift(); - command.GetQuotedCommandString (value_string); - var_value = value_string.c_str(); + // Split the raw command into var_name and value pair. + llvm::StringRef raw_str(raw_command); + llvm::StringRef var_value_str = raw_str.split(var_name).second; + StripLeadingSpaces(var_value_str); + std::string var_value_string = var_value_str.str(); - if ((var_value == NULL) || (var_value[0] == '\0')) + if (var_value_string.empty()) { result.AppendError ("'settings append' command requires a valid variable value;" " No value supplied"); @@ -1157,7 +1160,7 @@ CommandObjectSettingsAppend::Execute (Args& command, CommandReturnObject &result else { Error err = usc_sp->SetVariable (var_name_string.c_str(), - var_value, + var_value_string.c_str(), eVarSetOperationAppend, true, m_interpreter.GetDebugger().GetInstanceName().AsCString()); |