10 #ifndef LLVM_CLANG_BASIC_MEMORYBUFFERCACHE_H
11 #define LLVM_CLANG_BASIC_MEMORYBUFFERCACHE_H
13 #include "llvm/ADT/IntrusiveRefCntPtr.h"
14 #include "llvm/ADT/StringMap.h"
34 std::unique_ptr<llvm::MemoryBuffer>
Buffer;
41 llvm::StringMap<BufferEntry> Buffers;
44 unsigned NextIndex = 0;
47 unsigned FirstRemovableIndex = 0;
55 std::unique_ptr<llvm::MemoryBuffer>
Buffer);
63 llvm::MemoryBuffer *
lookupBuffer(llvm::StringRef Filename);
80 #endif // LLVM_CLANG_BASIC_MEMORYBUFFERCACHE_H
std::unique_ptr< llvm::MemoryBuffer > Buffer
Manage memory buffers across multiple users.
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.
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.