clang  3.7.0
Classes | Namespaces | Macros | Enumerations | Functions
ModuleMap.cpp File Reference
#include "clang/Lex/ModuleMap.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/HeaderSearchOptions.h"
#include "clang/Lex/LexDiagnostic.h"
#include "clang/Lex/Lexer.h"
#include "clang/Lex/LiteralSupport.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
#include <stdlib.h>
#include "clang/Basic/TokenKinds.def"
Include dependency graph for ModuleMap.cpp:

Go to the source code of this file.

Classes

struct  clang::MMToken
 A token in a module map file. More...
 
class  clang::ModuleMapParser
 

Namespaces

 clang
 

Macros

#define KEYWORD(Keyword, Conditions)   .Case(#Keyword, true)
 
#define ALIAS(Keyword, AliasOf, Conditions)   .Case(Keyword, true)
 

Enumerations

enum  AttributeKind
 Enumerates the known attributes. More...
 

Functions

static StringRef sanitizeFilenameAsIdentifier (StringRef Name, SmallVectorImpl< char > &Buffer)
 "Sanitize" a filename so that it can be used as an identifier. More...
 
static bool isBuiltinHeader (StringRef FileName)
 Determine whether the given file name is the name of a builtin header, supplied by Clang to replace, override, or augment existing system headers. More...
 
static bool violatesPrivateInclude (Module *RequestingModule, const FileEntry *IncFileEnt, ModuleMap::ModuleHeaderRole Role, Module *RequestedModule)
 
static ModulegetTopLevelOrNull (Module *M)
 
static bool isBetterKnownHeader (const ModuleMap::KnownHeader &New, const ModuleMap::KnownHeader &Old)
 
static void inferFrameworkLink (Module *Mod, const DirectoryEntry *FrameworkDir, FileManager &FileMgr)
 For a framework module, infer the framework against which we should link. More...
 
static Module::HeaderKind headerRoleToKind (ModuleMap::ModuleHeaderRole Role)
 
static void appendSubframeworkPaths (Module *Mod, SmallVectorImpl< char > &Path)
 Append to Paths the set of paths needed to get to the subframework in which the given module lives. More...
 
static std::string formatModuleId (const ModuleId &Id)
 Format a module-id into a string. More...
 

Macro Definition Documentation

#define ALIAS (   Keyword,
  AliasOf,
  Conditions 
)    .Case(Keyword, true)
#define KEYWORD (   Keyword,
  Conditions 
)    .Case(#Keyword, true)

Enumeration Type Documentation

Enumerates the known attributes.

Definition at line 1248 of file ModuleMap.cpp.

Function Documentation

static void appendSubframeworkPaths ( Module Mod,
SmallVectorImpl< char > &  Path 
)
static

Append to Paths the set of paths needed to get to the subframework in which the given module lives.

Definition at line 1622 of file ModuleMap.cpp.

References clang::Module::IsFramework, clang::Module::Name, and clang::Module::Parent.

static std::string formatModuleId ( const ModuleId Id)
static

Format a module-id into a string.

Definition at line 2003 of file ModuleMap.cpp.

static Module* getTopLevelOrNull ( Module M)
static
static Module::HeaderKind headerRoleToKind ( ModuleMap::ModuleHeaderRole  Role)
static
static void inferFrameworkLink ( Module Mod,
const DirectoryEntry FrameworkDir,
FileManager FileMgr 
)
static

For a framework module, infer the framework against which we should link.

Definition at line 571 of file ModuleMap.cpp.

References clang::FileManager::getFile(), clang::DirectoryEntry::getName(), clang::Module::IsFramework, clang::Module::isSubFramework(), clang::Module::LinkLibraries, and clang::Module::Name.

static bool isBetterKnownHeader ( const ModuleMap::KnownHeader New,
const ModuleMap::KnownHeader Old 
)
static
static bool isBuiltinHeader ( StringRef  FileName)
static

Determine whether the given file name is the name of a builtin header, supplied by Clang to replace, override, or augment existing system headers.

Definition at line 150 of file ModuleMap.cpp.

static StringRef sanitizeFilenameAsIdentifier ( StringRef  Name,
SmallVectorImpl< char > &  Buffer 
)
static

"Sanitize" a filename so that it can be used as an identifier.

Definition at line 111 of file ModuleMap.cpp.

References clang::isDigit(), clang::isIdentifierBody(), and clang::isValidIdentifier().

Referenced by clang::ModuleMap::findModuleForHeader(), and clang::ModuleMap::isHeaderUnavailableInModule().

static bool violatesPrivateInclude ( Module RequestingModule,
const FileEntry IncFileEnt,
ModuleMap::ModuleHeaderRole  Role,
Module RequestedModule 
)
static