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

updateResult()