1 | //===-- DataVisualization.h -------------------------------------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef LLDB_DATAFORMATTERS_DATAVISUALIZATION_H |
10 | #define LLDB_DATAFORMATTERS_DATAVISUALIZATION_H |
11 | |
12 | #include "lldb/DataFormatters/FormatClasses.h" |
13 | #include "lldb/DataFormatters/FormatManager.h" |
14 | #include "lldb/Utility/ConstString.h" |
15 | |
16 | namespace lldb_private { |
17 | |
18 | // this class is the high-level front-end of LLDB Data Visualization code in |
19 | // FormatManager.h/cpp is the low-level implementation of this feature clients |
20 | // should refer to this class as the entry-point into the data formatters |
21 | // unless they have a good reason to bypass this and go to the backend |
22 | class DataVisualization { |
23 | public: |
24 | // use this call to force the FM to consider itself updated even when there |
25 | // is no apparent reason for that |
26 | static void ForceUpdate(); |
27 | |
28 | static uint32_t GetCurrentRevision(); |
29 | |
30 | static bool ShouldPrintAsOneLiner(ValueObject &valobj); |
31 | |
32 | static lldb::TypeFormatImplSP GetFormat(ValueObject &valobj, |
33 | lldb::DynamicValueType use_dynamic); |
34 | |
35 | static lldb::TypeFormatImplSP |
36 | GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp); |
37 | |
38 | static lldb::TypeSummaryImplSP |
39 | GetSummaryFormat(ValueObject &valobj, lldb::DynamicValueType use_dynamic); |
40 | |
41 | static lldb::TypeSummaryImplSP |
42 | GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp); |
43 | |
44 | static lldb::TypeFilterImplSP |
45 | GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp); |
46 | |
47 | static lldb::ScriptedSyntheticChildrenSP |
48 | GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp); |
49 | |
50 | static lldb::SyntheticChildrenSP |
51 | GetSyntheticChildren(ValueObject &valobj, lldb::DynamicValueType use_dynamic); |
52 | |
53 | static bool |
54 | AnyMatches(const FormattersMatchCandidate &candidate_type, |
55 | TypeCategoryImpl::FormatCategoryItems items = |
56 | TypeCategoryImpl::ALL_ITEM_TYPES, |
57 | bool only_enabled = true, const char **matching_category = nullptr, |
58 | TypeCategoryImpl::FormatCategoryItems *matching_type = nullptr); |
59 | |
60 | class NamedSummaryFormats { |
61 | public: |
62 | static bool GetSummaryFormat(ConstString type, |
63 | lldb::TypeSummaryImplSP &entry); |
64 | |
65 | static void Add(ConstString type, |
66 | const lldb::TypeSummaryImplSP &entry); |
67 | |
68 | static bool Delete(ConstString type); |
69 | |
70 | static void Clear(); |
71 | |
72 | static void ForEach(std::function<bool(const TypeMatcher &, |
73 | const lldb::TypeSummaryImplSP &)> |
74 | callback); |
75 | |
76 | static uint32_t GetCount(); |
77 | }; |
78 | |
79 | class Categories { |
80 | public: |
81 | static bool GetCategory(ConstString category, |
82 | lldb::TypeCategoryImplSP &entry, |
83 | bool allow_create = true); |
84 | |
85 | static bool GetCategory(lldb::LanguageType language, |
86 | lldb::TypeCategoryImplSP &entry); |
87 | |
88 | static void Add(ConstString category); |
89 | |
90 | static bool Delete(ConstString category); |
91 | |
92 | static void Clear(); |
93 | |
94 | static void Clear(ConstString category); |
95 | |
96 | static void Enable(ConstString category, |
97 | TypeCategoryMap::Position = TypeCategoryMap::Default); |
98 | |
99 | static void Enable(lldb::LanguageType lang_type); |
100 | |
101 | static void Disable(ConstString category); |
102 | |
103 | static void Disable(lldb::LanguageType lang_type); |
104 | |
105 | static void Enable(const lldb::TypeCategoryImplSP &category, |
106 | TypeCategoryMap::Position = TypeCategoryMap::Default); |
107 | |
108 | static void Disable(const lldb::TypeCategoryImplSP &category); |
109 | |
110 | static void EnableStar(); |
111 | |
112 | static void DisableStar(); |
113 | |
114 | static void ForEach(TypeCategoryMap::ForEachCallback callback); |
115 | |
116 | static uint32_t GetCount(); |
117 | |
118 | static lldb::TypeCategoryImplSP GetCategoryAtIndex(size_t); |
119 | }; |
120 | }; |
121 | |
122 | } // namespace lldb_private |
123 | |
124 | #endif // LLDB_DATAFORMATTERS_DATAVISUALIZATION_H |
125 | |