[Lldb-commits] [lldb] r249506 - Enable the StringPrinter to have prefixes that are strings instead of just a single character; and also introduce a comparable suffix mechanism

Enrico Granata via lldb-commits lldb-commits at lists.llvm.org
Tue Oct 6 19:06:48 PDT 2015


Author: enrico
Date: Tue Oct  6 21:06:48 2015
New Revision: 249506

URL: http://llvm.org/viewvc/llvm-project?rev=249506&view=rev
Log:
Enable the StringPrinter to have prefixes that are strings instead of just a single character; and also introduce a comparable suffix mechanism


Modified:
    lldb/trunk/include/lldb/DataFormatters/StringPrinter.h
    lldb/trunk/source/DataFormatters/StringPrinter.cpp
    lldb/trunk/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp
    lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp
    lldb/trunk/source/Plugins/Language/ObjC/NSString.cpp

Modified: lldb/trunk/include/lldb/DataFormatters/StringPrinter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/StringPrinter.h?rev=249506&r1=249505&r2=249506&view=diff
==============================================================================
--- lldb/trunk/include/lldb/DataFormatters/StringPrinter.h (original)
+++ lldb/trunk/include/lldb/DataFormatters/StringPrinter.h Tue Oct  6 21:06:48 2015
@@ -15,6 +15,7 @@
 #include "lldb/Core/DataExtractor.h"
 
 #include <functional>
