xref: /freebsd/contrib/llvm-project/lldb/source/Plugins/Language/CPlusPlus/CxxStringTypes.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
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 
18 namespace lldb_private {
19 namespace formatters {
20 bool Char8StringSummaryProvider(ValueObject &valobj, Stream &stream,
21                                 const TypeSummaryOptions &options); // char8_t*
22 
23 bool Char16StringSummaryProvider(
24     ValueObject &valobj, Stream &stream,
25     const TypeSummaryOptions &options); // char16_t* and unichar*
26 
27 bool Char32StringSummaryProvider(
28     ValueObject &valobj, Stream &stream,
29     const TypeSummaryOptions &options); // char32_t*
30 
31 bool WCharStringSummaryProvider(ValueObject &valobj, Stream &stream,
32                                 const TypeSummaryOptions &options); // wchar_t*
33 
34 bool Char8SummaryProvider(ValueObject &valobj, Stream &stream,
35                           const TypeSummaryOptions &options); // char8_t
36 
37 bool Char16SummaryProvider(
38     ValueObject &valobj, Stream &stream,
39     const TypeSummaryOptions &options); // char16_t and unichar
40 
41 bool Char32SummaryProvider(ValueObject &valobj, Stream &stream,
42                            const TypeSummaryOptions &options); // char32_t
43 
44 bool WCharSummaryProvider(ValueObject &valobj, Stream &stream,
45                           const TypeSummaryOptions &options); // wchar_t
46 
47 std::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.
69 template <StringPrinter::StringElementType element_type>
70 bool 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