#include "lldb/DataFormatters/StringPrinter.h"
#include "lldb/Core/Debugger.h"
#include "lldb/Core/ValueObject.h"
#include "lldb/Target/Language.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/Status.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/ConvertUTF.h"
#include <cctype>
#include <locale>
#include <memory>
usingnamespacelldb;
usingnamespacelldb_private;
usingnamespacelldb_private::formatters;
GetPrintableElementType;
StringElementType;
class DecodedCharBuffer { … };
EscapingHelper;
template <StringElementType type>
static DecodedCharBuffer
GetPrintableImpl(uint8_t *buffer, uint8_t *buffer_end, uint8_t *&next,
StringPrinter::EscapeStyle escape_style);
static bool isprint32(char32_t codepoint) { … }
DecodedCharBuffer attemptASCIIEscape(llvm::UTF32 c,
StringPrinter::EscapeStyle escape_style) { … }
template <>
DecodedCharBuffer GetPrintableImpl<StringElementType::ASCII>(
uint8_t *buffer, uint8_t *buffer_end, uint8_t *&next,
StringPrinter::EscapeStyle escape_style) { … }
template <>
DecodedCharBuffer GetPrintableImpl<StringElementType::UTF8>(
uint8_t *buffer, uint8_t *buffer_end, uint8_t *&next,
StringPrinter::EscapeStyle escape_style) { … }
static DecodedCharBuffer GetPrintable(StringElementType type, uint8_t *buffer,
uint8_t *buffer_end, uint8_t *&next,
StringPrinter::EscapeStyle escape_style) { … }
static EscapingHelper
GetDefaultEscapingHelper(GetPrintableElementType elem_type,
StringPrinter::EscapeStyle escape_style) { … }
template <typename SourceDataType>
static bool DumpEncodedBufferToStream(
GetPrintableElementType style,
llvm::ConversionResult (*ConvertFunction)(const SourceDataType **,
const SourceDataType *,
llvm::UTF8 **, llvm::UTF8 *,
llvm::ConversionFlags),
const StringPrinter::ReadBufferAndDumpToStreamOptions &dump_options) { … }
lldb_private::formatters::StringPrinter::ReadStringAndDumpToStreamOptions::
ReadStringAndDumpToStreamOptions(ValueObject &valobj)
: … { … }
lldb_private::formatters::StringPrinter::ReadBufferAndDumpToStreamOptions::
ReadBufferAndDumpToStreamOptions(ValueObject &valobj)
: … { … }
lldb_private::formatters::StringPrinter::ReadBufferAndDumpToStreamOptions::
ReadBufferAndDumpToStreamOptions(
const ReadStringAndDumpToStreamOptions &options)
: … { … }
namespace lldb_private {
namespace formatters {
template <typename SourceDataType>
static bool ReadEncodedBufferAndDumpToStream(
StringElementType elem_type,
const StringPrinter::ReadStringAndDumpToStreamOptions &options,
llvm::ConversionResult (*ConvertFunction)(const SourceDataType **,
const SourceDataType *,
llvm::UTF8 **, llvm::UTF8 *,
llvm::ConversionFlags)) { … }
template <>
bool StringPrinter::ReadStringAndDumpToStream<StringElementType::UTF8>(
const ReadStringAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadStringAndDumpToStream<StringElementType::UTF16>(
const ReadStringAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadStringAndDumpToStream<StringElementType::UTF32>(
const ReadStringAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadStringAndDumpToStream<StringElementType::ASCII>(
const ReadStringAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadBufferAndDumpToStream<StringElementType::UTF8>(
const ReadBufferAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadBufferAndDumpToStream<StringElementType::UTF16>(
const ReadBufferAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadBufferAndDumpToStream<StringElementType::UTF32>(
const ReadBufferAndDumpToStreamOptions &options) { … }
template <>
bool StringPrinter::ReadBufferAndDumpToStream<StringElementType::ASCII>(
const ReadBufferAndDumpToStreamOptions &options) { … }
}
}