diff options
| author | Shafik Yaghmour <syaghmour@apple.com> | 2018-10-26 17:00:48 +0000 |
|---|---|---|
| committer | Shafik Yaghmour <syaghmour@apple.com> | 2018-10-26 17:00:48 +0000 |
| commit | 693fbf5c930b720dc6dd86a3ca8c7cfe6ff245e6 (patch) | |
| tree | afe531d6bfa0a0362d5387e10fa84fec35c735f2 /lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp | |
| parent | b914eaf45f5d40d53437a981d4f6211926550d58 (diff) | |
| download | bcm5719-llvm-693fbf5c930b720dc6dd86a3ca8c7cfe6ff245e6.tar.gz bcm5719-llvm-693fbf5c930b720dc6dd86a3ca8c7cfe6ff245e6.zip | |
[DataFormatters] Adding formatters for libc++ std::u16string and std::u32string
rdar://problem/41302849
Differential Revision: https://reviews.llvm.org/D53656
llvm-svn: 345402
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp')
| -rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp index aa91e8f47c2..15e992581c4 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp @@ -599,9 +599,10 @@ bool lldb_private::formatters::LibcxxWStringSummaryProvider( return true; } -bool lldb_private::formatters::LibcxxStringSummaryProvider( - ValueObject &valobj, Stream &stream, - const TypeSummaryOptions &summary_options) { +template <StringPrinter::StringElementType element_type> +bool LibcxxStringSummaryProvider(ValueObject &valobj, Stream &stream, + const TypeSummaryOptions &summary_options, + std::string prefix_token = "") { uint64_t size = 0; ValueObjectSP location_sp; @@ -630,12 +631,37 @@ bool lldb_private::formatters::LibcxxStringSummaryProvider( options.SetData(extractor); options.SetStream(&stream); - options.SetPrefixToken(nullptr); + + if (prefix_token.empty()) + options.SetPrefixToken(nullptr); + else + options.SetPrefixToken(prefix_token); + options.SetQuote('"'); options.SetSourceSize(size); options.SetBinaryZeroIsTerminator(false); - StringPrinter::ReadBufferAndDumpToStream< - StringPrinter::StringElementType::ASCII>(options); + StringPrinter::ReadBufferAndDumpToStream<element_type>(options); return true; } + +bool lldb_private::formatters::LibcxxStringSummaryProviderASCII( + ValueObject &valobj, Stream &stream, + const TypeSummaryOptions &summary_options) { + return LibcxxStringSummaryProvider<StringPrinter::StringElementType::ASCII>( + valobj, stream, summary_options); +} + +bool lldb_private::formatters::LibcxxStringSummaryProviderUTF16( + ValueObject &valobj, Stream &stream, + const TypeSummaryOptions &summary_options) { + return LibcxxStringSummaryProvider<StringPrinter::StringElementType::UTF16>( + valobj, stream, summary_options, "u"); +} + +bool lldb_private::formatters::LibcxxStringSummaryProviderUTF32( + ValueObject &valobj, Stream &stream, + const TypeSummaryOptions &summary_options) { + return LibcxxStringSummaryProvider<StringPrinter::StringElementType::UTF32>( + valobj, stream, summary_options, "U"); +} |

