static void printResult(FileRemapper &remapper, raw_ostream &OS) { PreprocessorOptions PPOpts; remapper.applyMappings(PPOpts); // The changed files will be in memory buffers, print them. for (const auto &RB : PPOpts.RemappedFileBuffers) OS << RB.second->getBuffer(); }
static void printResult(FileRemapper &remapper, raw_ostream &OS) { CompilerInvocation CI; remapper.applyMappings(CI); PreprocessorOptions &PPOpts = CI.getPreprocessorOpts(); // The changed files will be in memory buffers, print them. for (unsigned i = 0, e = PPOpts.RemappedFileBuffers.size(); i != e; ++i) { const llvm::MemoryBuffer *mem = PPOpts.RemappedFileBuffers[i].second; OS << mem->getBuffer(); } }
bool arcmt::getFileRemappings(std::vector<std::pair<std::string,std::string> > & remap, StringRef outputDir, DiagnosticConsumer *DiagClient) { assert(!outputDir.empty()); IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs()); IntrusiveRefCntPtr<DiagnosticsEngine> Diags( new DiagnosticsEngine(DiagID, DiagClient, /*ShouldOwnClient=*/false)); FileRemapper remapper; bool err = remapper.initFromDisk(outputDir, *Diags, /*ignoreIfFilesChanged=*/true); if (err) return true; PreprocessorOptions PPOpts; remapper.applyMappings(PPOpts); remap = PPOpts.RemappedFiles; return false; }
bool arcmt::getFileRemappings(std::vector<std::pair<std::string,std::string> > & remap, llvm::StringRef outputDir, DiagnosticClient *DiagClient) { assert(!outputDir.empty()); llvm::IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs()); llvm::IntrusiveRefCntPtr<Diagnostic> Diags( new Diagnostic(DiagID, DiagClient, /*ShouldOwnClient=*/false)); FileRemapper remapper; bool err = remapper.initFromDisk(outputDir, *Diags, /*ignoreIfFilesChanged=*/true); if (err) return true; CompilerInvocation CI; remapper.applyMappings(CI); remap = CI.getPreprocessorOpts().RemappedFiles; return false; }
bool arcmt::getFileRemappingsFromFileList( std::vector<std::pair<std::string,std::string> > &remap, ArrayRef<StringRef> remapFiles, DiagnosticConsumer *DiagClient) { bool hasErrorOccurred = false; llvm::StringMap<bool> Uniquer; IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs()); IntrusiveRefCntPtr<DiagnosticsEngine> Diags( new DiagnosticsEngine(DiagID, new DiagnosticOptions, DiagClient, /*ShouldOwnClient=*/false)); for (ArrayRef<StringRef>::iterator I = remapFiles.begin(), E = remapFiles.end(); I != E; ++I) { StringRef file = *I; FileRemapper remapper; bool err = remapper.initFromFile(file, *Diags, /*ignoreIfFilesChanged=*/true); hasErrorOccurred = hasErrorOccurred || err; if (err) continue; PreprocessorOptions PPOpts; remapper.applyMappings(PPOpts); for (PreprocessorOptions::remapped_file_iterator RI = PPOpts.remapped_file_begin(), RE = PPOpts.remapped_file_end(); RI != RE; ++RI) { bool &inserted = Uniquer[RI->first]; if (inserted) continue; inserted = true; remap.push_back(*RI); } } return hasErrorOccurred; }