]> granicus.if.org Git - clang/commitdiff
unique_ptrify HeaderMap::FileBuffer
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 29 Aug 2014 19:51:32 +0000 (19:51 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 29 Aug 2014 19:51:32 +0000 (19:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216758 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Lex/HeaderMap.h
lib/Lex/HeaderMap.cpp

index 8e78b5ac988413e616bb9c92ae367e24c9ec9800..5dac9b7c357b0915e6407af1ae04636dc29d1b39 100644 (file)
@@ -17,6 +17,8 @@
 #include "clang/Basic/LLVM.h"
 #include "llvm/Support/Compiler.h"
 
+#include <memory>
+
 namespace llvm {
   class MemoryBuffer;
 }
@@ -34,15 +36,12 @@ class HeaderMap {
   HeaderMap(const HeaderMap &) LLVM_DELETED_FUNCTION;
   void operator=(const HeaderMap &) LLVM_DELETED_FUNCTION;
 
-  const llvm::MemoryBuffer *FileBuffer;
+  std::unique_ptr<const llvm::MemoryBuffer> FileBuffer;
   bool NeedsBSwap;
 
-  HeaderMap(const llvm::MemoryBuffer *File, bool BSwap)
-    : FileBuffer(File), NeedsBSwap(BSwap) {
-  }
+  HeaderMap(std::unique_ptr<const llvm::MemoryBuffer> File, bool BSwap)
+      : FileBuffer(std::move(File)), NeedsBSwap(BSwap) {}
 public:
-  ~HeaderMap();
-
   /// HeaderMap::Create - This attempts to load the specified file as a header
   /// map.  If it doesn't look like a HeaderMap, it gives up and returns null.
   static const HeaderMap *Create(const FileEntry *FE, FileManager &FM);
index f6c658e119265c1ef7e1f5736a5da73b01eabdb3..c86569f74a67502f4d9acab43053a15a97876b91 100644 (file)
@@ -81,7 +81,8 @@ const HeaderMap *HeaderMap::Create(const FileEntry *FE, FileManager &FM) {
   unsigned FileSize = FE->getSize();
   if (FileSize <= sizeof(HMapHeader)) return nullptr;
 
-  std::unique_ptr<const llvm::MemoryBuffer> FileBuffer(FM.getBufferForFile(FE));
+  std::unique_ptr<const llvm::MemoryBuffer> FileBuffer =
+      FM.getBufferForFile(FE);
   if (!FileBuffer) return nullptr;  // Unreadable file?
   const char *FileStart = FileBuffer->getBufferStart();
 
@@ -103,11 +104,7 @@ const HeaderMap *HeaderMap::Create(const FileEntry *FE, FileManager &FM) {
   if (Header->Reserved != 0) return nullptr;
 
   // Okay, everything looks good, create the header map.
-  return new HeaderMap(FileBuffer.release(), NeedsByteSwap);
-}
-
-HeaderMap::~HeaderMap() {
-  delete FileBuffer;
+  return new HeaderMap(std::move(FileBuffer), NeedsByteSwap);
 }
 
 //===----------------------------------------------------------------------===//