// Create the internal module tree representation. static Module *loadModuleDescriptions( llvm::StringRef RootModuleName, llvm::ArrayRef<std::string> HeaderFileNames, DependencyMap &Dependencies, llvm::StringRef HeaderPrefix) { // Create root module. Module *RootModule = new Module(RootModuleName); llvm::SmallString<256> CurrentDirectory; llvm::sys::fs::current_path(CurrentDirectory); // If no header prefix, use current directory. if (HeaderPrefix.size() == 0) HeaderPrefix = CurrentDirectory; // Walk the header file names and output the module map. for (llvm::ArrayRef<std::string>::iterator I = HeaderFileNames.begin(), E = HeaderFileNames.end(); I != E; ++I) { // Add as a module. if (!addModuleDescription(RootModule, *I, HeaderPrefix, Dependencies)) return nullptr; } return RootModule; }
// Create the internal module tree representation. static Module *loadModuleDescriptions( llvm::StringRef RootModuleName, llvm::ArrayRef<std::string> HeaderFileNames, llvm::ArrayRef<std::string> ProblemFileNames, DependencyMap &Dependencies, llvm::StringRef HeaderPrefix) { // Create root module. auto *RootModule = new Module(RootModuleName, false); llvm::SmallString<256> CurrentDirectory; llvm::sys::fs::current_path(CurrentDirectory); // If no header prefix, use current directory. if (HeaderPrefix.size() == 0) HeaderPrefix = CurrentDirectory; // Walk the header file names and output the module map. for (llvm::ArrayRef<std::string>::iterator I = HeaderFileNames.begin(), E = HeaderFileNames.end(); I != E; ++I) { std::string Header(*I); bool IsProblemFile = false; for (auto &ProblemFile : ProblemFileNames) { if (ProblemFile == Header) { IsProblemFile = true; break; } } // Add as a module. if (!addModuleDescription(RootModule, Header, HeaderPrefix, Dependencies, IsProblemFile)) return nullptr; } return RootModule; }