LLDB  mainline
TypeCategory.cpp
Go to the documentation of this file.
1 //===-- TypeCategory.cpp --------------------------------------------------===//
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 
10 #include "lldb/Target/Language.h"
11 
12 
13 using namespace lldb;
14 using namespace lldb_private;
15 
16 TypeCategoryImpl::TypeCategoryImpl(IFormatChangeListener *clist,
17  ConstString name)
18  : m_format_cont(clist), m_summary_cont(clist), m_filter_cont(clist),
19  m_synth_cont(clist), m_enabled(false), m_change_listener(clist),
20  m_mutex(), m_name(name), m_languages() {}
21 
22 static bool IsApplicable(lldb::LanguageType category_lang,
23  lldb::LanguageType valobj_lang) {
24  switch (category_lang) {
25  // Unless we know better, allow only exact equality.
26  default:
27  return category_lang == valobj_lang;
28 
29  // the C family, we consider it as one
30  case eLanguageTypeC89:
31  case eLanguageTypeC:
32  case eLanguageTypeC99:
33  return valobj_lang == eLanguageTypeC89 || valobj_lang == eLanguageTypeC ||
34  valobj_lang == eLanguageTypeC99;
35 
36  // ObjC knows about C and itself
37  case eLanguageTypeObjC:
38  return valobj_lang == eLanguageTypeC89 || valobj_lang == eLanguageTypeC ||
39  valobj_lang == eLanguageTypeC99 || valobj_lang == eLanguageTypeObjC;
40 
41  // C++ knows about C and C++
43  return valobj_lang == eLanguageTypeC89 || valobj_lang == eLanguageTypeC ||
44  valobj_lang == eLanguageTypeC99 ||
45  valobj_lang == eLanguageTypeC_plus_plus;
46 
47  // ObjC++ knows about C,C++,ObjC and ObjC++
49  return valobj_lang == eLanguageTypeC89 || valobj_lang == eLanguageTypeC ||
50  valobj_lang == eLanguageTypeC99 ||
51  valobj_lang == eLanguageTypeC_plus_plus ||
52  valobj_lang == eLanguageTypeObjC;
53 
54  // Categories with unspecified language match everything.
56  return true;
57  }
58 }
59 
61  for (size_t idx = 0; idx < GetNumLanguages(); idx++) {
62  const lldb::LanguageType category_lang = GetLanguageAtIndex(idx);
63  if (::IsApplicable(category_lang, lang))
64  return true;
65  }
66  return false;
67 }
68 
70  if (m_languages.empty())
71  return 1;
72  return m_languages.size();
73 }
74 
76  if (m_languages.empty())
78  return m_languages[idx];
79 }
80 
82  m_languages.push_back(lang);
83 }
84 
86  const FormattersMatchVector &candidates,
87  lldb::TypeFormatImplSP &entry) {
88  if (!IsEnabled() || !IsApplicable(lang))
89  return false;
90  if (GetTypeFormatsContainer()->Get(candidates, entry))
91  return true;
92  bool regex = GetRegexTypeFormatsContainer()->Get(candidates, entry);
93  return regex;
94 }
95 
97  const FormattersMatchVector &candidates,
98  lldb::TypeSummaryImplSP &entry) {
99  if (!IsEnabled() || !IsApplicable(lang))
100  return false;
101  if (GetTypeSummariesContainer()->Get(candidates, entry))
102  return true;
103  bool regex = GetRegexTypeSummariesContainer()->Get(candidates, entry);
104  return regex;
105 }
106 
108  const FormattersMatchVector &candidates,
109  lldb::SyntheticChildrenSP &entry) {
110  if (!IsEnabled() || !IsApplicable(lang))
111  return false;
113  // first find both Filter and Synth, and then check which is most recent
114 
115  if (!GetTypeFiltersContainer()->Get(candidates, filter_sp))
116  GetRegexTypeFiltersContainer()->Get(candidates, filter_sp);
117 
118  bool pick_synth = false;
120  if (!GetTypeSyntheticsContainer()->Get(candidates, synth))
121  GetRegexTypeSyntheticsContainer()->Get(candidates, synth);
122  if (!filter_sp.get() && !synth.get())
123  return false;
124  else if (!filter_sp.get() && synth.get())
125  pick_synth = true;
126 
127  else if (filter_sp.get() && !synth.get())
128  pick_synth = false;
129 
130  else /*if (filter_sp.get() && synth.get())*/
131  {
132  pick_synth = filter_sp->GetRevision() <= synth->GetRevision();
133  }
134  if (pick_synth) {
135  entry = synth;
136  return true;
137  } else {
138  entry = filter_sp;
139  return true;
140  }
141  return false;
142 }
143 
146  GetTypeFormatsContainer()->Clear();
148  GetRegexTypeFormatsContainer()->Clear();
149 
151  GetTypeSummariesContainer()->Clear();
152  if ((items & eFormatCategoryItemRegexSummary) ==
155 
157  GetTypeFiltersContainer()->Clear();
158  if ((items & eFormatCategoryItemRegexFilter) ==
160  GetRegexTypeFiltersContainer()->Clear();
161 
163  GetTypeSyntheticsContainer()->Clear();
166 }
167 
169  bool success = false;
170 
172  success = GetTypeFormatsContainer()->Delete(name) || success;
174  success = GetRegexTypeFormatsContainer()->Delete(name) || success;
175 
177  success = GetTypeSummariesContainer()->Delete(name) || success;
178  if ((items & eFormatCategoryItemRegexSummary) ==
180  success = GetRegexTypeSummariesContainer()->Delete(name) || success;
181 
183  success = GetTypeFiltersContainer()->Delete(name) || success;
184  if ((items & eFormatCategoryItemRegexFilter) ==
186  success = GetRegexTypeFiltersContainer()->Delete(name) || success;
187 
189  success = GetTypeSyntheticsContainer()->Delete(name) || success;
191  success = GetRegexTypeSyntheticsContainer()->Delete(name) || success;
192 
193  return success;
194 }
195 
197  uint32_t count = 0;
198 
200  count += GetTypeFormatsContainer()->GetCount();
202  count += GetRegexTypeFormatsContainer()->GetCount();
203 
205  count += GetTypeSummariesContainer()->GetCount();
206  if ((items & eFormatCategoryItemRegexSummary) ==
208  count += GetRegexTypeSummariesContainer()->GetCount();
209 
211  count += GetTypeFiltersContainer()->GetCount();
212  if ((items & eFormatCategoryItemRegexFilter) ==
214  count += GetRegexTypeFiltersContainer()->GetCount();
215 
217  count += GetTypeSyntheticsContainer()->GetCount();
219  count += GetRegexTypeSyntheticsContainer()->GetCount();
220 
221  return count;
222 }
223 
225  FormatCategoryItems items, bool only_enabled,
226  const char **matching_category,
227  FormatCategoryItems *matching_type) {
228  if (!IsEnabled() && only_enabled)
229  return false;
230 
231  lldb::TypeFormatImplSP format_sp;
232  lldb::TypeSummaryImplSP summary_sp;
235 
237  if (GetTypeFormatsContainer()->Get(type_name, format_sp)) {
238  if (matching_category)
239  *matching_category = m_name.GetCString();
240  if (matching_type)
241  *matching_type = eFormatCategoryItemValue;
242  return true;
243  }
244  }
245  if ((items & eFormatCategoryItemRegexValue) ==
247  if (GetRegexTypeFormatsContainer()->Get(type_name, format_sp)) {
248  if (matching_category)
249  *matching_category = m_name.GetCString();
250  if (matching_type)
251  *matching_type = eFormatCategoryItemRegexValue;
252  return true;
253  }
254  }
255 
257  if (GetTypeSummariesContainer()->Get(type_name, summary_sp)) {
258  if (matching_category)
259  *matching_category = m_name.GetCString();
260  if (matching_type)
261  *matching_type = eFormatCategoryItemSummary;
262  return true;
263  }
264  }
265  if ((items & eFormatCategoryItemRegexSummary) ==
267  if (GetRegexTypeSummariesContainer()->Get(type_name, summary_sp)) {
268  if (matching_category)
269  *matching_category = m_name.GetCString();
270  if (matching_type)
271  *matching_type = eFormatCategoryItemRegexSummary;
272  return true;
273  }
274  }
275 
277  if (GetTypeFiltersContainer()->Get(type_name, filter_sp)) {
278  if (matching_category)
279  *matching_category = m_name.GetCString();
280  if (matching_type)
281  *matching_type = eFormatCategoryItemFilter;
282  return true;
283  }
284  }
285  if ((items & eFormatCategoryItemRegexFilter) ==
287  if (GetRegexTypeFiltersContainer()->Get(type_name, filter_sp)) {
288  if (matching_category)
289  *matching_category = m_name.GetCString();
290  if (matching_type)
291  *matching_type = eFormatCategoryItemRegexFilter;
292  return true;
293  }
294  }
295 
297  if (GetTypeSyntheticsContainer()->Get(type_name, synth_sp)) {
298  if (matching_category)
299  *matching_category = m_name.GetCString();
300  if (matching_type)
301  *matching_type = eFormatCategoryItemSynth;
302  return true;
303  }
304  }
305  if ((items & eFormatCategoryItemRegexSynth) ==
307  if (GetRegexTypeSyntheticsContainer()->Get(type_name, synth_sp)) {
308  if (matching_category)
309  *matching_category = m_name.GetCString();
310  if (matching_type)
311  *matching_type = eFormatCategoryItemRegexSynth;
312  return true;
313  }
314  }
315 
316  return false;
317 }
318 
320 TypeCategoryImpl::GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp) {
322 
323  if (type_sp) {
324  if (type_sp->IsRegex())
325  GetRegexTypeFormatsContainer()->GetExact(ConstString(type_sp->GetName()),
326  retval);
327  else
328  GetTypeFormatsContainer()->GetExact(ConstString(type_sp->GetName()),
329  retval);
330  }
331 
332  return retval;
333 }
334 
336 TypeCategoryImpl::GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp) {
338 
339  if (type_sp) {
340  if (type_sp->IsRegex())
341  GetRegexTypeSummariesContainer()->GetExact(
342  ConstString(type_sp->GetName()), retval);
343  else
344  GetTypeSummariesContainer()->GetExact(ConstString(type_sp->GetName()),
345  retval);
346  }
347 
348  return retval;
349 }
350 
352 TypeCategoryImpl::GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp) {
354 
355  if (type_sp) {
356  if (type_sp->IsRegex())
357  GetRegexTypeFiltersContainer()->GetExact(ConstString(type_sp->GetName()),
358  retval);
359  else
360  GetTypeFiltersContainer()->GetExact(ConstString(type_sp->GetName()),
361  retval);
362  }
363 
364  return retval;
365 }
366 
368 TypeCategoryImpl::GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp) {
370 
371  if (type_sp) {
372  if (type_sp->IsRegex())
374  ConstString(type_sp->GetName()), retval);
375  else
376  GetTypeSyntheticsContainer()->GetExact(ConstString(type_sp->GetName()),
377  retval);
378  }
379 
380  return retval;
381 }
382 
383 lldb::TypeNameSpecifierImplSP
385  if (index < GetTypeSummariesContainer()->GetCount())
386  return GetTypeSummariesContainer()->GetTypeNameSpecifierAtIndex(index);
387  else
388  return GetRegexTypeSummariesContainer()->GetTypeNameSpecifierAtIndex(
389  index - GetTypeSummariesContainer()->GetCount());
390 }
391 
394  if (index < GetTypeFormatsContainer()->GetCount())
395  return GetTypeFormatsContainer()->GetAtIndex(index);
396  else
397  return GetRegexTypeFormatsContainer()->GetAtIndex(
398  index - GetTypeFormatsContainer()->GetCount());
399 }
400 
403  if (index < GetTypeSummariesContainer()->GetCount())
404  return GetTypeSummariesContainer()->GetAtIndex(index);
405  else
406  return GetRegexTypeSummariesContainer()->GetAtIndex(
407  index - GetTypeSummariesContainer()->GetCount());
408 }
409 
412  if (index < GetTypeFiltersContainer()->GetCount())
413  return GetTypeFiltersContainer()->GetAtIndex(index);
414  else
415  return GetRegexTypeFiltersContainer()->GetAtIndex(
416  index - GetTypeFiltersContainer()->GetCount());
417 }
418 
419 lldb::TypeNameSpecifierImplSP
421  if (index < GetTypeFormatsContainer()->GetCount())
422  return GetTypeFormatsContainer()->GetTypeNameSpecifierAtIndex(index);
423  else
424  return GetRegexTypeFormatsContainer()->GetTypeNameSpecifierAtIndex(
425  index - GetTypeFormatsContainer()->GetCount());
426 }
427 
428 lldb::TypeNameSpecifierImplSP
430  if (index < GetTypeFiltersContainer()->GetCount())
431  return GetTypeFiltersContainer()->GetTypeNameSpecifierAtIndex(index);
432  else
433  return GetRegexTypeFiltersContainer()->GetTypeNameSpecifierAtIndex(
434  index - GetTypeFiltersContainer()->GetCount());
435 }
436 
439  if (index < GetTypeSyntheticsContainer()->GetCount())
440  return GetTypeSyntheticsContainer()->GetAtIndex(index);
441  else
442  return GetRegexTypeSyntheticsContainer()->GetAtIndex(
443  index - GetTypeSyntheticsContainer()->GetCount());
444 }
445 
446 lldb::TypeNameSpecifierImplSP
448  if (index < GetTypeSyntheticsContainer()->GetCount())
449  return GetTypeSyntheticsContainer()->GetTypeNameSpecifierAtIndex(index);
450  else
451  return GetRegexTypeSyntheticsContainer()->GetTypeNameSpecifierAtIndex(
452  index - GetTypeSyntheticsContainer()->GetCount());
453 }
454 
455 void TypeCategoryImpl::Enable(bool value, uint32_t position) {
456  std::lock_guard<std::recursive_mutex> guard(m_mutex);
457  if ((m_enabled = value))
458  m_enabled_position = position;
459  if (m_change_listener)
461 }
462 
464  StreamString stream;
465  stream.Printf("%s (%s", GetName(), (IsEnabled() ? "enabled" : "disabled"));
466  StreamString lang_stream;
467  lang_stream.Printf(", applicable for language(s): ");
468  bool print_lang = false;
469  for (size_t idx = 0; idx < GetNumLanguages(); idx++) {
470  const lldb::LanguageType lang = GetLanguageAtIndex(idx);
471  if (lang != lldb::eLanguageTypeUnknown)
472  print_lang = true;
473  lang_stream.Printf("%s%s", Language::GetNameForLanguageType(lang),
474  idx + 1 < GetNumLanguages() ? ", " : "");
475  }
476  if (print_lang)
477  stream.PutCString(lang_stream.GetString());
478  stream.PutChar(')');
479  return std::string(stream.GetString());
480 }
lldb_private::TypeCategoryImpl::GetTypeFormatsContainer
FormatContainerSP GetTypeFormatsContainer()
Definition: TypeCategory.h:204
lldb_private::TypeCategoryImpl::GetFormatForType
FormatContainer::MapValueType GetFormatForType(lldb::TypeNameSpecifierImplSP type_sp)
Definition: TypeCategory.cpp:320
lldb_private::TypeCategoryImpl::GetSummaryForType
SummaryContainer::MapValueType GetSummaryForType(lldb::TypeNameSpecifierImplSP type_sp)
Definition: TypeCategory.cpp:336
lldb_private::TypeCategoryImpl::GetRegexTypeFormatsContainer
RegexFormatContainerSP GetRegexTypeFormatsContainer()
Definition: TypeCategory.h:208
lldb_private::TypeCategoryImpl::GetTypeNameSpecifierForSyntheticAtIndex
lldb::TypeNameSpecifierImplSP GetTypeNameSpecifierForSyntheticAtIndex(size_t index)
Definition: TypeCategory.cpp:447
lldb_private::FormatterContainerPair< TypeFormatImpl >::MapValueType
ExactMatchContainer::ValueSP MapValueType
Definition: TypeCategory.h:34
lldb_private::TypeCategoryImpl::m_change_listener
IFormatChangeListener * m_change_listener
Definition: TypeCategory.h:326
lldb_private::eFormatCategoryItemSummary
@ eFormatCategoryItemSummary
Definition: lldb-private-enumerations.h:131
lldb_private::TypeCategoryImpl::GetTypeNameSpecifierForFilterAtIndex
lldb::TypeNameSpecifierImplSP GetTypeNameSpecifierForFilterAtIndex(size_t index)
Definition: TypeCategory.cpp:429
lldb::eLanguageTypeC99
@ eLanguageTypeC99
ISO C:1999.
Definition: lldb-enumerations.h:449
lldb_private::TypeCategoryImpl::GetTypeSyntheticsContainer
SynthContainerSP GetTypeSyntheticsContainer()
Definition: TypeCategory.h:261
lldb_private::eFormatCategoryItemSynth
@ eFormatCategoryItemSynth
Definition: lldb-private-enumerations.h:135
lldb::LanguageType
LanguageType
Programming language type.
Definition: lldb-enumerations.h:436
lldb_private::TypeCategoryImpl::Delete
bool Delete(ConstString name, FormatCategoryItems items=ALL_ITEM_TYPES)
Definition: TypeCategory.cpp:168
lldb_private::eFormatCategoryItemFilter
@ eFormatCategoryItemFilter
Definition: lldb-private-enumerations.h:133
lldb_private::eFormatCategoryItemRegexFilter
@ eFormatCategoryItemRegexFilter
Definition: lldb-private-enumerations.h:134
lldb_private::TypeCategoryImpl::GetName
const char * GetName()
Definition: TypeCategory.h:300
Language.h
lldb_private::TypeCategoryImpl::IsEnabled
bool IsEnabled() const
Definition: TypeCategory.h:276
lldb_private::TypeCategoryImpl::GetSummaryAtIndex
SummaryContainer::MapValueType GetSummaryAtIndex(size_t index)
Definition: TypeCategory.cpp:402
lldb_private::StreamString::GetString
llvm::StringRef GetString() const
Definition: StreamString.cpp:51
lldb_private::IFormatChangeListener::Changed
virtual void Changed()=0
lldb_private::TypeCategoryImpl::GetFilterAtIndex
FilterContainer::MapValueType GetFilterAtIndex(size_t index)
Definition: TypeCategory.cpp:411
lldb_private::TypeCategoryImpl::GetRegexTypeSummariesContainer
RegexSummaryContainerSP GetRegexTypeSummariesContainer()
Definition: TypeCategory.h:218
lldb_private::FormattersMatchVector
std::vector< FormattersMatchCandidate > FormattersMatchVector
Definition: FormatClasses.h:81
lldb_private::TypeCategoryImpl::GetDescription
std::string GetDescription()
Definition: TypeCategory.cpp:463
lldb_private::TypeCategoryImpl::GetRegexTypeSyntheticsContainer
RegexSynthContainerSP GetRegexTypeSyntheticsContainer()
Definition: TypeCategory.h:265
lldb_private::ConstString
Definition: ConstString.h:40
lldb_private::StreamString
Definition: StreamString.h:23
lldb_private::TypeCategoryImpl::GetTypeNameSpecifierForSummaryAtIndex
lldb::TypeNameSpecifierImplSP GetTypeNameSpecifierForSummaryAtIndex(size_t index)
Definition: TypeCategory.cpp:384
lldb::eLanguageTypeC89
@ eLanguageTypeC89
ISO C:1989.
Definition: lldb-enumerations.h:438
lldb_private::TypeCategoryImpl::GetNumLanguages
size_t GetNumLanguages()
Definition: TypeCategory.cpp:69
lldb_private::TypeCategoryImpl::Enable
void Enable(bool value, uint32_t position)
Definition: TypeCategory.cpp:455
lldb_private::eFormatCategoryItemRegexValue
@ eFormatCategoryItemRegexValue
Definition: lldb-private-enumerations.h:138
lldb_private::TypeCategoryImpl::m_languages
std::vector< lldb::LanguageType > m_languages
Definition: TypeCategory.h:332
lldb::eLanguageTypeObjC
@ eLanguageTypeObjC
Objective-C.
Definition: lldb-enumerations.h:453
string
string(SUBSTRING ${p} 10 -1 pStripped) if($
Definition: Plugins/CMakeLists.txt:38
lldb_private::Stream::PutChar
size_t PutChar(char ch)
Definition: Stream.cpp:104
lldb::eLanguageTypeObjC_plus_plus
@ eLanguageTypeObjC_plus_plus
Objective-C++.
Definition: lldb-enumerations.h:454
lldb_private::SyntheticChildren::SharedPointer
std::shared_ptr< SyntheticChildren > SharedPointer
Definition: TypeSynthetic.h:264
lldb_private::TypeCategoryImpl::GetTypeSummariesContainer
SummaryContainerSP GetTypeSummariesContainer()
Definition: TypeCategory.h:214
lldb_private::TypeCategoryImpl::IsApplicable
bool IsApplicable(lldb::LanguageType lang)
Definition: TypeCategory.cpp:60
IsApplicable
static bool IsApplicable(lldb::LanguageType category_lang, lldb::LanguageType valobj_lang)
Definition: TypeCategory.cpp:22
lldb::eLanguageTypeUnknown
@ eLanguageTypeUnknown
Unknown or invalid language value.
Definition: lldb-enumerations.h:437
uint32_t
lldb_private::TypeCategoryImpl::GetLanguageAtIndex
lldb::LanguageType GetLanguageAtIndex(size_t idx)
Definition: TypeCategory.cpp:75
lldb_private::TypeFilterImpl::SharedPointer
std::shared_ptr< TypeFilterImpl > SharedPointer
Definition: TypeSynthetic.h:351
lldb_private::TypeCategoryImpl::GetSyntheticAtIndex
SynthContainer::MapValueType GetSyntheticAtIndex(size_t index)
Definition: TypeCategory.cpp:438
lldb_private::TypeCategoryImpl::AddLanguage
void AddLanguage(lldb::LanguageType lang)
Definition: TypeCategory.cpp:81
lldb_private::TypeCategoryImpl::m_mutex
std::recursive_mutex m_mutex
Definition: TypeCategory.h:328
lldb_private::TypeCategoryImpl::m_enabled
bool m_enabled
Definition: TypeCategory.h:324
lldb_private::eFormatCategoryItemRegexSynth
@ eFormatCategoryItemRegexSynth
Definition: lldb-private-enumerations.h:136
lldb_private::TypeCategoryImpl::GetCount
uint32_t GetCount(FormatCategoryItems items=ALL_ITEM_TYPES)
Definition: TypeCategory.cpp:196
lldb_private::TypeCategoryImpl::GetFormatAtIndex
FormatContainer::MapValueType GetFormatAtIndex(size_t index)
Definition: TypeCategory.cpp:393
lldb_private::TypeCategoryImpl::m_enabled_position
uint32_t m_enabled_position
Definition: TypeCategory.h:334
uint16_t
lldb_private::TypeCategoryImpl::Get
bool Get(lldb::LanguageType lang, const FormattersMatchVector &candidates, lldb::TypeFormatImplSP &entry)
Definition: TypeCategory.cpp:85
lldb_private::TypeCategoryImpl::GetTypeFiltersContainer
FilterContainerSP GetTypeFiltersContainer()
Definition: TypeCategory.h:224
lldb_private::ConstString::GetCString
const char * GetCString() const
Get the string value as a C string.
Definition: ConstString.h:216
lldb_private::Stream::Printf
size_t Printf(const char *format,...) __attribute__((format(printf
Output printf formatted output to the stream.
Definition: Stream.cpp:107
TypeCategory.h
lldb_private::TypeCategoryImpl::Clear
void Clear(FormatCategoryItems items=ALL_ITEM_TYPES)
Definition: TypeCategory.cpp:144
lldb::eLanguageTypeC
@ eLanguageTypeC
Non-standardized C, such as K&R.
Definition: lldb-enumerations.h:439
lldb_private
A class that represents a running process on the host machine.
Definition: SBCommandInterpreterRunOptions.h:16
lldb_private::TypeCategoryImpl::AnyMatches
bool AnyMatches(ConstString type_name, FormatCategoryItems items=ALL_ITEM_TYPES, bool only_enabled=true, const char **matching_category=nullptr, FormatCategoryItems *matching_type=nullptr)
Definition: TypeCategory.cpp:224
lldb_private::TypeCategoryImpl::m_name
ConstString m_name
Definition: TypeCategory.h:330
lldb_private::TypeCategoryImpl::GetTypeNameSpecifierForFormatAtIndex
lldb::TypeNameSpecifierImplSP GetTypeNameSpecifierForFormatAtIndex(size_t index)
Definition: TypeCategory.cpp:420
lldb_private::eFormatCategoryItemRegexSummary
@ eFormatCategoryItemRegexSummary
Definition: lldb-private-enumerations.h:132
lldb_private::eFormatCategoryItemValue
@ eFormatCategoryItemValue
Definition: lldb-private-enumerations.h:137
lldb_private::Stream::PutCString
size_t PutCString(llvm::StringRef cstr)
Output a C string to the stream.
Definition: Stream.cpp:63
lldb_private::Language::GetNameForLanguageType
static const char * GetNameForLanguageType(lldb::LanguageType language)
Definition: Language.cpp:206
lldb
Definition: SBAddress.h:15
lldb_private::TypeCategoryImpl::GetRegexTypeFiltersContainer
RegexFilterContainerSP GetRegexTypeFiltersContainer()
Definition: TypeCategory.h:228
lldb_private::TypeCategoryImpl::GetFilterForType
FilterContainer::MapValueType GetFilterForType(lldb::TypeNameSpecifierImplSP type_sp)
Definition: TypeCategory.cpp:352
lldb_private::IFormatChangeListener
Definition: FormattersContainer.h:31
lldb_private::TypeCategoryImpl::GetSyntheticForType
SynthContainer::MapValueType GetSyntheticForType(lldb::TypeNameSpecifierImplSP type_sp)
Definition: TypeCategory.cpp:368
lldb::eLanguageTypeC_plus_plus
@ eLanguageTypeC_plus_plus
ISO C++:1998.
Definition: lldb-enumerations.h:441