+#include <string>
 
 namespace lldb_private {
     namespace formatters
@@ -45,7 +46,8 @@ namespace lldb_private {
                 m_location(0),
                 m_process_sp(),
                 m_stream(NULL),
-                m_prefix_token(0),
+                m_prefix_token(),
+                m_suffix_token(),
                 m_quote('"'),
                 m_source_size(0),
                 m_needs_zero_termination(true),
@@ -98,16 +100,43 @@ namespace lldb_private {
                 }
                 
                 ReadStringAndDumpToStreamOptions&
-                SetPrefixToken (char p)
+                SetPrefixToken (const std::string& p)
                 {
                     m_prefix_token = p;
                     return *this;
                 }
                 
-                char
+                ReadStringAndDumpToStreamOptions&
+                SetPrefixToken (std::nullptr_t)
+                {
+                    m_prefix_token.clear();
+                    return *this;
+                }
+                
+                const char*
                 GetPrefixToken () const
                 {
-                    return m_prefix_token;
+                    return m_prefix_token.c_str();
+                }
+
+                ReadStringAndDumpToStreamOptions&
+                SetSuffixToken (const std::string& p)
+                {
+                    m_suffix_token = p;
+                    return *this;
+                }
+                
+                ReadStringAndDumpToStreamOptions&
+                SetSuffixToken (std::nullptr_t)
+                {
+                    m_suffix_token.clear();
+                    return *this;
+                }
+                
+                const char*
+                GetSuffixToken () const
+                {
+                    return m_suffix_token.c_str();
                 }
                 
                 ReadStringAndDumpToStreamOptions&
@@ -206,7 +235,8 @@ namespace lldb_private {
                 uint64_t m_location;
                 lldb::ProcessSP m_process_sp;
                 Stream* m_stream;
-                char m_prefix_token;
+                std::string m_prefix_token;
+                std::string m_suffix_token;
                 char m_quote;
                 uint32_t m_source_size;
                 bool m_needs_zero_termination;
@@ -223,7 +253,8 @@ namespace lldb_private {
                 ReadBufferAndDumpToStreamOptions () :
                 m_data(),
                 m_stream(NULL),
-                m_prefix_token(0),
+                m_prefix_token(),
+                m_suffix_token(),
                 m_quote('"'),
                 m_source_size(0),
                 m_escape_non_printables(true),
@@ -263,16 +294,43 @@ namespace lldb_private {
                 }
                 
                 ReadBufferAndDumpToStreamOptions&
-                SetPrefixToken (char p)
+                SetPrefixToken (const std::string& p)
                 {
                     m_prefix_token = p;
                     return *this;
                 }
                 
-                char
+                ReadBufferAndDumpToStreamOptions&
+                SetPrefixToken (std::nullptr_t)
+                {
+                    m_prefix_token.clear();
+                    return *this;
+                }
+                
+                const char*
                 GetPrefixToken () const
                 {
-                    return m_prefix_token;
+                    return m_prefix_token.c_str();
+                }
+                
+                ReadBufferAndDumpToStreamOptions&
+                SetSuffixToken (const std::string& p)
+                {
+                    m_suffix_token = p;
+                    return *this;
+                }
+                
+                ReadBufferAndDumpToStreamOptions&
+                SetSuffixToken (std::nullptr_t)
+                {
+                    m_suffix_token.clear();
+                    return *this;
+                }
+                
+                const char*
+                GetSuffixToken () const
+                {
+                    return m_suffix_token.c_str();
                 }
                 
                 ReadBufferAndDumpToStreamOptions&
@@ -344,7 +402,8 @@ namespace lldb_private {
             private:
                 DataExtractor m_data;
                 Stream* m_stream;
-                char m_prefix_token;
+                std::string m_prefix_token;
+                std::string m_suffix_token;
                 char m_quote;
                 uint32_t m_source_size;
                 bool m_escape_non_printables;

Modified: lldb/trunk/source/DataFormatters/StringPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/StringPrinter.cpp?rev=249506&r1=249505&r2=249506&view=diff
==============================================================================
--- lldb/trunk/source/DataFormatters/StringPrinter.cpp (original)
+++ lldb/trunk/source/DataFormatters/StringPrinter.cpp Tue Oct  6 21:06:48 2015
@@ -272,7 +272,7 @@ DumpUTFBufferToStream (ConversionResult
 {
     Stream &stream(*dump_options.GetStream());
     if (dump_options.GetPrefixToken() != 0)
-        stream.Printf("%c",dump_options.GetPrefixToken());
+        stream.Printf("%s",dump_options.GetPrefixToken());
     if (dump_options.GetQuote() != 0)
         stream.Printf("%c",dump_options.GetQuote());
     auto data(dump_options.GetData());
@@ -372,6 +372,8 @@ DumpUTFBufferToStream (ConversionResult
     }
     if (dump_options.GetQuote() != 0)
         stream.Printf("%c",dump_options.GetQuote());
+    if (dump_options.GetSuffixToken() != 0)
+        stream.Printf("%s",dump_options.GetSuffixToken());
     return true;
 }
 
@@ -392,6 +394,7 @@ lldb_private::formatters::StringPrinter:
 {
     SetStream(options.GetStream());
     SetPrefixToken(options.GetPrefixToken());
+    SetSuffixToken(options.GetSuffixToken());
     SetQuote(options.GetQuote());
     SetEscapeNonPrintables(options.GetEscapeNonPrintables());
     SetBinaryZeroIsTerminator(options.GetBinaryZeroIsTerminator());
@@ -433,11 +436,11 @@ StringPrinter::ReadStringAndDumpToStream
     if (my_error.Fail())
         return false;
 
-    char prefix_token = options.GetPrefixToken();
+    const char* prefix_token = options.GetPrefixToken();
     char quote = options.GetQuote();
 
     if (prefix_token != 0)
-        options.GetStream()->Printf("%c%c",prefix_token,quote);
+        options.GetStream()->Printf("%s%c",prefix_token,quote);
     else if (quote != 0)
         options.GetStream()->Printf("%c",quote);
 
@@ -481,8 +484,12 @@ StringPrinter::ReadStringAndDumpToStream
             data++;
         }
     }
-
-    if (quote != 0)
+    
+    const char* suffix_token = options.GetSuffixToken();
+    
+    if (suffix_token != 0)
+        options.GetStream()->Printf("%c%s",quote, suffix_token);
+    else if (quote != 0)
         options.GetStream()->Printf("%c",quote);
 
     return true;

Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp?rev=249506&r1=249505&r2=249506&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp Tue Oct  6 21:06:48 2015
@@ -53,7 +53,7 @@ lldb_private::formatters::Char16StringSu
     options.SetLocation(valobj_addr);
     options.SetProcessSP(process_sp);
     options.SetStream(&stream);
-    options.SetPrefixToken('u');
+    options.SetPrefixToken("u");
     
     if (!StringPrinter::ReadStringAndDumpToStream<StringPrinter::StringElementType::UTF16>(options))
     {
@@ -79,7 +79,7 @@ lldb_private::formatters::Char32StringSu
     options.SetLocation(valobj_addr);
     options.SetProcessSP(process_sp);
     options.SetStream(&stream);
-    options.SetPrefixToken('U');
+    options.SetPrefixToken("U");
     
     if (!StringPrinter::ReadStringAndDumpToStream<StringPrinter::StringElementType::UTF32>(options))
     {
@@ -113,7 +113,7 @@ lldb_private::formatters::WCharStringSum
     options.SetLocation(valobj_addr);
     options.SetProcessSP(process_sp);
     options.SetStream(&stream);
-    options.SetPrefixToken('L');
+    options.SetPrefixToken("L");
     
     switch (wchar_size)
     {
@@ -148,7 +148,7 @@ lldb_private::formatters::Char16SummaryP
     StringPrinter::ReadBufferAndDumpToStreamOptions options(valobj);
     options.SetData(data);
     options.SetStream(&stream);
-    options.SetPrefixToken('u');
+    options.SetPrefixToken("u");
     options.SetQuote('\'');
     options.SetSourceSize(1);
     options.SetBinaryZeroIsTerminator(false);
@@ -174,7 +174,7 @@ lldb_private::formatters::Char32SummaryP
     StringPrinter::ReadBufferAndDumpToStreamOptions options(valobj);
     options.SetData(data);
     options.SetStream(&stream);
-    options.SetPrefixToken('U');
+    options.SetPrefixToken("U");
     options.SetQuote('\'');
     options.SetSourceSize(1);
     options.SetBinaryZeroIsTerminator(false);
@@ -195,7 +195,7 @@ lldb_private::formatters::WCharSummaryPr
     StringPrinter::ReadBufferAndDumpToStreamOptions options(valobj);
     options.SetData(data);
     options.SetStream(&stream);
-    options.SetPrefixToken('L');
+    options.SetPrefixToken("L");
     options.SetQuote('\'');
     options.SetSourceSize(1);
     options.SetBinaryZeroIsTerminator(false);

Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp?rev=249506&r1=249505&r2=249506&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp Tue Oct  6 21:06:48 2015
@@ -573,7 +573,7 @@ lldb_private::formatters::LibcxxWStringS
     StringPrinter::ReadBufferAndDumpToStreamOptions options(valobj);
     options.SetData(extractor);
     options.SetStream(&stream);
-    options.SetPrefixToken('L');
+    options.SetPrefixToken("L");
     options.SetQuote('"');
     options.SetSourceSize(size);
     options.SetBinaryZeroIsTerminator(false);

Modified: lldb/trunk/source/Plugins/Language/ObjC/NSString.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSString.cpp?rev=249506&r1=249505&r2=249506&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSString.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSString.cpp Tue Oct  6 21:06:48 2015
@@ -156,7 +156,7 @@ lldb_private::formatters::NSStringSummar
             options.SetLocation(location);
             options.SetProcessSP(process_sp);
             options.SetStream(&stream);
-            options.SetPrefixToken('@');
+            options.SetPrefixToken("@");
             options.SetQuote('"');
             options.SetSourceSize(explicit_length);
             options.SetNeedsZeroTermination(false);
@@ -171,7 +171,7 @@ lldb_private::formatters::NSStringSummar
             options.SetLocation(location+1);
             options.SetProcessSP(process_sp);
             options.SetStream(&stream);
-            options.SetPrefixToken('@');
+            options.SetPrefixToken("@");
             options.SetSourceSize(explicit_length);
             options.SetNeedsZeroTermination(false);
             options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped);
@@ -188,7 +188,7 @@ lldb_private::formatters::NSStringSummar
         options.SetLocation(location);
         options.SetProcessSP(process_sp);
         options.SetStream(&stream);
-        options.SetPrefixToken('@');
+        options.SetPrefixToken("@");
         options.SetQuote('"');
         options.SetSourceSize(explicit_length);
         options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped);
@@ -218,7 +218,7 @@ lldb_private::formatters::NSStringSummar
         options.SetLocation(location);
         options.SetProcessSP(process_sp);
         options.SetStream(&stream);
-        options.SetPrefixToken('@');
+        options.SetPrefixToken("@");
         options.SetQuote('"');
         options.SetSourceSize(explicit_length);
         options.SetNeedsZeroTermination(has_explicit_length == false);
@@ -237,7 +237,7 @@ lldb_private::formatters::NSStringSummar
         options.SetLocation(location);
         options.SetProcessSP(process_sp);
         options.SetStream(&stream);
-        options.SetPrefixToken('@');
+        options.SetPrefixToken("@");
         options.SetQuote('"');
         options.SetSourceSize(explicit_length);
         options.SetNeedsZeroTermination(has_explicit_length == false);
@@ -265,7 +265,7 @@ lldb_private::formatters::NSStringSummar
         options.SetLocation(location);
         options.SetProcessSP(process_sp);
         options.SetStream(&stream);
-        options.SetPrefixToken('@');
+        options.SetPrefixToken("@");
         options.SetSourceSize(explicit_length);
         options.SetNeedsZeroTermination(!has_explicit_length);
         options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped);
@@ -287,7 +287,7 @@ lldb_private::formatters::NSStringSummar
         StringPrinter::ReadStringAndDumpToStreamOptions options(valobj);
         options.SetLocation(location);
         options.SetProcessSP(process_sp);
-        options.SetPrefixToken('@');
+        options.SetPrefixToken("@");
         options.SetStream(&stream);
         options.SetSourceSize(explicit_length);
         options.SetIgnoreMaxLength(summary_options.GetCapping() == TypeSummaryCapping::eTypeSummaryUncapped);




More information about the lldb-commits mailing list