LLDB mainline
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
lldb_private::Language Class Referenceabstract

#include <Language.h>

Inheritance diagram for lldb_private::Language:
Inheritance graph
[legend]
Collaboration diagram for lldb_private::Language:
Collaboration graph
[legend]

Classes

class  EitherTypeScavenger
 
class  ImageListTypeScavenger
 
class  MethodNameVariant
 
class  TypeScavenger
 
class  UnionTypeScavenger
 

Public Types

enum class  FunctionNameRepresentation { eName , eNameWithArgs , eNameWithNoArgs }
 

Public Member Functions

 ~Language () override
 
virtual lldb::LanguageType GetLanguageType () const =0
 
virtual bool IsTopLevelFunction (Function &function)
 
virtual bool IsSourceFile (llvm::StringRef file_path) const =0
 
virtual const HighlighterGetHighlighter () const
 
virtual lldb::TypeCategoryImplSP GetFormatters ()
 
virtual HardcodedFormatters::HardcodedFormatFinder GetHardcodedFormats ()
 
virtual HardcodedFormatters::HardcodedSummaryFinder GetHardcodedSummaries ()
 
virtual HardcodedFormatters::HardcodedSyntheticFinder GetHardcodedSynthetics ()
 
virtual std::vector< FormattersMatchCandidateGetPossibleFormattersMatches (ValueObject &valobj, lldb::DynamicValueType use_dynamic)
 
virtual std::unique_ptr< TypeScavengerGetTypeScavenger ()
 
virtual const char * GetLanguageSpecificTypeLookupHelp ()
 
virtual std::vector< Language::MethodNameVariantGetMethodNameVariants (ConstString method_name) const
 
virtual bool SymbolNameFitsToLanguage (Mangled name) const
 Returns true iff the given symbol name is compatible with the mangling scheme of this language.
 
virtual bool GetFormatterPrefixSuffix (ValueObject &valobj, ConstString type_hint, std::string &prefix, std::string &suffix)
 
virtual bool DemangledNameContainsPath (llvm::StringRef path, ConstString demangled) const
 
virtual DumpValueObjectOptions::DeclPrintingHelper GetDeclPrintingHelper ()
 
virtual LazyBool IsLogicalTrue (ValueObject &valobj, Status &error)
 
virtual bool IsNilReference (ValueObject &valobj)
 
virtual llvm::StringRef GetNilReferenceSummaryString ()
 Returns the summary string for ValueObjects for which IsNilReference() is true.
 
virtual bool IsUninitializedReference (ValueObject &valobj)
 
virtual bool GetFunctionDisplayName (const SymbolContext *sc, const ExecutionContext *exe_ctx, FunctionNameRepresentation representation, Stream &s)
 
virtual ConstString GetDemangledFunctionNameWithoutArguments (Mangled mangled) const
 
virtual void GetExceptionResolverDescription (bool catch_on, bool throw_on, Stream &s)
 
virtual std::vector< ConstStringGenerateAlternateFunctionManglings (const ConstString mangled) const
 
virtual ConstString FindBestAlternateFunctionMangledName (const Mangled mangled, const SymbolContext &sym_ctx) const
 
- Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
 
virtual ~PluginInterface ()=default
 
virtual llvm::StringRef GetPluginName ()=0
 
 PluginInterface (const PluginInterface &)=delete
 
PluginInterfaceoperator= (const PluginInterface &)=delete
 

Static Public Member Functions

static LanguageFindPlugin (lldb::LanguageType language)
 
static LanguageFindPlugin (llvm::StringRef file_path)
 Returns the Language associated with the given file path or a nullptr if there is no known language.
 
static LanguageFindPlugin (lldb::LanguageType language, llvm::StringRef file_path)
 
static void ForEach (std::function< bool(Language *)> callback)
 
static void GetDefaultExceptionResolverDescription (bool catch_on, bool throw_on, Stream &s)
 
static lldb::LanguageType GetLanguageTypeFromString (const char *string)=delete
 
static lldb::LanguageType GetLanguageTypeFromString (llvm::StringRef string)
 
static const char * GetNameForLanguageType (lldb::LanguageType language)
 
static void PrintAllLanguages (Stream &s, const char *prefix, const char *suffix)
 
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 evaluation.
 
static void ForAllLanguages (std::function< bool(lldb::LanguageType)> callback)
 
static bool LanguageIsCPlusPlus (lldb::LanguageType language)
 
