11 #include "llvm/Support/MemoryBuffer.h" 13 using namespace clang;
17 std::unique_ptr<llvm::MemoryBuffer> Buffer) {
19 Buffers.insert({
Filename, BufferEntry{std::move(Buffer), NextIndex++}});
20 assert(Insertion.second &&
"Already has a buffer");
21 return *Insertion.first->second.Buffer;
25 auto I = Buffers.find(Filename);
26 if (I == Buffers.end())
28 return I->second.Buffer.get();
32 auto I = Buffers.find(Filename);
33 if (I == Buffers.end())
35 return I->second.Index < FirstRemovableIndex;
39 auto I = Buffers.find(Filename);
40 assert(I != Buffers.end() &&
"No buffer to remove...");
41 if (I->second.Index < FirstRemovableIndex)
llvm::MemoryBuffer & addBuffer(llvm::StringRef Filename, std::unique_ptr< llvm::MemoryBuffer > Buffer)
Store the Buffer under the Filename.
void finalizeCurrentBuffers()
Finalize the current buffers in the cache.
bool isBufferFinal(llvm::StringRef Filename)
Check whether the buffer is final.
Dataflow Directional Tag Classes.
llvm::MemoryBuffer * lookupBuffer(llvm::StringRef Filename)
Get a pointer to the buffer if it exists; else nullptr.
bool tryToRemoveBuffer(llvm::StringRef Filename)
Try to remove a buffer from the cache.