1//===-- CxxStringTypes.h ----------------------------------------------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_CXXSTRINGTYPES_H
11#define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_CXXSTRINGTYPES_H
12
13#include "lldb/DataFormatters/StringPrinter.h"
14#include "lldb/DataFormatters/TypeSummary.h"
15#include "lldb/Utility/Stream.h"
16#include "lldb/ValueObject/ValueObject.h"
17
18namespace lldb_private {
19namespace formatters {
20bool Char8StringSummaryProvider(ValueObject &valobj, Stream &stream,
21 const TypeSummaryOptions &options); // char8_t*
22
23bool Char16StringSummaryProvider(
24 ValueObject &valobj, Stream &stream,
25 const TypeSummaryOptions &options); // char16_t* and unichar*
26
27bool Char32StringSummaryProvider(
28 ValueObject &valobj, Stream &stream,
29 const TypeSummaryOptions &options); // char32_t*
30
31bool WCharStringSummaryProvider(ValueObject &valobj, Stream &stream,
32 const TypeSummaryOptions &options); // wchar_t*
33
34bool Char8SummaryProvider(ValueObject &valobj, Stream &stream,
35 const TypeSummaryOptions &options); // char8_t
36
37bool Char16SummaryProvider(
38 ValueObject &valobj, Stream &stream,
39 const TypeSummaryOptions &options); // char16_t and unichar
40
41bool Char32SummaryProvider(ValueObject &valobj, Stream &stream,
42 const TypeSummaryOptions &options); // char32_t
43
44bool WCharSummaryProvider(ValueObject &valobj, Stream &stream,
45 const TypeSummaryOptions &options); // wchar_t
46
47std::optional<uint64_t> GetWCharByteSize(ValueObject &valobj);
48
49/// Print a summary for a string buffer to \a stream.
50///
51/// \param[in] stream
52/// The output stream to print the summary to.
53///
54/// \param[in] summary_options
55/// Options for printing the string contents. This function respects the
56/// capping.
57///
58/// \param[in] location_sp
59/// ValueObject of a pointer to the string being printed.
60///
61/// \param[in] size
62/// The size of the buffer pointed to by \a location_sp.
63///
64/// \param[in] prefix_token
65/// A prefix before the double quotes (e.g. 'u' results in u"...").
66///
67/// \return
68/// Returns whether the string buffer was successfully printed.
69template <StringPrinter::StringElementType element_type>
70bool StringBufferSummaryProvider(Stream &stream,
71 const TypeSummaryOptions &summary_options,
72 lldb::ValueObjectSP location_sp, uint64_t size,
73 std::string prefix_token);
74
75} // namespace formatters
76} // namespace lldb_private
77
78#endif // LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_CXXSTRINGTYPES_H
79

source code of lldb/source/Plugins/Language/CPlusPlus/CxxStringTypes.h