[Lldb-commits] [lldb] r289164 - Modernize the Args access pattern in a few more commands.

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Thu Dec 8 17:08:29 PST 2016


Author: zturner
Date: Thu Dec  8 19:08:29 2016
New Revision: 289164

URL: http://llvm.org/viewvc/llvm-project?rev=289164&view=rev
Log:
Modernize the Args access pattern in a few more commands.

Modified:
    lldb/trunk/include/lldb/Interpreter/CommandObject.h
    lldb/trunk/source/Commands/CommandObjectHelp.cpp
    lldb/trunk/source/Commands/CommandObjectLog.cpp
    lldb/trunk/source/Commands/CommandObjectMemory.cpp
    lldb/trunk/source/Interpreter/CommandObject.cpp

Modified: lldb/trunk/include/lldb/Interpreter/CommandObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/CommandObject.h?rev=289164&r1=289163&r2=289164&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/CommandObject.h (original)
+++ lldb/trunk/include/lldb/Interpreter/CommandObject.h Thu Dec  8 19:08:29 2016
@@ -193,7 +193,7 @@ public:
 
   static const ArgumentTableEntry *GetArgumentTable();
 
-  static lldb::CommandArgumentType LookupArgumentName(const char *arg_name);
+  static lldb::CommandArgumentType LookupArgumentName(llvm::StringRef arg_name);
 
   static const ArgumentTableEntry *
   FindArgumentDataByType(lldb::CommandArgumentType arg_type);