static bool LanguageIsObjC (lldb::LanguageType language)
 
static bool LanguageIsC (lldb::LanguageType language)
 
static bool LanguageIsCFamily (lldb::LanguageType language)
 Equivalent to LanguageIsC||LanguageIsObjC||LanguageIsCPlusPlus.
 
static bool LanguageIsPascal (lldb::LanguageType language)
 
static lldb::LanguageType GetPrimaryLanguage (lldb::LanguageType language)
 
static std::set< lldb::LanguageTypeGetSupportedLanguages ()
 
static LanguageSet GetLanguagesSupportingTypeSystems ()
 
static LanguageSet GetLanguagesSupportingTypeSystemsForExpressions ()
 
static LanguageSet GetLanguagesSupportingREPLs ()
 

Protected Member Functions

 Language ()
 

Private Member Functions

 Language (const Language &)=delete
 
const Languageoperator= (const Language &)=delete
 

Detailed Description

Definition at line 29 of file Language.h.

Member Enumeration Documentation

◆ FunctionNameRepresentation

Enumerator
eName 
eNameWithArgs 
eNameWithNoArgs 

Definition at line 141 of file Language.h.

Constructor & Destructor Documentation

◆ ~Language()

Language::~Language ( )
overridedefault

◆ Language() [1/2]

Language::Language ( )
protecteddefault

◆ Language() [2/2]

lldb_private::Language::Language ( const Language )
privatedelete

Member Function Documentation

◆ DemangledNameContainsPath()

bool Language::DemangledNameContainsPath ( llvm::StringRef  path,
ConstString  demangled 
) const
virtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 440 of file Language.cpp.

References lldb_private::ConstString::GetStringRef().

◆ FindBestAlternateFunctionMangledName()

virtual ConstString lldb_private::Language::FindBestAlternateFunctionMangledName ( const Mangled  mangled,
const SymbolContext sym_ctx 
) const
inlinevirtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 324 of file Language.h.

◆ FindPlugin() [1/3]

Language * Language::FindPlugin ( lldb::LanguageType  language)
static

Definition at line 53 of file Language.cpp.

References lldb_private::PluginManager::GetLanguageCreateCallbackAtIndex(), GetLanguagesMap(), and GetLanguagesMutex().

Referenced by lldb_private::BreakpointResolverName::AddNameLookup(), lldb_private::formatters::CFBagSummaryProvider(), lldb_private::formatters::CFBinaryHeapSummaryProvider(), lldb_private::IRExecutionUnit::CollectCandidateCPlusPlusNames(), FindPlugin(), ForEach(), lldb_private::FormatEntity::Format(), ExceptionBreakpointResolver::GetDescription(), lldb_private::HighlighterManager::getHighlighterFor(), lldb_private::FormatManager::GetPossibleMatches(), lldb_private::ValueObjectPrinter::GetValueSummaryError(), lldb_private::ValueObject::IsLogicalTrue(), lldb_private::ValueObject::IsNilReference(), lldb_private::Function::IsTopLevelFunction(), lldb_private::ValueObject::IsUninitializedReference(), lldb_private::LanguageCategory::LanguageCategory(), lldb_private::Module::LookupInfo::NameMatchesLookupInfo(), lldb_private::formatters::NSArraySummaryProvider(), lldb_private::formatters::NSDictionarySummaryProvider(), NSNumber_FormatChar(), NSNumber_FormatDouble(), NSNumber_FormatFloat(), NSNumber_FormatInt(), NSNumber_FormatInt128(), NSNumber_FormatLong(), NSNumber_FormatShort(), lldb_private::formatters::NSSetSummaryProvider(), lldb_private::formatters::NSStringSummaryProvider(), lldb_private::formatters::NSTaggedString_SummaryProvider(), lldb_private::formatters::NSURLSummaryProvider(), and lldb_private::ValueObjectPrinter::PrintDecl().

◆ FindPlugin() [2/3]

Language * Language::FindPlugin ( lldb::LanguageType  language,
llvm::StringRef  file_path 
)
static

Definition at line 90 of file Language.cpp.

References FindPlugin().

◆ FindPlugin() [3/3]

Language * Language::FindPlugin ( llvm::StringRef  file_path)
static

Returns the Language associated with the given file path or a nullptr if there is no known language.

Definition at line 78 of file Language.cpp.

References ForEach(), and IsSourceFile().

