Inline function into single use. NFC.
[oota-llvm.git] / include / llvm / Object / Binary.h
index d5bb182442c7e6a63eb3f7426c9e39d29e7bcc46..a3d6d0d4d428b6a671bdaf04e88b39f9f4d30836 100644 (file)
@@ -28,8 +28,8 @@ namespace object {
 
 class Binary {
 private:
-  Binary() LLVM_DELETED_FUNCTION;
-  Binary(const Binary &other) LLVM_DELETED_FUNCTION;
+  Binary() = delete;
+  Binary(const Binary &other) = delete;
 
   unsigned int TypeID;
 
@@ -137,9 +137,12 @@ public:
   OwningBinary();
   OwningBinary(std::unique_ptr<T> Bin, std::unique_ptr<MemoryBuffer> Buf);
   OwningBinary(OwningBinary<T>&& Other);
+  OwningBinary<T> &operator=(OwningBinary<T> &&Other);
 
-  std::unique_ptr<T> &getBinary();
-  std::unique_ptr<MemoryBuffer> &getBuffer();
+  std::pair<std::unique_ptr<T>, std::unique_ptr<MemoryBuffer>> takeBinary();
+
+  T* getBinary();
+  const T* getBinary() const;
 };
 
 template <typename T>
@@ -153,13 +156,25 @@ template <typename T>
 OwningBinary<T>::OwningBinary(OwningBinary &&Other)
     : Bin(std::move(Other.Bin)), Buf(std::move(Other.Buf)) {}
 
-template <typename T> std::unique_ptr<T> &OwningBinary<T>::getBinary() {
-  return Bin;
+template <typename T>
+OwningBinary<T> &OwningBinary<T>::operator=(OwningBinary &&Other) {
+  Bin = std::move(Other.Bin);
+  Buf = std::move(Other.Buf);
+  return *this;
 }
 
 template <typename T>
-std::unique_ptr<MemoryBuffer> &OwningBinary<T>::getBuffer() {
-  return Buf;
+std::pair<std::unique_ptr<T>, std::unique_ptr<MemoryBuffer>>
+OwningBinary<T>::takeBinary() {
+  return std::make_pair(std::move(Bin), std::move(Buf));
+}
+
+template <typename T> T* OwningBinary<T>::getBinary() {
+  return Bin.get();
+}
+
+template <typename T> const T* OwningBinary<T>::getBinary() const {
+  return Bin.get();
 }
 
 ErrorOr<OwningBinary<Binary>> createBinary(StringRef Path);