1 //===-- SBTypeSummary.h -------------------------------------------*- C++
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
8 //===----------------------------------------------------------------------===//
10 #ifndef LLDB_SBTypeSummary_h_
11 #define LLDB_SBTypeSummary_h_
13 #include "lldb/API/SBDefines.h"
16 class LLDB_API SBTypeSummaryOptions {
18 SBTypeSummaryOptions();
20 SBTypeSummaryOptions(const lldb::SBTypeSummaryOptions &rhs);
22 SBTypeSummaryOptions(const lldb_private::TypeSummaryOptions *lldb_object_ptr);
24 ~SBTypeSummaryOptions();
26 explicit operator bool() const;
30 lldb::LanguageType GetLanguage();
32 lldb::TypeSummaryCapping GetCapping();
34 void SetLanguage(lldb::LanguageType);
36 void SetCapping(lldb::TypeSummaryCapping);
41 lldb_private::TypeSummaryOptions *operator->();
43 const lldb_private::TypeSummaryOptions *operator->() const;
45 lldb_private::TypeSummaryOptions *get();
47 lldb_private::TypeSummaryOptions &ref();
49 const lldb_private::TypeSummaryOptions &ref() const;
51 void SetOptions(const lldb_private::TypeSummaryOptions *lldb_object_ptr);
54 std::unique_ptr<lldb_private::TypeSummaryOptions> m_opaque_up;
61 // Native function summary formatter callback
62 typedef bool (*FormatCallback)(SBValue, SBTypeSummaryOptions, SBStream &);
65 CreateWithSummaryString(const char *data,
66 uint32_t options = 0); // see lldb::eTypeOption values
69 CreateWithFunctionName(const char *data,
70 uint32_t options = 0); // see lldb::eTypeOption values
73 CreateWithScriptCode(const char *data,
74 uint32_t options = 0); // see lldb::eTypeOption values
76 static SBTypeSummary CreateWithCallback(FormatCallback cb,
78 const char *description = nullptr);
80 SBTypeSummary(const lldb::SBTypeSummary &rhs);
84 explicit operator bool() const;
88 bool IsFunctionCode();
90 bool IsFunctionName();
92 bool IsSummaryString();
94 const char *GetData();
96 void SetSummaryString(const char *data);
98 void SetFunctionName(const char *data);
100 void SetFunctionCode(const char *data);
102 uint32_t GetOptions();
104 void SetOptions(uint32_t);
106 bool GetDescription(lldb::SBStream &description,
107 lldb::DescriptionLevel description_level);
109 lldb::SBTypeSummary &operator=(const lldb::SBTypeSummary &rhs);
111 bool DoesPrintValue(lldb::SBValue value);
113 bool IsEqualTo(lldb::SBTypeSummary &rhs);
115 bool operator==(lldb::SBTypeSummary &rhs);
117 bool operator!=(lldb::SBTypeSummary &rhs);
120 friend class SBDebugger;
121 friend class SBTypeCategory;
122 friend class SBValue;
124 lldb::TypeSummaryImplSP GetSP();
126 void SetSP(const lldb::TypeSummaryImplSP &typefilter_impl_sp);
128 lldb::TypeSummaryImplSP m_opaque_sp;
130 SBTypeSummary(const lldb::TypeSummaryImplSP &);
132 bool CopyOnWrite_Impl();
134 bool ChangeSummaryType(bool want_script);
139 #endif // LLDB_SBTypeSummary_h_