diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Commands/CommandObjectApropos.cpp')
| -rw-r--r-- | contrib/llvm/tools/lldb/source/Commands/CommandObjectApropos.cpp | 158 | 
1 files changed, 76 insertions, 82 deletions
diff --git a/contrib/llvm/tools/lldb/source/Commands/CommandObjectApropos.cpp b/contrib/llvm/tools/lldb/source/Commands/CommandObjectApropos.cpp index 29e1f14e3b28..1114a511aa07 100644 --- a/contrib/llvm/tools/lldb/source/Commands/CommandObjectApropos.cpp +++ b/contrib/llvm/tools/lldb/source/Commands/CommandObjectApropos.cpp @@ -1,4 +1,5 @@ -//===-- CommandObjectApropos.cpp ---------------------------------*- C++ -*-===// +//===-- CommandObjectApropos.cpp ---------------------------------*- C++ +//-*-===//  //  //                     The LLVM Compiler Infrastructure  // @@ -13,10 +14,10 @@  // Project includes  #include "CommandObjectApropos.h"  #include "lldb/Interpreter/Args.h" -#include "lldb/Interpreter/Options.h" -#include "lldb/Interpreter/Property.h"  #include "lldb/Interpreter/CommandInterpreter.h"  #include "lldb/Interpreter/CommandReturnObject.h" +#include "lldb/Interpreter/Options.h" +#include "lldb/Interpreter/Property.h"  using namespace lldb;  using namespace lldb_private; @@ -26,93 +27,86 @@ using namespace lldb_private;  //-------------------------------------------------------------------------  CommandObjectApropos::CommandObjectApropos(CommandInterpreter &interpreter) -    : CommandObjectParsed(interpreter, "apropos", "List debugger commands related to a word or subject.", nullptr) -{ -    CommandArgumentEntry arg; -    CommandArgumentData search_word_arg; +    : CommandObjectParsed( +          interpreter, "apropos", +          "List debugger commands related to a word or subject.", nullptr) { +  CommandArgumentEntry arg; +  CommandArgumentData search_word_arg; -    // Define the first (and only) variant of this arg. -    search_word_arg.arg_type = eArgTypeSearchWord; -    search_word_arg.arg_repetition = eArgRepeatPlain; +  // Define the first (and only) variant of this arg. +  search_word_arg.arg_type = eArgTypeSearchWord; +  search_word_arg.arg_repetition = eArgRepeatPlain; -    // There is only one variant this argument could be; put it into the argument entry. -    arg.push_back (search_word_arg); +  // There is only one variant this argument could be; put it into the argument +  // entry. +  arg.push_back(search_word_arg); -    // Push the data for the first argument into the m_arguments vector. -    m_arguments.push_back (arg); +  // Push the data for the first argument into the m_arguments vector. +  m_arguments.push_back(arg);  }  CommandObjectApropos::~CommandObjectApropos() = default; -bool -CommandObjectApropos::DoExecute (Args& args, CommandReturnObject &result) -{ -    const size_t argc = args.GetArgumentCount (); - -    if (argc == 1) -    { -        const char *search_word = args.GetArgumentAtIndex(0); -        if ((search_word != nullptr) -            && (strlen (search_word) > 0)) -        { -            // The bulk of the work must be done inside the Command Interpreter, since the command dictionary -            // is private. -            StringList commands_found; -            StringList commands_help; -             -            m_interpreter.FindCommandsForApropos (search_word, commands_found, commands_help, true, true, true); -             -            if (commands_found.GetSize() == 0) -            { -                result.AppendMessageWithFormat ("No commands found pertaining to '%s'. Try 'help' to see a complete list of debugger commands.\n", search_word); -            } -            else -            { -                if (commands_found.GetSize() > 0) -                { -                    result.AppendMessageWithFormat ("The following commands may relate to '%s':\n", search_word); -                    size_t max_len = 0; - -                    for (size_t i = 0; i < commands_found.GetSize(); ++i) -                    { -                        size_t len = strlen (commands_found.GetStringAtIndex (i)); -                        if (len > max_len) -                            max_len = len; -                    } - -                    for (size_t i = 0; i < commands_found.GetSize(); ++i) -                        m_interpreter.OutputFormattedHelpText (result.GetOutputStream(),  -                                                               commands_found.GetStringAtIndex(i), -                                                               "--", -                                                               commands_help.GetStringAtIndex(i), -                                                               max_len); -                } -            } -             -            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); -                for (size_t i=0; i<num_properties; ++i) -                    properties[i]->DumpDescription (m_interpreter, result.GetOutputStream(), 0, dump_qualified_name); - -            } -             -            result.SetStatus (eReturnStatusSuccessFinishNoResult); -        } -        else -        { -            result.AppendError ("'' is not a valid search word.\n"); -            result.SetStatus (eReturnStatusFailed); +bool CommandObjectApropos::DoExecute(Args &args, CommandReturnObject &result) { +  const size_t argc = args.GetArgumentCount(); + +  if (argc == 1) { +    auto search_word = args[0].ref; +    if (!search_word.empty()) { +      // The bulk of the work must be done inside the Command Interpreter, since +      // the command dictionary is private. +      StringList commands_found; +      StringList commands_help; + +      m_interpreter.FindCommandsForApropos(search_word, commands_found, +                                           commands_help, true, true, true); + +      if (commands_found.GetSize() == 0) { +        result.AppendMessageWithFormat("No commands found pertaining to '%s'. " +                                       "Try 'help' to see a complete list of " +                                       "debugger commands.\n", +                                       args[0].c_str()); +      } else { +        if (commands_found.GetSize() > 0) { +          result.AppendMessageWithFormat( +              "The following commands may relate to '%s':\n", args[0].c_str()); +          size_t max_len = 0; + +          for (size_t i = 0; i < commands_found.GetSize(); ++i) { +            size_t len = strlen(commands_found.GetStringAtIndex(i)); +            if (len > max_len) +              max_len = len; +          } + +          for (size_t i = 0; i < commands_found.GetSize(); ++i) +            m_interpreter.OutputFormattedHelpText( +                result.GetOutputStream(), commands_found.GetStringAtIndex(i), +                "--", commands_help.GetStringAtIndex(i), max_len);          } +      } + +      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.AppendMessageWithFormatv( +            "\nThe following settings variables may relate to '{0}': \n\n", +            args[0].ref); +        for (size_t i = 0; i < num_properties; ++i) +          properties[i]->DumpDescription( +              m_interpreter, result.GetOutputStream(), 0, dump_qualified_name); +      } + +      result.SetStatus(eReturnStatusSuccessFinishNoResult); +    } else { +      result.AppendError("'' is not a valid search word.\n"); +      result.SetStatus(eReturnStatusFailed);      } -    else -    { -        result.AppendError ("'apropos' must be called with exactly one argument.\n"); -        result.SetStatus (eReturnStatusFailed); -    } +  } else { +    result.AppendError("'apropos' must be called with exactly one argument.\n"); +    result.SetStatus(eReturnStatusFailed); +  } -    return result.Succeeded(); +  return result.Succeeded();  }  | 
