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