[Lldb-commits] [lldb] r286740 - Change ArgumentHelpCallbackFunction to return a StringRef.

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Sat Nov 12 18:08:22 PST 2016


Author: zturner
Date: Sat Nov 12 20:08:22 2016
New Revision: 286740

URL: http://llvm.org/viewvc/llvm-project?rev=286740&view=rev
Log:
Change ArgumentHelpCallbackFunction to return a StringRef.

Modified:
    lldb/trunk/include/lldb/Interpreter/CommandObject.h
    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=286740&r1=286739&r2=286740&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/CommandObject.h (original)
+++ lldb/trunk/include/lldb/Interpreter/CommandObject.h Sat Nov 12 20:08:22 2016
@@ -66,13 +66,13 @@ size_t FindLongestCommandWord(std::map<s
 
 class CommandObject {
 public:
-  typedef const char *(ArgumentHelpCallbackFunction)();
+  typedef llvm::StringRef(ArgumentHelpCallbackFunction)();
 
   struct ArgumentHelpCallback {
     ArgumentHelpCallbackFunction *help_callback;
     bool self_formatting;
 
-    const char *operator()() const { return (*help_callback)(); }
+    llvm::StringRef operator()() const { return (*help_callback)(); }
 
     explicit operator bool() const { return (help_callback != nullptr); }
   };

Modified: lldb/trunk/source/Interpreter/CommandObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandObject.cpp?rev=286740&r1=286739&r2=286740&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/CommandObject.cpp (original)
+++ lldb/trunk/source/Interpreter/CommandObject.cpp Sat Nov 12 20:08:22 2016
@@ -390,7 +390,7 @@ void CommandObject::GetArgumentHelp(Stre
   name_str.Printf("<%s>", entry->arg_name);
 
   if (entry->help_function) {
-    const char *help_text = entry->help_function();
+    llvm::StringRef help_text = entry->help_function();
     if (!entry->help_function.self_formatting) {
       interpreter.OutputFormattedHelpText(str, name_str.GetData(), "--",
                                           help_text, name_str.GetSize());
@@ -553,7 +553,7 @@ CommandArgumentType CommandObject::Looku
   return return_type;
 }
 
-static const char *RegisterNameHelpTextCallback() {
+static llvm::StringRef RegisterNameHelpTextCallback() {
   return "Register names can be specified using the architecture specific "
          "names.  "
          "They can also be specified using generic names.  Not all generic "
@@ -571,7 +571,7 @@ static const char *RegisterNameHelpTextC
          "arg{1-6} - integer argument passing registers.\n";
 }
 
-static const char *BreakpointIDHelpTextCallback() {
+static llvm::StringRef BreakpointIDHelpTextCallback() {
   return "Breakpoints are identified using major and minor numbers; the major "
          "number corresponds to the single entity that was created with a "
          "'breakpoint "
@@ -590,7 +590,7 @@ static const char *BreakpointIDHelpTextC
          "3 or 3.2 could both be valid breakpoint IDs.)";
 }
 
-static const char *BreakpointIDRangeHelpTextCallback() {
+static llvm::StringRef BreakpointIDRangeHelpTextCallback() {
   return "A 'breakpoint ID list' is a manner of specifying multiple "
          "breakpoints. "
          "This can be done through several mechanisms.  The easiest way is to "
@@ -609,7 +609,7 @@ static const char *BreakpointIDRangeHelp
          " is legal; 2 - 5 is legal; but 3.2 - 4.4 is not legal.";
 }
 
-static const char *BreakpointNameHelpTextCallback() {
+static llvm::StringRef BreakpointNameHelpTextCallback() {
   return "A name that can be added to a breakpoint when it is created, or "
          "later "
          "on with the \"breakpoint name add\" command.  "
@@ -634,7 +634,7 @@ static const char *BreakpointNameHelpTex
          "breakpoint locations.";
 }
 
-static const char *GDBFormatHelpTextCallback() {
+static llvm::StringRef GDBFormatHelpTextCallback() {
   return "A GDB format consists of a repeat count, a format letter and a size "
          "letter. "
          "The repeat count is optional and defaults to 1. The format letter is "
@@ -671,12 +671,11 @@ static const char *GDBFormatHelpTextCall
          "dw   - show 1 4 byte decimal integer value\n";
 }
 
-static const char *FormatHelpTextCallback() {
+static llvm::StringRef FormatHelpTextCallback() {
+  static std::string help_text;
 
-  static char *help_text_ptr = nullptr;
-
-  if (help_text_ptr)
-    return help_text_ptr;
+  if (!help_text.empty())
+    return help_text;
 
   StreamString sstr;
   sstr << "One of the format names (or one-character names) that can be used "
@@ -694,20 +693,16 @@ static const char *FormatHelpTextCallbac
 
   sstr.Flush();
 
-  std::string data = sstr.GetString();
-
-  help_text_ptr = new char[data.length() + 1];
-
-  data.copy(help_text_ptr, data.length());
+  help_text = sstr.GetString();
 
-  return help_text_ptr;
+  return help_text;
 }
 
-static const char *LanguageTypeHelpTextCallback() {
-  static char *help_text_ptr = nullptr;
+static llvm::StringRef LanguageTypeHelpTextCallback() {
+  static std::string help_text;
 
-  if (help_text_ptr)
-    return help_text_ptr;
+  if (!help_text.empty())
+    return help_text;
 
   StreamString sstr;
   sstr << "One of the following languages:\n";
@@ -716,16 +711,12 @@ static const char *LanguageTypeHelpTextC
 
   sstr.Flush();
 
-  std::string data = sstr.GetString();
-
-  help_text_ptr = new char[data.length() + 1];
-
-  data.copy(help_text_ptr, data.length());
+  help_text = sstr.GetString();
 
-  return help_text_ptr;
+  return help_text;
 }
 
-static const char *SummaryStringHelpTextCallback() {
+static llvm::StringRef SummaryStringHelpTextCallback() {
   return "A summary string is a way to extract information from variables in "
          "order to present them using a summary.\n"
          "Summary strings contain static text, variables, scopes and control "
@@ -800,7 +791,7 @@ static const char *SummaryStringHelpText
          "type summary add -s \"${svar%#}\" -x \"std::list<\"";
 }
 
-static const char *ExprPathHelpTextCallback() {
+static llvm::StringRef ExprPathHelpTextCallback() {
   return "An expression path is the sequence of symbols that is used in C/C++ "
          "to access a member variable of an aggregate object (class).\n"
          "For instance, given a class:\n"
@@ -1028,7 +1019,7 @@ bool CommandObjectRaw::Execute(const cha
   return handled;
 }
 
-static const char *arch_helper() {
+static llvm::StringRef arch_helper() {
   static StreamString g_archs_help;
   if (g_archs_help.Empty()) {
     StringList archs;
@@ -1036,7 +1027,7 @@ static const char *arch_helper() {
     g_archs_help.Printf("These are the supported architecture names:\n");
     archs.Join("\n", g_archs_help);
   }
-  return g_archs_help.GetData();
+  return g_archs_help.GetString();
 }
 
 CommandObject::ArgumentTableEntry CommandObject::g_arguments_data[] = {




More information about the lldb-commits mailing list