LLDB mainline
Language.h
Go to the documentation of this file.
1//===-- Language.h ---------------------------------------------------*- C++
2//-*-===//
3//
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
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_TARGET_LANGUAGE_H
11#define LLDB_TARGET_LANGUAGE_H
12
13#include <functional>
14#include <memory>
15#include <set>
16#include <vector>
17
25#include "lldb/lldb-private.h"
26#include "lldb/lldb-public.h"
27
28namespace lldb_private {
29
31public:
33
34 static llvm::StringRef GetSettingName();
35
37};
38
39class Language : public PluginInterface {
40public:
42 public:
43 class Result {
44 public:
45 virtual bool IsValid() = 0;
46
47 virtual bool DumpToStream(Stream &stream,
48 bool print_help_if_available) = 0;
49
50 virtual ~Result() = default;
51 };
52
53 typedef std::set<std::unique_ptr<Result>> ResultSet;
54
55 virtual ~TypeScavenger() = default;
56
57 size_t Find(ExecutionContextScope *exe_scope, const char *key,
58 ResultSet &results, bool append = true);
59
60 protected:
61 TypeScavenger() = default;
62
63 virtual bool Find_Impl(ExecutionContextScope *exe_scope, const char *key,
64 ResultSet &results) = 0;
65 };
66
69 public:
71
72 bool IsValid() override { return m_compiler_type.IsValid(); }
73
74 bool DumpToStream(Stream &stream, bool print_help_if_available) override {
75 if (IsValid()) {
76 m_compiler_type.DumpTypeDescription(&stream);
77 stream.EOL();
78 return true;
79 }
80 return false;
81 }
82
83 ~Result() override = default;
84
85 private:
87 };
88
89 protected:
91
92 ~ImageListTypeScavenger() override = default;
93
94 // is this type something we should accept? it's usually going to be a
95 // filter by language + maybe some sugar tweaking
96 // returning an empty type means rejecting this candidate entirely;
97 // any other result will be accepted as a valid match
99
100 bool Find_Impl(ExecutionContextScope *exe_scope, const char *key,
101 ResultSet &results) override;
102 };
103
104 template <typename... ScavengerTypes>
106 public:
108 for (std::shared_ptr<TypeScavenger> scavenger : { std::shared_ptr<TypeScavenger>(new ScavengerTypes())... }) {
109 if (scavenger)
110 m_scavengers.push_back(scavenger);
111 }
112 }
113 protected:
114 bool Find_Impl(ExecutionContextScope *exe_scope, const char *key,
115 ResultSet &results) override {
116 const bool append = false;
117 for (auto& scavenger : m_scavengers) {
118 if (scavenger && scavenger->Find(exe_scope, key, results, append))
119 return true;
120 }
121 return false;
122 }
123 private:
124 std::vector<std::shared_ptr<TypeScavenger>> m_scavengers;
125 };
126
127 template <typename... ScavengerTypes>
129 public:
131 for (std::shared_ptr<TypeScavenger> scavenger : { std::shared_ptr<TypeScavenger>(new ScavengerTypes())... }) {
132 if (scavenger)
133 m_scavengers.push_back(scavenger);
134 }
135 }
136 protected:
137 bool Find_Impl(ExecutionContextScope *exe_scope, const char *key,
138 ResultSet &results) override {
139 const bool append = true;
140 bool success = false;
141 for (auto& scavenger : m_scavengers) {
142 if (scavenger)
143 success = scavenger->Find(exe_scope, key, results, append) || success;
144 }
145 return success;
146 }
147 private:
148 std::vector<std::shared_ptr<TypeScavenger>> m_scavengers;
149 };
150
156
157 ~Language() override;
158
159 static Language *FindPlugin(lldb::LanguageType language);
160
161 /// Returns the Language associated with the given file path or a nullptr
162 /// if there is no known language.
163 static Language *FindPlugin(llvm::StringRef file_path);
164
165 static Language *FindPlugin(lldb::LanguageType language,
166 llvm::StringRef file_path);
167
168 // return false from callback to stop iterating
169 static void ForEach(llvm::function_ref<IterationAction(Language *)> callback);
170
172
173 // Implement this function to return the user-defined entry point name
174 // for the language.
175 virtual llvm::StringRef GetUserEntryPointName() const { return {}; }
176
177 virtual bool IsTopLevelFunction(Function &function);
178
179 virtual bool IsSourceFile(llvm::StringRef file_path) const = 0;
180
181 virtual const Highlighter *GetHighlighter() const { return nullptr; }
182
184
186
188
191
192 virtual std::vector<FormattersMatchCandidate>
194 lldb::DynamicValueType use_dynamic);
195
196 virtual std::unique_ptr<TypeScavenger> GetTypeScavenger();
197
198 virtual const char *GetLanguageSpecificTypeLookupHelp();
199
202 lldb::FunctionNameType m_type;
203
204 public:
205 MethodNameVariant(ConstString name, lldb::FunctionNameType type)
206 : m_name(name), m_type(type) {}
207 ConstString GetName() const { return m_name; }
208 lldb::FunctionNameType GetType() const { return m_type; }
209 };
210 // If a language can have more than one possible name for a method, this
211 // function can be used to enumerate them. This is useful when doing name
212 // lookups.
213 virtual std::vector<Language::MethodNameVariant>
215 return std::vector<Language::MethodNameVariant>();
216 };
217
219 public:
221
226
227 virtual ~MethodName() {};
228
229 void Clear() {
230 m_full.Clear();
231 m_basename = llvm::StringRef();
232 m_context = llvm::StringRef();
233 m_arguments = llvm::StringRef();
234 m_qualifiers = llvm::StringRef();
235 m_return_type = llvm::StringRef();
236 m_scope_qualified.clear();
237 m_parsed = false;
238 m_parse_error = false;
239 }
240
241 bool IsValid() {
242 if (!m_parsed)
243 Parse();
244 if (m_parse_error)
245 return false;
246 return (bool)m_full;
247 }
248
249 ConstString GetFullName() const { return m_full; }
250
251 llvm::StringRef GetBasename() {
252 if (!m_parsed)
253 Parse();
254 return m_basename;
255 }
256
257 llvm::StringRef GetContext() {
258 if (!m_parsed)
259 Parse();
260 return m_context;
261 }
262
263 llvm::StringRef GetArguments() {
264 if (!m_parsed)
265 Parse();
266 return m_arguments;
267 }
268
269 llvm::StringRef GetQualifiers() {
270 if (!m_parsed)
271 Parse();
272 return m_qualifiers;
273 }
274
275 llvm::StringRef GetReturnType() {
276 if (!m_parsed)
277 Parse();
278 return m_return_type;
279 }
280
281 std::string GetScopeQualifiedName() {
282 if (!m_parsed)
283 Parse();
284 return m_scope_qualified;
285 }
286
287 protected:
288 virtual void Parse() {
289 m_parsed = true;
290 m_parse_error = true;
291 }
292
293 ConstString m_full; // Full name:
294 // "size_t lldb::SBTarget::GetBreakpointAtIndex(unsigned
295 // int) const"
296 llvm::StringRef m_basename; // Basename: "GetBreakpointAtIndex"
297 llvm::StringRef m_context; // Decl context: "lldb::SBTarget"
298 llvm::StringRef m_arguments; // Arguments: "(unsigned int)"
299 llvm::StringRef m_qualifiers; // Qualifiers: "const"
300 llvm::StringRef m_return_type; // Return type: "size_t"
301 std::string m_scope_qualified;
302 bool m_parsed = false;
303 bool m_parse_error = false;
304 };
305
306 virtual std::unique_ptr<Language::MethodName>
308 return std::make_unique<Language::MethodName>(name);
309 };
310
311 virtual std::pair<lldb::FunctionNameType, std::optional<ConstString>>
313 return std::pair{lldb::eFunctionNameTypeNone, std::nullopt};
314 };
315
316 /// Returns true iff the given symbol name is compatible with the mangling
317 /// scheme of this language.
318 ///
319 /// This function should only return true if there is a high confidence
320 /// that the name actually belongs to this language.
321 virtual bool SymbolNameFitsToLanguage(const Mangled &name) const {
322 return false;
323 }
324
325 /// An individual data formatter may apply to several types and cross language
326 /// boundaries. Each of those languages may want to customize the display of
327 /// values of said types by appending proper prefix/suffix information in
328 /// language-specific ways. This function returns that prefix and suffix.
329 ///
330 /// \param[in] type_hint
331 /// A StringRef used to determine what the prefix and suffix should be. It
332 /// is called a hint because some types may have multiple variants for which
333 /// the prefix and/or suffix may vary.
334 ///
335 /// \return
336 /// A std::pair<StringRef, StringRef>, the first being the prefix and the
337 /// second being the suffix. They may be empty.
338 virtual std::pair<llvm::StringRef, llvm::StringRef>
339 GetFormatterPrefixSuffix(llvm::StringRef type_hint);
340
341 // When looking up functions, we take a user provided string which may be a
342 // partial match to the full demangled name and compare it to the actual
343 // demangled name to see if it matches as much as the user specified. An
344 // example of this is if the user provided A::my_function, but the
345 // symbol was really B::A::my_function. We want that to be
346 // a match. But we wouldn't want this to match AnotherA::my_function. The
347 // user is specifying a truncated path, not a truncated set of characters.
348 // This function does a language-aware comparison for those purposes.
349 virtual bool DemangledNameContainsPath(llvm::StringRef path,
350 ConstString demangled) const;
351
352 // if a language has a custom format for printing variable declarations that
353 // it wants LLDB to honor it should return an appropriate closure here
355
356 virtual LazyBool IsLogicalTrue(ValueObject &valobj, Status &error);
357
358 // for a ValueObject of some "reference type", if the value points to the
359 // nil/null object, this method returns true
360 virtual bool IsNilReference(ValueObject &valobj);
361
362 /// Returns the summary string for ValueObjects for which IsNilReference() is
363 /// true.
364 virtual llvm::StringRef GetNilReferenceSummaryString() { return {}; }
365
366 // for a ValueObject of some "reference type", if the language provides a
367 // technique to decide whether the reference has ever been assigned to some
368 // object, this method will return true if such detection is possible, and if
369 // the reference has never been assigned
370 virtual bool IsUninitializedReference(ValueObject &valobj);
371
372 virtual bool GetFunctionDisplayName(const SymbolContext &sc,
373 const ExecutionContext *exe_ctx,
374 FunctionNameRepresentation representation,
375 Stream &s);
376
378 const ExecutionContext *exe_ctx,
380 Stream &s) {
381 return false;
382 }
383
384 virtual ConstString
386 if (ConstString demangled = mangled.GetDemangledName())
387 return demangled;
388
389 return mangled.GetMangledName();
390 }
391
393 return mangled.GetDemangledName();
394 }
395
396 virtual void GetExceptionResolverDescription(bool catch_on, bool throw_on,
397 Stream &s);
398
399 static void GetDefaultExceptionResolverDescription(bool catch_on,
400 bool throw_on, Stream &s);
401
402 // These are accessors for general information about the Languages lldb knows
403 // about:
404
405 static lldb::LanguageType
406 GetLanguageTypeFromString(const char *string) = delete;
407 static lldb::LanguageType GetLanguageTypeFromString(llvm::StringRef string);
408
409 /// Returns the internal LLDB name for the specified language. When presenting
410 /// the language name to users, use \ref GetDisplayNameForLanguageType
411 /// instead.
412 static const char *GetNameForLanguageType(lldb::LanguageType language);
413
414 /// Returns a user-friendly name for the specified language.
415 static llvm::StringRef
417
418 static void PrintAllLanguages(Stream &s, const char *prefix,
419 const char *suffix);
420
421 /// Prints to the specified stream 's' each language type that the
422 /// current target supports for expression evaluation.
423 ///
424 /// \param[out] s Stream to which the language types are written.
425 /// \param[in] prefix String that is prepended to the language type.
426 /// \param[in] suffix String that is appended to the language type.
428 llvm::StringRef prefix,
429 llvm::StringRef suffix);
430
431 // return false from callback to stop iterating
432 static void ForAllLanguages(
433 llvm::function_ref<IterationAction(lldb::LanguageType)> callback);
434
435 static bool LanguageIsCPlusPlus(lldb::LanguageType language);
436
437 static bool LanguageIsObjC(lldb::LanguageType language);
438
439 static bool LanguageIsC(lldb::LanguageType language);
440
441 /// Equivalent to \c LanguageIsC||LanguageIsObjC||LanguageIsCPlusPlus.
442 static bool LanguageIsCFamily(lldb::LanguageType language);
443
444 static bool LanguageIsPascal(lldb::LanguageType language);
445
446 // return the primary language, so if LanguageIsC(l), return eLanguageTypeC,
447 // etc.
449
450 static std::set<lldb::LanguageType> GetSupportedLanguages();
451
455
457
458 // Given a mangled function name, calculates some alternative manglings since
459 // the compiler mangling may not line up with the symbol we are expecting.
460 virtual std::vector<ConstString>
462 return std::vector<ConstString>();
463 }
464
465 virtual ConstString
467 const SymbolContext &sym_ctx) const {
468 return ConstString();
469 }
470
471 virtual llvm::StringRef GetInstanceVariableName() { return {}; }
472
473 /// Given a symbol context list of matches which supposedly represent the
474 /// same file and line number in a CU, erases those that should be ignored
475 /// when setting breakpoints by line (number or regex). Helpful for languages
476 /// that create split a single source-line into many functions (e.g. call
477 /// sites transformed by CoroSplitter).
478 virtual void
480
481 /// Returns a boolean indicating whether two symbol contexts are equal for the
482 /// purposes of frame comparison. If the plugin has no opinion, it should
483 /// return nullopt.
484 virtual std::optional<bool>
486 const SymbolContext &sc2) const {
487 return {};
488 }
489
490 virtual std::optional<bool> GetBooleanFromString(llvm::StringRef str) const;
491
492 /// Returns true if this Language supports exception breakpoints on throw via
493 /// a corresponding LanguageRuntime plugin.
494 virtual bool SupportsExceptionBreakpointsOnThrow() const { return false; }
495
496 /// Returns true if this Language supports exception breakpoints on catch via
497 /// a corresponding LanguageRuntime plugin.
498 virtual bool SupportsExceptionBreakpointsOnCatch() const { return false; }
499
500 /// Returns the keyword used for throw statements in this language, e.g.
501 /// Python uses \b raise. Defaults to \b throw.
502 virtual llvm::StringRef GetThrowKeyword() const { return "throw"; }
503
504 /// Returns the keyword used for catch statements in this language, e.g.
505 /// Python uses \b except. Defaults to \b catch.
506 virtual llvm::StringRef GetCatchKeyword() const { return "catch"; }
507
508 virtual FormatEntity::Entry GetFunctionNameFormat() const { return {}; }
509
510protected:
511 // Classes that inherit from Language can see and modify these
512
514
515private:
516 Language(const Language &) = delete;
517 const Language &operator=(const Language &) = delete;
518};
519
520} // namespace lldb_private
521
522#endif // LLDB_TARGET_LANGUAGE_H
static llvm::raw_ostream & error(Stream &strm)
Generic representation of a type in a programming language.
A uniqued constant string class.
Definition ConstString.h:40
std::function< bool(ConstString, ConstString, const DumpValueObjectOptions &, Stream &)> DeclPrintingHelper
"lldb/Target/ExecutionContextScope.h" Inherit from this if your object can reconstruct its execution ...
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
A class that describes a function.
Definition Function.h:400
HardcodedFormatterFinders< SyntheticChildren > HardcodedSyntheticFinder
HardcodedFormatterFinders< TypeSummaryImpl > HardcodedSummaryFinder
HardcodedFormatterFinders< TypeFormatImpl > HardcodedFormatFinder
Annotates source code with color attributes.
Definition Highlighter.h:91
static llvm::StringRef GetSettingName()
Definition Language.cpp:45
bool GetEnableFilterForLineBreakpoints() const
Definition Language.cpp:55
bool Find_Impl(ExecutionContextScope *exe_scope, const char *key, ResultSet &results) override
Definition Language.h:114
std::vector< std::shared_ptr< TypeScavenger > > m_scavengers
Definition Language.h:124
bool DumpToStream(Stream &stream, bool print_help_if_available) override
Definition Language.h:74
virtual CompilerType AdjustForInclusion(CompilerType &candidate)=0
bool Find_Impl(ExecutionContextScope *exe_scope, const char *key, ResultSet &results) override
Definition Language.cpp:466
MethodNameVariant(ConstString name, lldb::FunctionNameType type)
Definition Language.h:205
lldb::FunctionNameType GetType() const
Definition Language.h:208
ConstString GetFullName() const
Definition Language.h:249
llvm::StringRef GetQualifiers()
Definition Language.h:269
llvm::StringRef GetReturnType()
Definition Language.h:275
virtual bool DumpToStream(Stream &stream, bool print_help_if_available)=0
std::set< std::unique_ptr< Result > > ResultSet
Definition Language.h:53
virtual bool Find_Impl(ExecutionContextScope *exe_scope, const char *key, ResultSet &results)=0
size_t Find(ExecutionContextScope *exe_scope, const char *key, ResultSet &results, bool append=true)
Definition Language.cpp:447
std::vector< std::shared_ptr< TypeScavenger > > m_scavengers
Definition Language.h:148
bool Find_Impl(ExecutionContextScope *exe_scope, const char *key, ResultSet &results) override
Definition Language.h:137
virtual bool IsSourceFile(llvm::StringRef file_path) const =0
static void PrintSupportedLanguagesForExpressions(Stream &s, llvm::StringRef prefix, llvm::StringRef suffix)
Prints to the specified stream 's' each language type that the current target supports for expression...
Definition Language.cpp:278
static LanguageSet GetLanguagesSupportingREPLs()
Definition Language.cpp:437
static LanguageSet GetLanguagesSupportingTypeSystems()
Definition Language.cpp:429
virtual std::optional< bool > GetBooleanFromString(llvm::StringRef str) const
Definition Language.cpp:537
virtual ConstString GetDisplayDemangledName(Mangled mangled) const
Definition Language.h:392
virtual std::vector< FormattersMatchCandidate > GetPossibleFormattersMatches(ValueObject &valobj, lldb::DynamicValueType use_dynamic)
Definition Language.cpp:180
virtual bool HandleFrameFormatVariable(const SymbolContext &sc, const ExecutionContext *exe_ctx, FormatEntity::Entry::Type type, Stream &s)
Definition Language.h:377
virtual bool SupportsExceptionBreakpointsOnCatch() const
Returns true if this Language supports exception breakpoints on catch via a corresponding LanguageRun...
Definition Language.h:498
virtual lldb::TypeCategoryImplSP GetFormatters()
Definition Language.cpp:164
virtual llvm::StringRef GetInstanceVariableName()
Definition Language.h:471
static void ForEach(llvm::function_ref< IterationAction(Language *)> callback)
Definition Language.cpp:131
static void ForAllLanguages(llvm::function_ref< IterationAction(lldb::LanguageType)> callback)
Definition Language.cpp:296
static Language * FindPlugin(lldb::LanguageType language)
Definition Language.cpp:84
static const char * GetNameForLanguageType(lldb::LanguageType language)
Returns the internal LLDB name for the specified language.
Definition Language.cpp:267
virtual bool SymbolNameFitsToLanguage(const Mangled &name) const
Returns true iff the given symbol name is compatible with the mangling scheme of this language.
Definition Language.h:321
virtual void FilterForLineBreakpoints(llvm::SmallVectorImpl< SymbolContext > &) const
Given a symbol context list of matches which supposedly represent the same file and line number in a ...
Definition Language.h:479
virtual DumpValueObjectOptions::DeclPrintingHelper GetDeclPrintingHelper()
Definition Language.cpp:506
static LanguageProperties & GetGlobalLanguageProperties()
Definition Language.cpp:40
virtual LazyBool IsLogicalTrue(ValueObject &valobj, Status &error)
Definition Language.cpp:510
virtual ConstString GetDemangledFunctionNameWithoutArguments(Mangled mangled) const
Definition Language.h:385
virtual std::unique_ptr< Language::MethodName > GetMethodName(ConstString name) const
Definition Language.h:307
virtual const char * GetLanguageSpecificTypeLookupHelp()
Definition Language.cpp:445
virtual bool GetFunctionDisplayName(const SymbolContext &sc, const ExecutionContext *exe_ctx, FunctionNameRepresentation representation, Stream &s)
Definition Language.cpp:518
virtual std::pair< llvm::StringRef, llvm::StringRef > GetFormatterPrefixSuffix(llvm::StringRef type_hint)
An individual data formatter may apply to several types and cross language boundaries.
Definition Language.cpp:494
virtual llvm::StringRef GetCatchKeyword() const
Returns the keyword used for catch statements in this language, e.g.
Definition Language.h:506
virtual llvm::StringRef GetThrowKeyword() const
Returns the keyword used for throw statements in this language, e.g.
Definition Language.h:502
static bool LanguageIsC(lldb::LanguageType language)
Definition Language.cpp:329
virtual lldb::LanguageType GetLanguageType() const =0
virtual HardcodedFormatters::HardcodedSummaryFinder GetHardcodedSummaries()
Definition Language.cpp:170
virtual std::vector< Language::MethodNameVariant > GetMethodNameVariants(ConstString method_name) const
Definition Language.h:214
static void GetDefaultExceptionResolverDescription(bool catch_on, bool throw_on, Stream &s)
Definition Language.cpp:530
virtual std::pair< lldb::FunctionNameType, std::optional< ConstString > > GetFunctionNameInfo(ConstString name) const
Definition Language.h:312
virtual bool SupportsExceptionBreakpointsOnThrow() const
Returns true if this Language supports exception breakpoints on throw via a corresponding LanguageRun...
Definition Language.h:494
virtual std::optional< bool > AreEqualForFrameComparison(const SymbolContext &sc1, const SymbolContext &sc2) const
Returns a boolean indicating whether two symbol contexts are equal for the purposes of frame comparis...
Definition Language.h:485
virtual bool DemangledNameContainsPath(llvm::StringRef path, ConstString demangled) const
Definition Language.cpp:498
virtual std::vector< ConstString > GenerateAlternateFunctionManglings(const ConstString mangled) const
Definition Language.h:461
static bool LanguageIsCPlusPlus(lldb::LanguageType language)
Definition Language.cpp:304
static llvm::StringRef GetDisplayNameForLanguageType(lldb::LanguageType language)
Returns a user-friendly name for the specified language.
Definition Language.cpp:274
static lldb::LanguageType GetPrimaryLanguage(lldb::LanguageType language)
Definition Language.cpp:370
const Language & operator=(const Language &)=delete
virtual ConstString FindBestAlternateFunctionMangledName(const Mangled mangled, const SymbolContext &sym_ctx) const
Definition Language.h:466
static bool LanguageIsPascal(lldb::LanguageType language)
Definition Language.cpp:361
virtual bool IsNilReference(ValueObject &valobj)
Definition Language.cpp:514
virtual bool IsUninitializedReference(ValueObject &valobj)
Definition Language.cpp:516
virtual FormatEntity::Entry GetFunctionNameFormat() const
Definition Language.h:508
virtual llvm::StringRef GetNilReferenceSummaryString()
Returns the summary string for ValueObjects for which IsNilReference() is true.
Definition Language.h:364
static void PrintAllLanguages(Stream &s, const char *prefix, const char *suffix)
Definition Language.cpp:289
virtual HardcodedFormatters::HardcodedSyntheticFinder GetHardcodedSynthetics()
Definition Language.cpp:175
virtual const Highlighter * GetHighlighter() const
Definition Language.h:181
virtual std::unique_ptr< TypeScavenger > GetTypeScavenger()
Definition Language.cpp:441
static LanguageSet GetLanguagesSupportingTypeSystemsForExpressions()
Definition Language.cpp:433
virtual llvm::StringRef GetUserEntryPointName() const
Definition Language.h:175
virtual bool IsTopLevelFunction(Function &function)
Definition Language.cpp:162
virtual void GetExceptionResolverDescription(bool catch_on, bool throw_on, Stream &s)
Definition Language.cpp:525
static lldb::LanguageType GetLanguageTypeFromString(const char *string)=delete
Language(const Language &)=delete
static bool LanguageIsCFamily(lldb::LanguageType language)
Equivalent to LanguageIsC||LanguageIsObjC||LanguageIsCPlusPlus.
Definition Language.cpp:341
static std::set< lldb::LanguageType > GetSupportedLanguages()
Definition Language.cpp:420
virtual HardcodedFormatters::HardcodedFormatFinder GetHardcodedFormats()
Definition Language.cpp:166
static bool LanguageIsObjC(lldb::LanguageType language)
Definition Language.cpp:319
A class that handles mangled names.
Definition Mangled.h:34
ConstString GetMangledName() const
Mangled name get accessor.
Definition Mangled.h:152
ConstString GetDemangledName() const
Demangled name get accessor.
Definition Mangled.cpp:284
An error handling class.
Definition Status.h:118
A stream class that can stream formatted output to a file.
Definition Stream.h:28
size_t EOL()
Output and End of Line character to the stream.
Definition Stream.cpp:155
Defines a symbol context baton that can be handed other debug core functions.
A class that represents a running process on the host machine.
IterationAction
Useful for callbacks whose return type indicates whether to continue iteration or short-circuit.
LanguageType
Programming language type.
std::shared_ptr< lldb_private::TypeCategoryImpl > TypeCategoryImplSP
A SmallBitVector that represents a set of source languages (lldb::LanguageType).
Definition Type.h:38