[llvm-commits] [llvm] r100499 - /llvm/trunk/include/llvm/ADT/OwningPtr.h
Douglas Gregor
dgregor at apple.com
Mon Apr 5 16:53:46 PDT 2010
Author: dgregor
Date: Mon Apr 5 18:53:46 2010
New Revision: 100499
URL: http://llvm.org/viewvc/llvm-project?rev=100499&view=rev
Log:
Remove MaybeOwningPtr. We're going to use reference-counting instead.
Modified:
llvm/trunk/include/llvm/ADT/OwningPtr.h
Modified: llvm/trunk/include/llvm/ADT/OwningPtr.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/OwningPtr.h?rev=100499&r1=100498&r2=100499&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/OwningPtr.h (original)
+++ llvm/trunk/include/llvm/ADT/OwningPtr.h Mon Apr 5 18:53:46 2010
@@ -128,99 +128,6 @@
a.swap(b);
}
-/// \brief A smart pointer that may own the object it points to.
-///
-/// An instance of \c MaybeOwningPtr may own the object it points to. If so,
-/// it will guarantee that the object will be deleted either on destructin of
-/// the OwningPtr or via an explicit reset(). Once created, ownership of the
-/// pointee object can be taken away from OwningPtr by using the \c take()
-/// method.
-template<class T>
-class MaybeOwningPtr {
- T *Ptr;
- bool Owned;
-
- struct MaybeOwningPtrRef {
- MaybeOwningPtrRef(T *Ptr, bool &Owned) : Ptr(Ptr), Owned(Owned) { }
-
- T *Ptr;
- bool &Owned;
- };
-
-public:
- MaybeOwningPtr() : Ptr(0), Owned(false) { }
-
- explicit MaybeOwningPtr(T *P, bool OwnP) : Ptr(P), Owned(OwnP) {}
-
- /// \brief Take ownership of the pointer stored in \c Other.
- MaybeOwningPtr(MaybeOwningPtr& Other) : Ptr(Other.Ptr), Owned(Other.Owned) {
- Other.Owned = false;
- }
-
- MaybeOwningPtr(MaybeOwningPtrRef Other) : Ptr(Other.Ptr), Owned(Other.Owned) {
- Other.Owned = false;
- }
-
- /// \brief Take ownership of the ppinter stored in \c Other.
- MaybeOwningPtr &operator=(MaybeOwningPtr &Other) {
- reset(Other.Ptr, Other.Owned);
- Other.Owned = false;
- return *this;
- }
-
- ~MaybeOwningPtr() {
- if (Owned)
- delete Ptr;
- }
-
- operator MaybeOwningPtrRef() { return MaybeOwningPtrRef(Ptr, Owned); }
-
- /// reset - Change the current pointee to the specified pointer. Note that
- /// calling this with any pointer (including a null pointer) deletes the
- /// current pointer.
- void reset(T *P, bool OwnP) {
- assert(P != Ptr);
- if (Owned)
- delete Ptr;
-
- Ptr = P;
- Owned = OwnP;
- }
-
- /// take - Return the underlying pointer and take ownership of it. This
- /// \c MaybeOwningPtr must have ownership before the call, and will
- /// relinquish ownership as part of the call.
- T *take() {
- assert(Owned && "Cannot take ownership from a non-owning pointer");
- Owned = false;
- return Ptr;
- }
-
- T &operator*() const {
- assert(Ptr && "Cannot dereference null pointer");
- return *Ptr;
- }
-
- T *operator->() const { return Ptr; }
- T *get() const { return Ptr; }
- operator bool() const { return Ptr != 0; }
- bool operator!() const { return Ptr == 0; }
-
- void swap(MaybeOwningPtr &RHS) {
- T *Tmp = RHS.Ptr;
- RHS.Ptr = Ptr;
- Ptr = Tmp;
- bool TmpOwned = RHS.Owned;
- RHS.Owned = Owned;
- Owned = TmpOwned;
- }
-};
-
-template<class T>
-inline void swap(MaybeOwningPtr<T> &a, MaybeOwningPtr<T> &b) {
- a.swap(b);
-}
-
} // end namespace llvm
#endif
More information about the llvm-commits
mailing list