◆ ForAllLanguages()

void Language::ForAllLanguages ( std::function< bool(lldb::LanguageType)>  callback)
static

Definition at line 241 of file Language.cpp.

References language_names, and num_languages.

◆ ForEach()

void Language::ForEach ( std::function< bool(Language *)>  callback)
static

◆ GenerateAlternateFunctionManglings()

virtual std::vector< ConstString > lldb_private::Language::GenerateAlternateFunctionManglings ( const ConstString  mangled) const
inlinevirtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 319 of file Language.h.

◆ GetDeclPrintingHelper()

DumpValueObjectOptions::DeclPrintingHelper Language::GetDeclPrintingHelper ( )
virtual

Definition at line 448 of file Language.cpp.

◆ GetDefaultExceptionResolverDescription()

void Language::GetDefaultExceptionResolverDescription ( bool  catch_on,
bool  throw_on,
Stream s 
)
static

◆ GetDemangledFunctionNameWithoutArguments()

virtual ConstString lldb_private::Language::GetDemangledFunctionNameWithoutArguments ( Mangled  mangled) const
inlinevirtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 257 of file Language.h.

◆ GetExceptionResolverDescription()

void Language::GetExceptionResolverDescription ( bool  catch_on,
bool  throw_on,
Stream s 
)
virtual

◆ GetFormatterPrefixSuffix()

bool Language::GetFormatterPrefixSuffix ( ValueObject valobj,
ConstString  type_hint,
std::string &  prefix,
std::string &  suffix 
)
virtual

Reimplemented in lldb_private::ObjCLanguage.

Definition at line 433 of file Language.cpp.

◆ GetFormatters()

lldb::TypeCategoryImplSP Language::GetFormatters ( )
virtual

Reimplemented in lldb_private::CPlusPlusLanguage, and lldb_private::ObjCLanguage.

Definition at line 132 of file Language.cpp.

◆ GetFunctionDisplayName()

bool Language::GetFunctionDisplayName ( const SymbolContext sc,
const ExecutionContext exe_ctx,
FunctionNameRepresentation  representation,
Stream s 
)
virtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 460 of file Language.cpp.

Referenced by lldb_private::FormatEntity::Format().

◆ GetHardcodedFormats()

HardcodedFormatters::HardcodedFormatFinder Language::GetHardcodedFormats ( )
virtual

Definition at line 134 of file Language.cpp.

◆ GetHardcodedSummaries()

HardcodedFormatters::HardcodedSummaryFinder Language::GetHardcodedSummaries ( )
virtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 138 of file Language.cpp.

◆ GetHardcodedSynthetics()

HardcodedFormatters::HardcodedSyntheticFinder Language::GetHardcodedSynthetics ( )
virtual

Reimplemented in lldb_private::CPlusPlusLanguage.

Definition at line 143 of file Language.cpp.

◆ GetHighlighter()

virtual const Highlighter * lldb_private::Language::GetHighlighter ( ) const
inlinevirtual

◆ GetLanguageSpecificTypeLookupHelp()

const char * Language::GetLanguageSpecificTypeLookupHelp ( )
virtual

Definition at line 383 of file Language.cpp.

◆ GetLanguagesSupportingREPLs()

LanguageSet Language::GetLanguagesSupportingREPLs ( )
static

◆ GetLanguagesSupportingTypeSystems()

LanguageSet Language::GetLanguagesSupportingTypeSystems ( )
static

◆ GetLanguagesSupportingTypeSystemsForExpressions()

LanguageSet Language::GetLanguagesSupportingTypeSystemsForExpressions ( )
static

◆ GetLanguageType()

virtual lldb::LanguageType lldb_private::Language::GetLanguageType ( ) const
pure virtual

◆ GetLanguageTypeFromString() [1/2]

static lldb::LanguageType lldb_private::Language::GetLanguageTypeFromString ( const char *  string)
staticdelete

◆ GetLanguageTypeFromString() [2/2]

LanguageType Language::GetLanguageTypeFromString ( llvm::StringRef  string)
static

Definition at line 207 of file Language.cpp.

References lldb::eLanguageTypeUnknown, and language_names.

◆ GetMethodNameVariants()

virtual std::vector< Language::MethodNameVariant > lldb_private::Language::GetMethodNameVariants ( ConstString  method_name) const
inlinevirtual

Reimplemented in lldb_private::ObjCLanguage.

Definition at line 200 of file Language.h.

