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 | Library |
struct | ZipperedDeclSource |
Typedefs | |
---|---|
using | LibAttrs = llvm::StringMap< ArchitectureSet > |
using | ReexportedInterfaces = llvm::SmallVector< llvm::MachO::InterfaceFile, 8 > |
using | ZipperedDeclSources = std::vector< ZipperedDeclSource > |
using | HeaderSeq = std::vector< HeaderFile > |
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
◆ LibAttrs
◆ 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 136 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()
static 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 166 of file Frontend.cpp.
References Filename, clang::FileManager::getOptionalFileRef(), and Path.
◆ findRecordFromSlice()
◆ getFileExtension()
static StringRef clang::installapi::getFileExtension ( clang::Language Lang) | static |
---|
◆ getFlags()
◆ getName()
StringRef clang::installapi::getName ( const HeaderType T) | inline |
---|
◆ getVTableLinkage()
static CXXLinkage clang::installapi::getVTableLinkage ( const CXXRecordDecl * D) | static |
---|
◆ hasObjCExceptionAttribute()
◆ hasRTTI()
◆ hasVTable()
◆ isCppMangled()
static bool clang::installapi::isCppMangled ( StringRef Name) | static |
---|
◆ isExported()
static bool clang::installapi::isExported ( const NamedDecl * D) | static |
---|
◆ isFramework()
static bool clang::installapi::isFramework ( StringRef Path) | static |
---|
◆ isHeaderFile()
bool clang::installapi::isHeaderFile | ( | StringRef | Path | ) |
---|
◆ isInlined()
◆ isRTTIWeakDef()
◆ Rule()
const Regex clang::installapi::Rule | ( | "(.+)/(.+)\\.framework/" | ) |
---|
◆ shouldIgnoreCpp()
static bool clang::installapi::shouldIgnoreCpp ( StringRef Name, bool IsWeakDef ) | static |
---|
◆ shouldIgnorePrivateExternAttr()
static bool clang::installapi::shouldIgnorePrivateExternAttr ( const Decl * D) | static |
---|