Reimplemented the code that backed the "settings" in lldb. There were many issues with the previous implementation:
- no setting auto completion
- very manual and error prone way of getting/setting variables
- tons of code duplication
- useless instance names for processes, threads
Now settings can easily be defined like option values. The new settings makes use of the "OptionValue" classes so we can re-use the option value code that we use to set settings in command options. No more instances, just "does the right thing".
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@162366 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Commands/CommandObjectApropos.cpp b/source/Commands/CommandObjectApropos.cpp
index a71c2b6..a8713d0 100644
--- a/source/Commands/CommandObjectApropos.cpp
+++ b/source/Commands/CommandObjectApropos.cpp
@@ -86,27 +86,22 @@
for (size_t i = 0; i < commands_found.GetSize(); ++i)
m_interpreter.OutputFormattedHelpText (result.GetOutputStream(),
commands_found.GetStringAtIndex(i),
- "--", commands_help.
- GetStringAtIndex(i),
+ "--",
+ commands_help.GetStringAtIndex(i),
max_len);
}
- StreamString settings_search_results;
- lldb::UserSettingsControllerSP root = Debugger::GetSettingsController ();
- const char *settings_prefix = root->GetLevelName().GetCString();
-
- UserSettingsController::SearchAllSettingsDescriptions (m_interpreter,
- root,
- settings_prefix,
- search_word,
- settings_search_results);
-
- if (settings_search_results.GetSize() > 0)
+ std::vector<const Property *> properties;
+ const size_t num_properties = m_interpreter.GetDebugger().Apropos(search_word, properties);
+ if (num_properties)
{
+ const bool dump_qualified_name = true;
result.AppendMessageWithFormat ("\nThe following settings variables may relate to '%s': \n\n", search_word);
- result.AppendMessageWithFormat ("%s", settings_search_results.GetData());
+ for (size_t i=0; i<num_properties; ++i)
+ properties[i]->DumpDescription (m_interpreter, result.GetOutputStream(), 0, dump_qualified_name);
+
}
result.SetStatus (eReturnStatusSuccessFinishNoResult);