projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Change DenseMap to use a power of 2 growth if one is given instead of the next power...
[oota-llvm.git]
/
include
/
llvm
/
ADT
/
OwningPtr.h
diff --git
a/include/llvm/ADT/OwningPtr.h
b/include/llvm/ADT/OwningPtr.h
index e82ebc7b049c848381eafae2192859dfffdea6d9..05bcd40d0862202e9161f46950ea0bae0498ad39 100644
(file)
--- a/
include/llvm/ADT/OwningPtr.h
+++ b/
include/llvm/ADT/OwningPtr.h
@@
-14,6
+14,7
@@
#ifndef LLVM_ADT_OWNING_PTR_H
#define LLVM_ADT_OWNING_PTR_H
#ifndef LLVM_ADT_OWNING_PTR_H
#define LLVM_ADT_OWNING_PTR_H
+#include "llvm/Support/Compiler.h"
#include <cassert>
#include <cstddef>
#include <cassert>
#include <cstddef>
@@
-25,14
+26,20
@@
namespace llvm {
/// pointee object can be taken away from OwningPtr by using the take method.
template<class T>
class OwningPtr {
/// pointee object can be taken away from OwningPtr by using the take method.
template<class T>
class OwningPtr {
- OwningPtr &operator=(const OwningPtr &); // DO NOT IMPLEMENT
+ OwningPtr(OwningPtr const &) LLVM_DELETED_FUNCTION;
+ OwningPtr &operator=(OwningPtr const &) LLVM_DELETED_FUNCTION;
T *Ptr;
public:
explicit OwningPtr(T *P = 0) : Ptr(P) {}
T *Ptr;
public:
explicit OwningPtr(T *P = 0) : Ptr(P) {}
- OwningPtr(const OwningPtr &RHS) : Ptr(0) {
- assert(RHS.Ptr == 0 && "Only null OwningPtr's are copyable!");
+#if LLVM_USE_RVALUE_REFERENCES
+ OwningPtr(OwningPtr &&Other) : Ptr(Other.take()) {}
+
+ OwningPtr &operator=(OwningPtr &&Other) {
+ reset(Other.take());
+ return *this;
}
}
+#endif
~OwningPtr() {
delete Ptr;
~OwningPtr() {
delete Ptr;
@@
-82,12
+89,21
@@
inline void swap(OwningPtr<T> &a, OwningPtr<T> &b) {
/// functionality as OwningPtr, except that it works for array types.
template<class T>
class OwningArrayPtr {
/// functionality as OwningPtr, except that it works for array types.
template<class T>
class OwningArrayPtr {
- OwningArrayPtr(OwningArrayPtr const &)
; // DO NOT IMPLEMENT
- OwningArrayPtr &operator=(OwningArrayPtr const &)
; // DO NOT IMPLEMENT
+ OwningArrayPtr(OwningArrayPtr const &)
LLVM_DELETED_FUNCTION;
+ OwningArrayPtr &operator=(OwningArrayPtr const &)
LLVM_DELETED_FUNCTION;
T *Ptr;
public:
explicit OwningArrayPtr(T *P = 0) : Ptr(P) {}
T *Ptr;
public:
explicit OwningArrayPtr(T *P = 0) : Ptr(P) {}
+#if LLVM_USE_RVALUE_REFERENCES
+ OwningArrayPtr(OwningArrayPtr &&Other) : Ptr(Other.take()) {}
+
+ OwningArrayPtr &operator=(OwningArrayPtr &&Other) {
+ reset(Other.take());
+ return *this;
+ }
+#endif
+
~OwningArrayPtr() {
delete [] Ptr;
}
~OwningArrayPtr() {
delete [] Ptr;
}