]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/include/lldb/DataFormatters/DataVisualization.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / include / lldb / DataFormatters / DataVisualization.h
1 //===-- DataVisualization.h ----------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef lldb_DataVisualization_h_
11 #define lldb_DataVisualization_h_
12
13 // C Includes
14 // C++ Includes
15
16 // Other libraries and framework includes
17 // Project includes
18 #include "lldb/Core/ConstString.h"
19 #include "lldb/DataFormatters/FormatClasses.h"
20 #include "lldb/DataFormatters/FormatManager.h"
21
22 namespace lldb_private {
23
24 // this class is the high-level front-end of LLDB Data Visualization
25 // code in FormatManager.h/cpp is the low-level implementation of this feature
26 // clients should refer to this class as the entry-point into the data formatters
27 // unless they have a good reason to bypass this and go to the backend
28 class DataVisualization
29 {
30 public:
31     
32     // use this call to force the FM to consider itself updated even when there is no apparent reason for that
33     static void
34     ForceUpdate();
35     
36     static uint32_t
37     GetCurrentRevision ();
38     
39     static bool
40     ShouldPrintAsOneLiner (ValueObject& valobj);
41     
42     static lldb::TypeFormatImplSP
43     GetFormat (ValueObject& valobj,
44                lldb::DynamicValueType use_dynamic);
45     
46     static lldb::TypeFormatImplSP
47     GetFormatForType (lldb::TypeNameSpecifierImplSP type_sp);
48     
49     static lldb::TypeSummaryImplSP
50     GetSummaryFormat (ValueObject& valobj,
51                       lldb::DynamicValueType use_dynamic);
52
53     static lldb::TypeSummaryImplSP
54     GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp);
55     
56 #ifndef LLDB_DISABLE_PYTHON
57     static lldb::SyntheticChildrenSP
58     GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp);
59 #endif
60     
61     static lldb::TypeFilterImplSP
62     GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp);
63
64 #ifndef LLDB_DISABLE_PYTHON
65     static lldb::ScriptedSyntheticChildrenSP
66     GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp);
67 #endif
68     
69 #ifndef LLDB_DISABLE_PYTHON
70     static lldb::SyntheticChildrenSP
71     GetSyntheticChildren(ValueObject& valobj,
72                          lldb::DynamicValueType use_dynamic);
73 #endif
74     
75     static bool
76     AnyMatches(ConstString type_name,
77                TypeCategoryImpl::FormatCategoryItems items = TypeCategoryImpl::ALL_ITEM_TYPES,
78                bool only_enabled = true,
79                const char** matching_category = NULL,
80                TypeCategoryImpl::FormatCategoryItems* matching_type = NULL);
81     
82     class NamedSummaryFormats
83     {
84     public:
85         static bool
86         GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry);
87         
88         static void
89         Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry);
90         
91         static bool
92         Delete (const ConstString &type);
93         
94         static void
95         Clear ();
96         
97         static void
98         LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton);
99         
100         static uint32_t
101         GetCount ();
102     };
103     
104     class Categories
105     {
106     public:
107         
108         static bool
109         GetCategory (const ConstString &category,
110                      lldb::TypeCategoryImplSP &entry,
111                      bool allow_create = true);
112
113         static void
114         Add (const ConstString &category);
115         
116         static bool
117         Delete (const ConstString &category);
118         
119         static void
120         Clear ();
121         
122         static void
123         Clear (const ConstString &category);
124         
125         static void
126         Enable (const ConstString& category,
127                 TypeCategoryMap::Position = TypeCategoryMap::Default);
128         
129         static void
130         Disable (const ConstString& category);
131
132         static void
133         Enable (const lldb::TypeCategoryImplSP& category,
134                 TypeCategoryMap::Position = TypeCategoryMap::Default);
135         
136         static void
137         Disable (const lldb::TypeCategoryImplSP& category);
138         
139         static void
140         LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton);
141         
142         static uint32_t
143         GetCount ();
144         
145         static lldb::TypeCategoryImplSP
146         GetCategoryAtIndex (size_t);
147     };
148 };
149
150     
151 } // namespace lldb_private
152
153 #endif  // lldb_DataVisualization_h_