Fix more functions in Args to use StringRef.

This patch also marks the const char* versions as =delete to prevent
their use.  This has the potential to cause build breakages on some
platforms which I can't compile.  I have tested on Windows, Linux,
and OSX.  Best practices for fixing broken callsites are outlined in
Args.h in a comment above the deleted function declarations.

Eventually we can remove these =delete declarations, but for now they
are important to make sure that all implicit conversions from
const char * are manually audited to make sure that they do not invoke a
conversion from nullptr.

llvm-svn: 281919
diff --git a/lldb/source/Interpreter/Args.cpp b/lldb/source/Interpreter/Args.cpp
index b6a6026..0dd093f 100644
--- a/lldb/source/Interpreter/Args.cpp
+++ b/lldb/source/Interpreter/Args.cpp
@@ -362,23 +362,23 @@
 void Args::AppendArguments(const Args &rhs) {
   const size_t rhs_argc = rhs.GetArgumentCount();
   for (size_t i = 0; i < rhs_argc; ++i)
-    AppendArgument(rhs.GetArgumentAtIndex(i),
+    AppendArgument(llvm::StringRef(rhs.GetArgumentAtIndex(i)),
                    rhs.GetArgumentQuoteCharAtIndex(i));
 }
 
 void Args::AppendArguments(const char **argv) {
   if (argv) {
     for (uint32_t i = 0; argv[i]; ++i)
-      AppendArgument(argv[i]);
+      AppendArgument(llvm::StringRef::withNullAsEmpty(argv[i]));
   }
 }
 
-const char *Args::AppendArgument(const char *arg_cstr, char quote_char) {
-  return InsertArgumentAtIndex(GetArgumentCount(), arg_cstr, quote_char);
+llvm::StringRef Args::AppendArgument(llvm::StringRef arg_str, char quote_char) {
+  return InsertArgumentAtIndex(GetArgumentCount(), arg_str, quote_char);
 }
 
-const char *Args::InsertArgumentAtIndex(size_t idx, const char *arg_cstr,
-                                        char quote_char) {
+llvm::StringRef Args::InsertArgumentAtIndex(size_t idx, llvm::StringRef arg_str,
+                                            char quote_char) {
   // Since we are using a std::list to hold onto the copied C string and
   // we don't have direct access to the elements, we have to iterate to
   // find the value.
@@ -387,7 +387,7 @@
   for (pos = m_args.begin(); i > 0 && pos != end; ++pos)
     --i;
 
-  pos = m_args.insert(pos, arg_cstr);
+  pos = m_args.insert(pos, arg_str);
 
   if (idx >= m_args_quote_char.size()) {
     m_args_quote_char.resize(idx + 1);
@@ -399,8 +399,9 @@
   return GetArgumentAtIndex(idx);
 }
 
-const char *Args::ReplaceArgumentAtIndex(size_t idx, const char *arg_cstr,
-                                         char quote_char) {
+llvm::StringRef Args::ReplaceArgumentAtIndex(size_t idx,
+                                             llvm::StringRef arg_str,
+                                             char quote_char) {
   // Since we are using a std::list to hold onto the copied C string and
   // we don't have direct access to the elements, we have to iterate to
   // find the value.
@@ -410,7 +411,7 @@
     --i;
 
   if (pos != end) {
-    pos->assign(arg_cstr);
+    pos->assign(arg_str);
     assert(idx < m_argv.size() - 1);
     m_argv[idx] = pos->c_str();
     if (idx >= m_args_quote_char.size())
@@ -732,11 +733,6 @@
   return s.c_str();
 }
 
-bool Args::StringToBoolean(const char *s, bool fail_value,
-  bool *success_ptr) {
-  return StringToBoolean(llvm::StringRef(s ? s : ""), fail_value, success_ptr);
-}
-
 bool Args::StringToBoolean(llvm::StringRef ref, bool fail_value,
                            bool *success_ptr) {
   if (success_ptr)
@@ -915,13 +911,6 @@
   return error;
 }
 
-lldb::Encoding Args::StringToEncoding(const char *s,
-                                      lldb::Encoding fail_value) {
-  if (!s)
-    return fail_value;
-  return StringToEncoding(llvm::StringRef(s), fail_value);
-}
-
 lldb::Encoding Args::StringToEncoding(llvm::StringRef s,
                                       lldb::Encoding fail_value) {
   return llvm::StringSwitch<lldb::Encoding>(s)
@@ -932,12 +921,6 @@
       .Default(fail_value);
 }
 
-uint32_t Args::StringToGenericRegister(const char *s) {
-  if (!s)
-    return LLDB_INVALID_REGNUM;
-  return StringToGenericRegister(llvm::StringRef(s));
-}
-
 uint32_t Args::StringToGenericRegister(llvm::StringRef s) {
   if (s.empty())
     return LLDB_INVALID_REGNUM;
@@ -1015,13 +998,13 @@
 
     // Check if the name matches the given env_var_name.
     if (strncmp(env_var_name, arg_value, equal_p - arg_value) == 0) {
-      ReplaceArgumentAtIndex(i, stream.GetString().c_str());
+      ReplaceArgumentAtIndex(i, stream.GetString());
       return;
     }
   }
 
   // We didn't find it.  Append it instead.
-  AppendArgument(stream.GetString().c_str());
+  AppendArgument(stream.GetString());
 }
 
 bool Args::ContainsEnvironmentVariable(const char *env_var_name,
@@ -1239,7 +1222,7 @@
           if (pos != std::string::npos)
             raw_input_string.erase(pos, strlen(tmp_arg));
         }
-        ReplaceArgumentAtIndex(idx, "");
+        ReplaceArgumentAtIndex(idx, llvm::StringRef());
         if ((long_options[long_options_index].definition->option_has_arg !=
              OptionParser::eNoArgument) &&
             (OptionParser::GetOptionArgument() != nullptr) &&
@@ -1252,7 +1235,7 @@
             if (pos != std::string::npos)
               raw_input_string.erase(pos, strlen(tmp_arg));
           }
-          ReplaceArgumentAtIndex(idx + 1, "");
+          ReplaceArgumentAtIndex(idx + 1, llvm::StringRef());
         }
       }
     }