File indexing completed on 2026-05-10 08:44:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef LLVM_SUPPORT_SMALLVECTORMEMORYBUFFER_H
0015 #define LLVM_SUPPORT_SMALLVECTORMEMORYBUFFER_H
0016
0017 #include "llvm/ADT/SmallVector.h"
0018 #include "llvm/Support/MemoryBuffer.h"
0019 #include "llvm/Support/raw_ostream.h"
0020
0021 namespace llvm {
0022
0023
0024
0025
0026
0027
0028
0029 class SmallVectorMemoryBuffer : public MemoryBuffer {
0030 public:
0031
0032 SmallVectorMemoryBuffer(SmallVectorImpl<char> &&SV,
0033 bool RequiresNullTerminator = true)
0034 : SmallVectorMemoryBuffer(std::move(SV), "<in-memory object>",
0035 RequiresNullTerminator) {}
0036
0037
0038
0039 SmallVectorMemoryBuffer(SmallVectorImpl<char> &&SV, StringRef Name,
0040 bool RequiresNullTerminator = true)
0041 : SV(std::move(SV)), BufferName(std::string(Name)) {
0042 if (RequiresNullTerminator) {
0043 this->SV.push_back('\0');
0044 this->SV.pop_back();
0045 }
0046 init(this->SV.begin(), this->SV.end(), false);
0047 }
0048
0049
0050 ~SmallVectorMemoryBuffer() override;
0051
0052 StringRef getBufferIdentifier() const override { return BufferName; }
0053
0054 BufferKind getBufferKind() const override { return MemoryBuffer_Malloc; }
0055
0056 private:
0057 SmallVector<char, 0> SV;
0058 std::string BufferName;
0059 };
0060
0061 }
0062
0063 #endif