Modified: lldb/trunk/source/Commands/CommandObjectHelp.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectHelp.cpp?rev=289164&r1=289163&r2=289164&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectHelp.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectHelp.cpp Thu Dec  8 19:08:29 2016
@@ -108,11 +108,8 @@ bool CommandObjectHelp::DoExecute(Args &
     // Get command object for the first command argument. Only search built-in
     // command dictionary.
     StringList matches;
-    cmd_obj =
-        m_interpreter.GetCommandObject(command.GetArgumentAtIndex(0), &matches);
-    bool is_alias_command =
-        m_interpreter.AliasExists(command.GetArgumentAtIndex(0));
-    std::string alias_name = command.GetArgumentAtIndex(0);
+    auto command_name = command[0].ref;
+    cmd_obj = m_interpreter.GetCommandObject(command_name, &matches);
 
     if (cmd_obj != nullptr) {
       StringList matches;
@@ -176,11 +173,11 @@ bool CommandObjectHelp::DoExecute(Args &
 
       sub_cmd_obj->GenerateHelpText(result);
 
-      if (is_alias_command) {
+      if (m_interpreter.AliasExists(command_name)) {
         StreamString sstr;
-        m_interpreter.GetAlias(alias_name)->GetAliasExpansion(sstr);
+        m_interpreter.GetAlias(command_name)->GetAliasExpansion(sstr);
         result.GetOutputStream().Printf("\n'%s' is an abbreviation for %s\n",
-                                        alias_name.c_str(), sstr.GetData());
+                                        command[0].c_str(), sstr.GetData());
       }
     } else if (matches.GetSize() > 0) {
       Stream &output_strm = result.GetOutputStream();
@@ -194,16 +191,16 @@ bool CommandObjectHelp::DoExecute(Args &
       // Maybe the user is asking for help about a command argument rather than
       // a command.
       const CommandArgumentType arg_type =
-          CommandObject::LookupArgumentName(command.GetArgumentAtIndex(0));
+          CommandObject::LookupArgumentName(command_name);
       if (arg_type != eArgTypeLastArg) {
         Stream &output_strm = result.GetOutputStream();
         CommandObject::GetArgumentHelp(output_strm, arg_type, m_interpreter);
         result.SetStatus(eReturnStatusSuccessFinishNoResult);
       } else {
         StreamString error_msg_stream;
-        GenerateAdditionalHelpAvenuesMessage(&error_msg_stream,
-                                             command.GetArgumentAtIndex(0),
-                                             m_interpreter.GetCommandPrefix(), "");
+        GenerateAdditionalHelpAvenuesMessage(&error_msg_stream, command_name,
+                                             m_interpreter.GetCommandPrefix(),
+                                             "");
         result.AppendError(error_msg_stream.GetString());
         result.SetStatus(eReturnStatusFailed);
       }
@@ -225,8 +222,7 @@ int CommandObjectHelp::HandleCompletion(
         input, cursor_index, cursor_char_position, match_start_point,
         max_return_elements, word_complete, matches);
   } else {
-    CommandObject *cmd_obj =
-        m_interpreter.GetCommandObject(input.GetArgumentAtIndex(0));
+    CommandObject *cmd_obj = m_interpreter.GetCommandObject(input[0].ref);
 
     // The command that they are getting help on might be ambiguous, in which
     // case we should complete that,

Modified: lldb/trunk/source/Commands/CommandObjectLog.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectLog.cpp?rev=289164&r1=289163&r2=289164&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectLog.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectLog.cpp Thu Dec  8 19:08:29 2016
@@ -88,28 +88,6 @@ public:
 
   Options *GetOptions() override { return &m_options; }
 
-  //    int
-  //    HandleArgumentCompletion (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)
-  //    {
-  //        std::string completion_str (input.GetArgumentAtIndex(cursor_index));
-  //        completion_str.erase (cursor_char_position);
-  //
-  //        if (cursor_index == 1)
-  //        {
-  //            //
-  //            Log::AutoCompleteChannelName (completion_str.c_str(), matches);
-  //        }
-  //        return matches.GetSize();
-  //    }
-  //
-
   class CommandOptions : public Options {
   public:
     CommandOptions() : Options(), log_file(), log_options(0) {}
@@ -186,7 +164,7 @@ protected:
     }
 
     // Store into a std::string since we're about to shift the channel off.
-    std::string channel = args.GetArgumentAtIndex(0);
+    const std::string channel = args[0].ref;
     args.Shift(); // Shift off the channel
     char log_file[PATH_MAX];
     if (m_options.log_file)
@@ -251,7 +229,7 @@ protected:
 
     Log::Callbacks log_callbacks;
 
-    const std::string channel = args.GetArgumentAtIndex(0);
+    const std::string channel = args[0].ref;
     args.Shift(); // Shift off the channel
     if (Log::GetLogChannelCallbacks(ConstString(channel), log_callbacks)) {
       log_callbacks.disable(args.GetConstArgumentVector(),
@@ -350,7 +328,7 @@ protected:
     result.SetStatus(eReturnStatusFailed);
 
     if (args.GetArgumentCount() == 1) {
-      llvm::StringRef sub_command = args.GetArgumentAtIndex(0);
+      auto sub_command = args[0].ref;
 
       if (sub_command.equals_lower("enable")) {
         Timer::SetDisplayDepth(UINT32_MAX);
@@ -367,8 +345,8 @@ protected:
         result.SetStatus(eReturnStatusSuccessFinishResult);
       }
     } else if (args.GetArgumentCount() == 2) {
-      llvm::StringRef sub_command = args.GetArgumentAtIndex(0);
-      llvm::StringRef param = args.GetArgumentAtIndex(1);
+      auto sub_command = args[0].ref;
+      auto param = args[1].ref;
 
       if (sub_command.equals_lower("enable")) {
         uint32_t depth;

Modified: lldb/trunk/source/Commands/CommandObjectMemory.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectMemory.cpp?rev=289164&r1=289163&r2=289164&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectMemory.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectMemory.cpp Thu Dec  8 19:08:29 2016
@@ -589,7 +589,7 @@ protected:
     }
 
     if (argc > 0)
-      addr = Args::StringToAddress(&m_exe_ctx, command.GetArgumentAtIndex(0),
+      addr = Args::StringToAddress(&m_exe_ctx, command[0].ref,
                                    LLDB_INVALID_ADDRESS, &error);
 
     if (addr == LLDB_INVALID_ADDRESS) {
@@ -600,9 +600,8 @@ protected:
     }
 
     if (argc == 2) {
-      lldb::addr_t end_addr =
-          Args::StringToAddress(&m_exe_ctx, command.GetArgumentAtIndex(1),
-                                LLDB_INVALID_ADDRESS, nullptr);
+      lldb::addr_t end_addr = Args::StringToAddress(
+          &m_exe_ctx, command[1].ref, LLDB_INVALID_ADDRESS, nullptr);
       if (end_addr == LLDB_INVALID_ADDRESS) {
         result.AppendError("invalid end address expression.");
         result.AppendError(error.AsCString());
@@ -1036,16 +1035,14 @@ protected:
     }
 
     Error error;
-    lldb::addr_t low_addr =
-        Args::StringToAddress(&m_exe_ctx, command.GetArgumentAtIndex(0),
-                              LLDB_INVALID_ADDRESS, &error);
+    lldb::addr_t low_addr = Args::StringToAddress(&m_exe_ctx, command[0].ref,
+                                                  LLDB_INVALID_ADDRESS, &error);
     if (low_addr == LLDB_INVALID_ADDRESS || error.Fail()) {
       result.AppendError("invalid low address");
       return false;
     }
-    lldb::addr_t high_addr =
-        Args::StringToAddress(&m_exe_ctx, command.GetArgumentAtIndex(1),
-                              LLDB_INVALID_ADDRESS, &error);
+    lldb::addr_t high_addr = Args::StringToAddress(
+        &m_exe_ctx, command[1].ref, LLDB_INVALID_ADDRESS, &error);
     if (high_addr == LLDB_INVALID_ADDRESS || error.Fail()) {
       result.AppendError("invalid high address");
       return false;
@@ -1347,9 +1344,8 @@ protected:
     size_t item_byte_size = byte_size_value.GetCurrentValue();
 
     Error error;
-    lldb::addr_t addr =
-        Args::StringToAddress(&m_exe_ctx, command.GetArgumentAtIndex(0),
-                              LLDB_INVALID_ADDRESS, &error);
+    lldb::addr_t addr = Args::StringToAddress(&m_exe_ctx, command[0].ref,
+                                              LLDB_INVALID_ADDRESS, &error);
 
     if (addr == LLDB_INVALID_ADDRESS) {
       result.AppendError("invalid address expression\n");
@@ -1408,9 +1404,7 @@ protected:
     int64_t sval64;
     bool success = false;
     const size_t num_value_args = command.GetArgumentCount();
-    for (size_t i = 0; i < num_value_args; ++i) {
-      const char *value_str = command.GetArgumentAtIndex(i);
-
+    for (auto &entry : command) {
       switch (m_format_options.GetFormat()) {
       case kNumFormats:
       case eFormatFloat: // TODO: add support for floats soon
@@ -1449,10 +1443,9 @@ protected:
       case eFormatHexUppercase:
       case eFormatPointer:
         // Decode hex bytes
-        uval64 = StringConvert::ToUInt64(value_str, UINT64_MAX, 16, &success);
-        if (!success) {
+        if (entry.ref.getAsInteger(16, uval64)) {
           result.AppendErrorWithFormat(
-              "'%s' is not a valid hex string value.\n", value_str);
+              "'%s' is not a valid hex string value.\n", entry.c_str());
           result.SetStatus(eReturnStatusFailed);
           return false;
         } else if (!UIntValueIsValidForSize(uval64, item_byte_size)) {
@@ -1467,11 +1460,10 @@ protected:
         break;
 
       case eFormatBoolean:
-        uval64 = Args::StringToBoolean(
-            llvm::StringRef::withNullAsEmpty(value_str), false, &success);
+        uval64 = Args::StringToBoolean(entry.ref, false, &success);
         if (!success) {
           result.AppendErrorWithFormat(
-              "'%s' is not a valid boolean string value.\n", value_str);
+              "'%s' is not a valid boolean string value.\n", entry.c_str());
           result.SetStatus(eReturnStatusFailed);
           return false;
         }
@@ -1479,10 +1471,9 @@ protected:
         break;
 
       case eFormatBinary:
-        uval64 = StringConvert::ToUInt64(value_str, UINT64_MAX, 2, &success);
-        if (!success) {
+        if (entry.ref.getAsInteger(2, uval64)) {
           result.AppendErrorWithFormat(
-              "'%s' is not a valid binary string value.\n", value_str);
+              "'%s' is not a valid binary string value.\n", entry.c_str());
           result.SetStatus(eReturnStatusFailed);
           return false;
         } else if (!UIntValueIsValidForSize(uval64, item_byte_size)) {
@@ -1498,30 +1489,30 @@ protected:
 
       case eFormatCharArray:
       case eFormatChar:
-      case eFormatCString:
-        if (value_str[0]) {
-          size_t len = strlen(value_str);
-          // Include the NULL for C strings...
-          if (m_format_options.GetFormat() == eFormatCString)
-            ++len;
-          Error error;
-          if (process->WriteMemory(addr, value_str, len, error) == len) {
-            addr += len;
-          } else {
-            result.AppendErrorWithFormat("Memory write to 0x%" PRIx64
-                                         " failed: %s.\n",
-                                         addr, error.AsCString());
-            result.SetStatus(eReturnStatusFailed);
-            return false;
-          }
+      case eFormatCString: {
+        if (entry.ref.empty())
+          break;
+
+        size_t len = entry.ref.size();
+        // Include the NULL for C strings...
+        if (m_format_options.GetFormat() == eFormatCString)
+          ++len;
+        Error error;
+        if (process->WriteMemory(addr, entry.c_str(), len, error) == len) {
+          addr += len;
+        } else {
+          result.AppendErrorWithFormat("Memory write to 0x%" PRIx64
+                                       " failed: %s.\n",
+                                       addr, error.AsCString());
+          result.SetStatus(eReturnStatusFailed);
+          return false;
         }
         break;
-
+      }
       case eFormatDecimal:
-        sval64 = StringConvert::ToSInt64(value_str, INT64_MAX, 0, &success);
-        if (!success) {
+        if (entry.ref.getAsInteger(0, sval64)) {
           result.AppendErrorWithFormat(
-              "'%s' is not a valid signed decimal value.\n", value_str);
+              "'%s' is not a valid signed decimal value.\n", entry.c_str());
           result.SetStatus(eReturnStatusFailed);
           return false;
         } else if (!SIntValueIsValidForSize(sval64, item_byte_size)) {
@@ -1536,11 +1527,11 @@ protected:
         break;
 
       case eFormatUnsigned:
-        uval64 = StringConvert::ToUInt64(value_str, UINT64_MAX, 0, &success);
-        if (!success) {
+
+        if (!entry.ref.getAsInteger(0, uval64)) {
           result.AppendErrorWithFormat(
               "'%s' is not a valid unsigned decimal string value.\n",
-              value_str);
+              entry.c_str());
           result.SetStatus(eReturnStatusFailed);
           return false;
         } else if (!UIntValueIsValidForSize(uval64, item_byte_size)) {
@@ -1555,10 +1546,9 @@ protected:
         break;
 
       case eFormatOctal:
-        uval64 = StringConvert::ToUInt64(value_str, UINT64_MAX, 8, &success);
-        if (!success) {
+        if (entry.ref.getAsInteger(8, uval64)) {
           result.AppendErrorWithFormat(
-              "'%s' is not a valid octal string value.\n", value_str);
+              "'%s' is not a valid octal string value.\n", entry.c_str());
           result.SetStatus(eReturnStatusFailed);
           return false;
         } else if (!UIntValueIsValidForSize(uval64, item_byte_size)) {
@@ -1643,9 +1633,8 @@ protected:
     }
 
     Error error;
-    lldb::addr_t addr =
-        Args::StringToAddress(&m_exe_ctx, command.GetArgumentAtIndex(0),
-                              LLDB_INVALID_ADDRESS, &error);
+    lldb::addr_t addr = Args::StringToAddress(&m_exe_ctx, command[0].ref,
+                                              LLDB_INVALID_ADDRESS, &error);
 
     if (addr == LLDB_INVALID_ADDRESS) {
       result.AppendError("invalid address expression");
@@ -1711,13 +1700,13 @@ protected:
                                      m_cmd_name.c_str(), m_cmd_syntax.c_str());
         result.SetStatus(eReturnStatusFailed);
       } else {
-        const char *load_addr_cstr = command.GetArgumentAtIndex(0);
+        auto load_addr_str = command[0].ref;
         if (command.GetArgumentCount() == 1) {
-          load_addr = Args::StringToAddress(&m_exe_ctx, load_addr_cstr,
+          load_addr = Args::StringToAddress(&m_exe_ctx, load_addr_str,
                                             LLDB_INVALID_ADDRESS, &error);
           if (error.Fail() || load_addr == LLDB_INVALID_ADDRESS) {
             result.AppendErrorWithFormat(
-                "invalid address argument \"%s\": %s\n", load_addr_cstr,
+                "invalid address argument \"%s\": %s\n", command[0].c_str(),
                 error.AsCString());
             result.SetStatus(eReturnStatusFailed);
           }

Modified: lldb/trunk/source/Interpreter/CommandObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandObject.cpp?rev=289164&r1=289163&r2=289164&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/CommandObject.cpp (original)
+++ lldb/trunk/source/Interpreter/CommandObject.cpp Thu Dec  8 19:08:29 2016
@@ -537,17 +537,15 @@ void CommandObject::GetFormattedCommandA
   }
 }
 
-CommandArgumentType CommandObject::LookupArgumentName(const char *arg_name) {
+CommandArgumentType
+CommandObject::LookupArgumentName(llvm::StringRef arg_name) {
   CommandArgumentType return_type = eArgTypeLastArg;
 
-  std::string arg_name_str(arg_name);
-  size_t len = arg_name_str.length();
-  if (arg_name[0] == '<' && arg_name[len - 1] == '>')
-    arg_name_str = arg_name_str.substr(1, len - 2);
+  arg_name = arg_name.ltrim('<').rtrim('>');
 
   const ArgumentTableEntry *table = GetArgumentTable();
   for (int i = 0; i < eArgTypeLastArg; ++i)
-    if (arg_name_str.compare(table[i].arg_name) == 0)
+    if (arg_name == table[i].arg_name)
       return_type = g_arguments_data[i].arg_type;
 
   return return_type;




More information about the lldb-commits mailing list