summaryrefslogtreecommitdiff
path: root/ace/Refcounted_Auto_Ptr.i
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Refcounted_Auto_Ptr.i')
-rw-r--r--ace/Refcounted_Auto_Ptr.i175
1 files changed, 0 insertions, 175 deletions
diff --git a/ace/Refcounted_Auto_Ptr.i b/ace/Refcounted_Auto_Ptr.i
deleted file mode 100644
index 1a22f66bdc0..00000000000
--- a/ace/Refcounted_Auto_Ptr.i
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// Refcounted_Auto_Ptr.i
-
-#include "Synch_T.h"
-
-template <class X, class ACE_LOCK> inline ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> *
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::create (X *p)
-{
- // Yes set ref count to zero.
- return new ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> (p);
-}
-
-template <class X, class ACE_LOCK> inline ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> *
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::attach (ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>*& rep)
-{
- ACE_ASSERT (rep != 0);
-
- ACE_GUARD_RETURN (ACE_LOCK, guard, rep->lock_, rep);
-
- ++rep->ref_count_;
-
- return rep;
-}
-
-template <class X, class ACE_LOCK> inline void
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::detach (ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>*& rep)
-{
- ACE_ASSERT (rep != 0);
- ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> *rep_del = 0;
-
- {
- ACE_GUARD (ACE_LOCK, guard, rep->lock_);
-
- if (rep->ref_count_-- == 0)
- // Since rep contains the lock held by the ACE_Guard, the guard
- // needs to be released before freeing the memory holding the
- // lock. So save the pointer to free, then release, then free.
- rep_del = rep;
- } // Release the lock
- if (0 != rep_del)
- delete rep;
-}
-
-template <class X, class ACE_LOCK> inline void
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::assign (ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>*& rep,
- ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>* new_rep)
-{
- ACE_ASSERT (rep != 0);
- ACE_ASSERT (new_rep != 0);
-
- ACE_GUARD (ACE_LOCK, guard, rep->lock_);
-
- ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> *old = rep;
- rep = new_rep;
-
- // detached old last for exception safety
- if(old->ref_count_-- == 0)
- // We do not need the lock when deleting the representation.
- // There should be no side effects from deleting rep and we don
- // not want to release a deleted mutex.
- delete old;
-}
-
-template <class X, class ACE_LOCK> inline
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::ACE_Refcounted_Auto_Ptr_Rep (X *p)
- : ptr_ (p),
- ref_count_ (0)
-{
-}
-
-template <class X, class ACE_LOCK> inline
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::~ACE_Refcounted_Auto_Ptr_Rep (void)
-{
-}
-
-template<class X, class ACE_LOCK> inline X *
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::release (void)
-{
- ACE_GUARD_RETURN (ACE_LOCK, guard, this->lock_, 0);
-
- return this->ptr_.release ();
-}
-
-template<class X, class ACE_LOCK> inline void
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::reset (X *p)
-{
- ACE_GUARD (ACE_LOCK, guard, this->lock_);
-
- this->ptr_.reset (p);
-}
-
-template <class X, class ACE_LOCK> inline X *
-ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK>::get (void)
-{
- ACE_GUARD_RETURN (ACE_LOCK, guard, this->lock_, 0);
-
- return this->ptr_.get ();
-}
-
-template <class X, class ACE_LOCK> inline
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::ACE_Refcounted_Auto_Ptr (X *p)
- : rep_ (AUTO_REFCOUNTED_PTR_REP::create (p))
-{
-}
-
-template <class X, class ACE_LOCK> inline
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::ACE_Refcounted_Auto_Ptr (const ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &r)
- : rep_ (AUTO_REFCOUNTED_PTR_REP::attach (((ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &) r).rep_))
-{
-}
-
-template <class X, class ACE_LOCK> inline
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::~ACE_Refcounted_Auto_Ptr (void)
-{
- AUTO_REFCOUNTED_PTR_REP::detach (rep_);
-}
-
-template <class X, class ACE_LOCK> inline int
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator== (const ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &r) const
-{
- return r.rep_ == this->rep_;
-}
-
-template <class X, class ACE_LOCK> inline int
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator!= (const ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &r) const
-{
- return r.rep_ != this->rep_;
-}
-
-template <class X, class ACE_LOCK> inline X *
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator-> (void) const
-{
- return this->rep_->get();
-}
-
-template<class X, class ACE_LOCK> inline X &
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator *() const
-{
- return *this->rep_->get ();
-}
-
-template <class X, class ACE_LOCK> inline X*
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::get (void)
-{
- // We return the ACE_Future_rep.
- return this->rep_->get ();
-}
-
-template<class X, class ACE_LOCK> inline X *
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::release (void)
-{
- return this->rep_->release ();
-}
-
-template<class X, class ACE_LOCK> inline void
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::reset (X *p)
-{
- this->rep_->reset (p);
-}
-
-template <class X, class ACE_LOCK> inline void
-ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator = (const ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &rhs)
-{
- // assignment:
- //
- // bind <this> to the same <ACE_Refcounted_Auto_Ptr_Rep> as <r>.
-
- // This will work if &r == this, by first increasing the ref count
- ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &r = (ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &) rhs;
- AUTO_REFCOUNTED_PTR_REP::assign (this->rep_,
- AUTO_REFCOUNTED_PTR_REP::attach (r.rep_));
-}
-