Support: Rewrite dwarf::LanguageString(), NFC
[oota-llvm.git] / include / llvm / Support / SourceMgr.h
index 4717553bd0de13ee47f478d7ae896eeee9fb65a2..f9e114b67cb44f4629882179386fcc22570604c2 100644 (file)
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/Twine.h"
+#include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/SMLoc.h"
 #include <string>
 
 namespace llvm {
-  class MemoryBuffer;
   class SourceMgr;
   class SMDiagnostic;
   class SMFixIt;
@@ -47,10 +47,15 @@ public:
 private:
   struct SrcBuffer {
     /// The memory buffer for the file.
-    MemoryBuffer *Buffer;
+    std::unique_ptr<MemoryBuffer> Buffer;
 
     /// This is the location of the parent include, or null if at the top level.
     SMLoc IncludeLoc;
+
+    SrcBuffer() {}
+
+    SrcBuffer(SrcBuffer &&O)
+        : Buffer(std::move(O.Buffer)), IncludeLoc(O.IncludeLoc) {}
   };
 
   /// This is all of the buffers that we are reading from.
@@ -96,7 +101,7 @@ public:
 
   const MemoryBuffer *getMemoryBuffer(unsigned i) const {
     assert(isValidBufferID(i));
-    return Buffers[i - 1].Buffer;
+    return Buffers[i - 1].Buffer.get();
   }
 
   unsigned getNumBuffers() const {
@@ -115,11 +120,12 @@ public:
 
   /// Add a new source buffer to this source manager. This takes ownership of
   /// the memory buffer.
-  unsigned AddNewSourceBuffer(MemoryBuffer *F, SMLoc IncludeLoc) {
+  unsigned AddNewSourceBuffer(std::unique_ptr<MemoryBuffer> F,
+                              SMLoc IncludeLoc) {
     SrcBuffer NB;
-    NB.Buffer = F;
+    NB.Buffer = std::move(F);
     NB.IncludeLoc = IncludeLoc;
-    Buffers.push_back(NB);
+    Buffers.push_back(std::move(NB));
     return Buffers.size();
   }