clang: clang::installapi Namespace Reference (original) (raw)
The DirectoryScanner for collecting library files on the file system. More...
| Classes | |
|---|---|
| class | DirectoryScanner |
| class | DylibVerifier |
| Service responsible to tracking state of verification across the lifetime of InstallAPI. More... | |
| class | FileListReader |
| struct | FrontendAttrs |
| Frontend information captured about records. More... | |
| class | FrontendRecordsSlice |
| class | HeaderFile |
| class | HeaderGlob |
| Glob that represents a pattern of header files to retreive. More... | |
| class | InstallAPIAction |
| struct | InstallAPIContext |
| Struct used for generating validating InstallAPI. More... | |
| class | InstallAPIVisitor |
| ASTVisitor for collecting declarations that represent global symbols. More... | |
| class | LibAttrs |
| Represents dynamic library specific attributes that are tied to architecture slices. More... | |
| class | Library |
| struct | ZipperedDeclSource |
| Enumerations | |
|---|---|
| enum | ScanMode { ScanFrameworks, ScanDylibs } |
| enum class | VerificationMode { Invalid, ErrorsOnly, ErrorsAndWarnings, Pedantic } |
| A list of InstallAPI verification modes. More... | |
| enum class | HeaderType { Public, Private, Project, Unknown } |
| Functions | |
|---|---|
| std::string | findLibrary (StringRef InstallName, FileManager &FM, ArrayRef< std::string > FrameworkSearchPaths, ArrayRef< std::string > LibrarySearchPaths, ArrayRef< std::string > SearchPaths) |
| Lookup the dylib or TextAPI file location for a system library or framework. | |
| std::unique_ptr< llvm::MemoryBuffer > | createInputBuffer (InstallAPIContext &Ctx) |
| Create a buffer that contains all headers to scan for global symbols with. | |
| StringRef | getName (const HeaderType T) |
| std::optional< std::string > | createIncludeHeaderName (const StringRef FullPath) |
| Assemble expected way header will be included by clients. | |
| bool | isHeaderFile (StringRef Path) |
| Determine if Path is a header file. | |
| llvm::Expected< PathSeq > | enumerateFiles (clang::FileManager &FM, StringRef Directory) |
| Given input directory, collect all header files. | |
| static bool | isFramework (StringRef Path) |
| static bool | isCppMangled (StringRef Name) |
| static std::string | demangle (StringRef Name) |
| static DylibVerifier::Result | updateResult (const DylibVerifier::Result Prev, const DylibVerifier::Result Curr) |
| static bool | shouldIgnorePrivateExternAttr (const Decl *D) |
| Record * | findRecordFromSlice (const RecordsSlice *Slice, StringRef Name, EncodeKind Kind) |
| static ObjCIFSymbolKind | assignObjCIFSymbolKind (const ObjCInterfaceRecord *R) |
| static bool | shouldIgnoreCpp (StringRef Name, bool IsWeakDef) |
| static StringRef | getFileExtension (clang::Language Lang) |
| const Regex | Rule ("(.+)/(.+)\\.framework/") |
| static bool | isExported (const NamedDecl *D) |
| static bool | isInlined (const FunctionDecl *D) |
| static SymbolFlags | getFlags (bool WeakDef, bool ThreadLocal=false) |
| static bool | hasObjCExceptionAttribute (const ObjCInterfaceDecl *D) |
| Check if the interface itself or any of its super classes have an exception attribute. | |
| static bool | hasVTable (const CXXRecordDecl *D) |
| static CXXLinkage | getVTableLinkage (const CXXRecordDecl *D) |
| static bool | isRTTIWeakDef (const CXXRecordDecl *D) |
| static bool | hasRTTI (const CXXRecordDecl *D) |
The DirectoryScanner for collecting library files on the file system.
Defines the content of a library, such as public and private header files, and whether it is a framework.
Representations of a library's headers for InstallAPI.
◆ HeaderSeq
◆ ReexportedInterfaces
◆ ZipperedDeclSources
◆ HeaderType
| Enumerator | |
|---|---|
| Public | Represents declarations accessible to all clients. |
| Private | Represents declarations accessible to a disclosed set of clients. |
| Project | Represents declarations only accessible as implementation details to the input library. |
| Unknown | Unset or unknown type. |
Definition at line 26 of file HeaderFile.h.
◆ ScanMode
| Enumerator | |
|---|---|
| ScanFrameworks | Scanning Framework directory. |
| ScanDylibs | Scanning Dylib directory. |
Definition at line 20 of file DirectoryScanner.h.
◆ VerificationMode
A list of InstallAPI verification modes.
| Enumerator |
|---|
| Invalid |
| ErrorsOnly |
| ErrorsAndWarnings |
| Pedantic |
Definition at line 21 of file DylibVerifier.h.
◆ assignObjCIFSymbolKind()
◆ createIncludeHeaderName()
| std::optional< std::string > clang::installapi::createIncludeHeaderName | ( | const StringRef | FullPath | ) |
|---|
Assemble expected way header will be included by clients.
As in what maps inside the brackets of #include <IncludeName.h> For example, "/System/Library/Frameworks/Foo.framework/Headers/Foo.h" returns "Foo/Foo.h"
Parameters
| FullPath | Path to the header file which includes the library structure. |
|---|
Definition at line 19 of file HeaderFile.cpp.
References clang::installapi::HeaderFile::getFrameworkIncludeRule().
◆ createInputBuffer()
| std::unique_ptr< MemoryBuffer > clang::installapi::createInputBuffer | ( | InstallAPIContext & | Ctx | ) |
|---|
Create a buffer that contains all headers to scan for global symbols with.
Definition at line 135 of file Frontend.cpp.
References clang::installapi::InstallAPIContext::addKnownHeader(), clang::C, clang::CXX, getFileExtension(), clang::installapi::HeaderFile::getIncludeName(), getName(), clang::installapi::HeaderFile::getPath(), clang::installapi::HeaderFile::getType(), clang::installapi::InstallAPIContext::InputHeaders, clang::installapi::HeaderFile::isExcluded(), clang::installapi::InstallAPIContext::LangMode, clang::installapi::InstallAPIContext::Slice, clang::installapi::InstallAPIContext::Type, Unknown, and clang::installapi::HeaderFile::useIncludeName().
◆ demangle()
| std::string clang::installapi::demangle ( StringRef Name) | static |
|---|
◆ enumerateFiles()
◆ findLibrary()
| std::string clang::installapi::findLibrary | ( | StringRef | InstallName, |
|---|---|---|---|
| FileManager & | FM, | ||
| ArrayRef< std::string > | FrameworkSearchPaths, | ||
| ArrayRef< std::string > | LibrarySearchPaths, | ||
| ArrayRef< std::string > | SearchPaths ) |
Lookup the dylib or TextAPI file location for a system library or framework.
The search paths provided are searched in order. @rpath based libraries are not supported.
Parameters
| InstallName | The install name for the library. |
|---|---|
| FrameworkSearchPaths | Search paths to look up frameworks with. |
| LibrarySearchPaths | Search paths to look up dylibs with. |
| SearchPaths | Fallback search paths if library was not found in earlier paths. |
Returns
The full path of the library.
Definition at line 165 of file Frontend.cpp.
References clang::FileManager::getOptionalFileRef().
◆ findRecordFromSlice()
◆ getFileExtension()
| StringRef clang::installapi::getFileExtension ( clang::Language Lang) | static |
|---|
◆ getFlags()
◆ getName()
| StringRef clang::installapi::getName ( const HeaderType T) | inline |
|---|
◆ getVTableLinkage()
| CXXLinkage clang::installapi::getVTableLinkage ( const CXXRecordDecl * D) | static |
|---|
Definition at line 347 of file Visitor.cpp.
References clang::Decl::getASTContext(), clang::ASTContext::getCurrentKeyFunction(), clang::CXXRecordDecl::getTemplateSpecializationKind(), clang::FunctionDecl::getTemplateSpecializationKind(), clang::NamedDecl::getVisibility(), clang::CXXRecordDecl::hasDefinition(), clang::HiddenVisibility, clang::CXXRecordDecl::isDynamicClass(), clang::NamedDecl::isExternallyVisible(), isInlined(), clang::TSK_ExplicitInstantiationDeclaration, clang::TSK_ExplicitInstantiationDefinition, clang::TSK_ExplicitSpecialization, clang::TSK_ImplicitInstantiation, and clang::TSK_Undeclared.
Referenced by isRTTIWeakDef().
◆ hasObjCExceptionAttribute()
◆ hasRTTI()
◆ hasVTable()
Definition at line 303 of file Visitor.cpp.
References clang::Decl::getASTContext(), clang::ASTContext::getCurrentKeyFunction(), clang::CXXRecordDecl::getTemplateSpecializationKind(), clang::FunctionDecl::getTemplateSpecializationKind(), clang::CXXRecordDecl::hasDefinition(), clang::CXXRecordDecl::isAbstract(), clang::TagDecl::isCompleteDefinition(), clang::CXXRecordDecl::isDynamicClass(), clang::NamedDecl::isExternallyVisible(), clang::TSK_ExplicitInstantiationDeclaration, clang::TSK_ExplicitInstantiationDefinition, clang::TSK_ExplicitSpecialization, clang::TSK_ImplicitInstantiation, and clang::TSK_Undeclared.
◆ isCppMangled()
| bool clang::installapi::isCppMangled ( StringRef Name) | static |
|---|
◆ isExported()
◆ isFramework()
| bool clang::installapi::isFramework ( StringRef Path) | static |
|---|
◆ isHeaderFile()
| bool clang::installapi::isHeaderFile | ( | StringRef | Path | ) |
|---|
◆ isInlined()
◆ isRTTIWeakDef()
◆ Rule()
| const Regex clang::installapi::Rule | ( | "(.+)/(.+)\\.framework/" | ) |
|---|
◆ shouldIgnoreCpp()
| bool clang::installapi::shouldIgnoreCpp ( StringRef Name, bool IsWeakDef ) | static |
|---|
◆ shouldIgnorePrivateExternAttr()
| bool clang::installapi::shouldIgnorePrivateExternAttr ( const Decl * D) | static |
|---|