bool lldb_private::formatters::WCharSummaryProvider (ValueObject& valobj, Stream& stream) { DataExtractor data; valobj.GetData(data); clang::ASTContext* ast = valobj.GetClangType().GetASTContext(); if (!ast) return false; ClangASTType wchar_clang_type = ClangASTContext::GetBasicType(ast, lldb::eBasicTypeWChar); const uint32_t wchar_size = wchar_clang_type.GetBitSize(); std::string value; switch (wchar_size) { case 8: // utf 8 valobj.GetValueAsCString(lldb::eFormatChar, value); if (!value.empty()) stream.Printf("%s ", value.c_str()); return DumpUTFBufferToStream<UTF8>(nullptr, data, stream, 'L', '\'', 1); case 16: // utf 16 valobj.GetValueAsCString(lldb::eFormatUnicode16, value); if (!value.empty()) stream.Printf("%s ", value.c_str()); return DumpUTFBufferToStream<UTF16>(ConvertUTF16toUTF8, data, stream, 'L', '\'', 1); case 32: // utf 32 valobj.GetValueAsCString(lldb::eFormatUnicode32, value); if (!value.empty()) stream.Printf("%s ", value.c_str()); return DumpUTFBufferToStream<UTF32>(ConvertUTF32toUTF8, data, stream, 'L', '\'', 1); default: stream.Printf("size for wchar_t is not valid"); return true; } return true; }
bool lldb_private::formatters::Char32SummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions&) { DataExtractor data; Error error; valobj.GetData(data, error); if (error.Fail()) return false; std::string value; valobj.GetValueAsCString(lldb::eFormatUnicode32, value); if (!value.empty()) stream.Printf("%s ", value.c_str()); ReadBufferAndDumpToStreamOptions options(valobj); options.SetData(data); options.SetStream(&stream); options.SetPrefixToken('U'); options.SetQuote('\''); options.SetSourceSize(1); options.SetBinaryZeroIsTerminator(false); return ReadBufferAndDumpToStream<StringElementType::UTF32>(options); }
bool lldb_private::formatters::Char32SummaryProvider (ValueObject& valobj, Stream& stream) { DataExtractor data; valobj.GetData(data); std::string value; valobj.GetValueAsCString(lldb::eFormatUnicode32, value); if (!value.empty()) stream.Printf("%s ", value.c_str()); return DumpUTFBufferToStream<UTF32>(ConvertUTF32toUTF8,data,stream, 'U','\'',1); }