◆ GetNameForLanguageType()

const char * Language::GetNameForLanguageType ( lldb::LanguageType  language)
static

◆ GetNilReferenceSummaryString()

virtual llvm::StringRef lldb_private::Language::GetNilReferenceSummaryString ( )
inlinevirtual

Returns the summary string for ValueObjects for which IsNilReference() is true.

Reimplemented in lldb_private::CPlusPlusLanguage, lldb_private::ObjCLanguage, and lldb_private::ObjCPlusPlusLanguage.

Definition at line 243 of file Language.h.

◆ GetPossibleFormattersMatches()

std::vector< FormattersMatchCandidate > Language::GetPossibleFormattersMatches ( ValueObject valobj,
lldb::DynamicValueType  use_dynamic 
)
virtual

Reimplemented in lldb_private::ObjCLanguage.

Definition at line 148 of file Language.cpp.

◆ GetPrimaryLanguage()

LanguageType Language::GetPrimaryLanguage ( lldb::LanguageType  language)
static

◆ GetSupportedLanguages()

std::set< lldb::LanguageType > Language::GetSupportedLanguages ( )
static

◆ GetTypeScavenger()

std::unique_ptr< Language::TypeScavenger > Language::GetTypeScavenger ( )
virtual

Reimplemented in lldb_private::CPlusPlusLanguage, and lldb_private::ObjCLanguage.

Definition at line 379 of file Language.cpp.

◆ IsLogicalTrue()

LazyBool Language::IsLogicalTrue ( ValueObject valobj,
Status error 
)
virtual

Definition at line 452 of file Language.cpp.

References lldb_private::eLazyBoolCalculate.

◆ IsNilReference()

bool Language::IsNilReference ( ValueObject valobj)
virtual

Reimplemented in lldb_private::CPlusPlusLanguage, and lldb_private::ObjCLanguage.

Definition at line 456 of file Language.cpp.

◆ IsSourceFile()

virtual bool lldb_private::Language::IsSourceFile ( llvm::StringRef  file_path) const
pure virtual

◆ IsTopLevelFunction()

bool Language::IsTopLevelFunction ( Function function)
virtual

Definition at line 130 of file Language.cpp.

◆ IsUninitializedReference()

bool Language::IsUninitializedReference ( ValueObject valobj)
virtual

Definition at line 458 of file Language.cpp.

◆ LanguageIsC()

bool Language::LanguageIsC ( lldb::LanguageType  language)
static

◆ LanguageIsCFamily()

bool Language::LanguageIsCFamily ( lldb::LanguageType  language)
static

◆ LanguageIsCPlusPlus()

bool Language::LanguageIsCPlusPlus ( lldb::LanguageType  language)
static

◆ LanguageIsObjC()

bool Language::LanguageIsObjC ( lldb::LanguageType  language)
static

◆ LanguageIsPascal()

bool Language::LanguageIsPascal ( lldb::LanguageType  language)
static

Definition at line 302 of file Language.cpp.

References lldb::eLanguageTypePascal83.

◆ operator=()

const Language & lldb_private::Language::operator= ( const Language )
privatedelete

◆ PrintAllLanguages()

void Language::PrintAllLanguages ( Stream s,
const char *  prefix,
const char *  suffix 
)
static

◆ PrintSupportedLanguagesForExpressions()

void Language::PrintSupportedLanguagesForExpressions ( Stream s,
llvm::StringRef  prefix,
llvm::StringRef  suffix 
)
static

Prints to the specified stream 's' each language type that the current target supports for expression evaluation.

Parameters
[out]sStream to which the language types are written.
[in]prefixString that is prepended to the language type.
[in]suffixString that is appended to the language type.

Definition at line 223 of file Language.cpp.

References GetLanguagesSupportingTypeSystemsForExpressions(), language_names, and num_languages.

Referenced by lldb_private::CommandObjectExpression::CommandOptions::SetOptionValue().

◆ SymbolNameFitsToLanguage()

virtual bool lldb_private::Language::SymbolNameFitsToLanguage ( Mangled  name) const
inlinevirtual

Returns true iff the given symbol name is compatible with the mangling scheme of this language.

This function should only return true if there is a high confidence that the name actually belongs to this language.

Reimplemented in lldb_private::CPlusPlusLanguage, and lldb_private::ObjCLanguage.

Definition at line 209 of file Language.h.


The documentation for this class was generated from the following files: