summaryrefslogtreecommitdiff
path: root/contrib/utility/Utility/ReferenceCounting
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/utility/Utility/ReferenceCounting')
-rw-r--r--contrib/utility/Utility/ReferenceCounting/DefaultImpl.hpp96
-rw-r--r--contrib/utility/Utility/ReferenceCounting/DefaultImpl.ipp105
-rw-r--r--contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.hpp60
-rw-r--r--contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.ipp122
-rw-r--r--contrib/utility/Utility/ReferenceCounting/Interface.hpp84
-rw-r--r--contrib/utility/Utility/ReferenceCounting/Interface.ipp22
-rw-r--r--contrib/utility/Utility/ReferenceCounting/Interface.tpp20
-rw-r--r--contrib/utility/Utility/ReferenceCounting/ReferenceCounting.hpp16
-rw-r--r--contrib/utility/Utility/ReferenceCounting/SmartPtr.hpp103
-rw-r--r--contrib/utility/Utility/ReferenceCounting/SmartPtr.tpp170
-rw-r--r--contrib/utility/Utility/ReferenceCounting/StrictPtr.hpp108
-rw-r--r--contrib/utility/Utility/ReferenceCounting/StrictPtr.tpp167
12 files changed, 0 insertions, 1073 deletions
diff --git a/contrib/utility/Utility/ReferenceCounting/DefaultImpl.hpp b/contrib/utility/Utility/ReferenceCounting/DefaultImpl.hpp
deleted file mode 100644
index 43160c09a03..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/DefaultImpl.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// file : Utility/ReferenceCounting/DefaultImpl.hpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-#ifndef UTILITY_REFERENCE_COUNTING_DEFAULT_IMPL_HPP
-#define UTILITY_REFERENCE_COUNTING_DEFAULT_IMPL_HPP
-
-#include "Utility/ExH/Compound.hpp"
-#include "Utility/ExH/Logic/DescriptiveException.hpp"
-
-#include "Utility/Synch/Policy/Null.hpp"
-
-#include "Utility/ReferenceCounting/Interface.hpp"
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- // Default reference counter implementation with parameterised
- // synchronization policy. It is assumed that none of the SynchPolicy
- // types throw any logic exceptions. If in fact they do then these
- // exceptions won't be handled and will be automatically converted
- // to system exceptions.
-
- template <typename SynchPolicy = Utility::Synch::Policy::Null>
- class DefaultImpl : public virtual Interface
- {
- public:
- class InconsistentState_ {};
- typedef
- ExH::Compound<InconsistentState_, Exception>
- InconsistentState;
-
- public:
- DefaultImpl () throw (SystemException);
-
- virtual
- ~DefaultImpl () throw ();
-
- public:
- virtual void
- add_ref () const throw (Exception, SystemException);
-
- virtual void
- remove_ref () const throw ();
-
- virtual count_t
- refcount_value () const throw (Exception, SystemException);
-
- protected:
- virtual void
- add_ref_i () const throw (Exception, SystemException);
-
- virtual bool
- remove_ref_i () const throw (Exception, SystemException);
-
- virtual count_t
- refcount_value_i () const throw (Exception, SystemException);
-
- typename SynchPolicy::Mutex&
- lock_i () const throw ();
-
- protected:
- typedef
- typename SynchPolicy::Mutex
- Mutex_;
-
- typedef
- typename SynchPolicy::ReadGuard
- ReadGuard_;
-
- typedef
- typename SynchPolicy::WriteGuard
- WriteGuard_;
-
- protected:
- mutable count_t ref_count_;
-
- private:
- mutable Mutex_ lock_;
-
- private:
- // Copy semanic is not supported.
- DefaultImpl (DefaultImpl const&) throw ();
- DefaultImpl&
- operator= (DefaultImpl const&) throw ();
- };
- }
-}
-
-#include "Utility/ReferenceCounting/DefaultImpl.ipp"
-
-#endif // UTILITY_REFERENCE_COUNTING_DEFAULT_IMPL_HPP
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/DefaultImpl.ipp b/contrib/utility/Utility/ReferenceCounting/DefaultImpl.ipp
deleted file mode 100644
index bac28c77ea2..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/DefaultImpl.ipp
+++ /dev/null
@@ -1,105 +0,0 @@
-// file : Utility/ReferenceCounting/DefaultImpl.ipp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- // c-tor & d-tor
-
- template <typename SynchPolicy>
- DefaultImpl<SynchPolicy>::
- DefaultImpl () throw (Interface::SystemException)
- : ref_count_ (1),
- lock_ ()
- {
- }
-
- template <typename SynchPolicy>
- DefaultImpl<SynchPolicy>::
- ~DefaultImpl () throw ()
- {
- }
-
- // add_ref, remove_ref and refcount_value member functions
-
- template <typename SynchPolicy>
- void DefaultImpl<SynchPolicy>::
- add_ref () const throw (Exception, SystemException)
- {
- WriteGuard_ guard (lock_);
- add_ref_i ();
- }
-
- template <typename SynchPolicy>
- void DefaultImpl<SynchPolicy>::
- remove_ref () const throw ()
- {
- bool destroy (false);
- try
- {
- WriteGuard_ guard (lock_);
- destroy = remove_ref_i ();
- }
- catch (...)
- {
- // there is nothing we can do
- }
-
- if (destroy) delete this;
- }
-
- template <typename SynchPolicy>
- Interface::count_t DefaultImpl<SynchPolicy>::
- refcount_value () const throw (Exception, SystemException)
- {
- ReadGuard_ guard (lock_);
- return refcount_value_i ();
- }
-
- // add_ref_i, remove_ref_i and refcount_value_i member functions
-
- template <typename SynchPolicy>
- void DefaultImpl<SynchPolicy>::
- add_ref_i () const throw (Exception, SystemException)
- {
- ref_count_++;
- }
-
- template <typename SynchPolicy>
- bool DefaultImpl<SynchPolicy>::
- remove_ref_i () const throw (Exception, SystemException)
- {
- bool destroy (false);
- if (ref_count_ > 0)
- {
- if (--ref_count_ == 0) destroy = true;
- }
- else
- {
- throw InconsistentState (
- "Utility::ReferenceCounting::DefaultImpl::_remove_ref_i: "
- "reference counter is zero.");
- }
- return destroy;
-
- }
-
- template <typename SynchPolicy>
- Interface::count_t DefaultImpl<SynchPolicy>::
- refcount_value_i () const throw (Exception, SystemException)
- {
- return ref_count_;
- }
-
- template <typename SynchPolicy>
- typename SynchPolicy::Mutex& DefaultImpl<SynchPolicy>::
- lock_i() const throw ()
- {
- return lock_;
- }
- }
-}
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.hpp b/contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.hpp
deleted file mode 100644
index 20346e859b3..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// file : Utility/ReferenceCounting/ExternalLockImpl.hpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-#ifndef UTILITY_REFERENCE_COUNTING_EXTERNAL_LOCK_IMPL_HPP
-#define UTILITY_REFERENCE_COUNTING_EXTERNAL_LOCK_IMPL_HPP
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
-
- /*
-
- Not ported yet.
-
- class ExternalLockRefCounter : public virtual Util::RefCountBase
- {
- public:
- ExternalLockRefCounter (ACE_Lock* lock = 0);
- virtual ~ExternalLockRefCounter ();
-
- void init (ACE_Lock* lock);
-
- public:
-
- virtual void _add_ref ();
- virtual void _remove_ref ();
- virtual unsigned long _refcount_value ();
-
- protected:
-
- virtual void _add_ref_i ();
- virtual bool _remove_ref_i ();
- virtual unsigned long _refcount_value_i ();
-
- ACE_Lock* lock_i ();
-
- private:
-
- typedef ACE_Guard <ACE_Lock> Guard_;
-
- ACE_Lock* lock_;
- unsigned long ref_count_;
-
- private:
- ExternalLockRefCounter (const ExternalLockRefCounter& );
- void operator= (const ExternalLockRefCounter& );
- };
-
- */
- }
-}
-
-#include "Utility/ReferenceCounting/ExternalLockImpl.ipp"
-
-#endif // UTILITY_REFERENCE_COUNTING_EXTERNAL_LOCK_IMPL_HPP
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.ipp b/contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.ipp
deleted file mode 100644
index 7552d411f27..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/ExternalLockImpl.ipp
+++ /dev/null
@@ -1,122 +0,0 @@
-// file : Utility/ReferenceCounting/ExternalLockImpl.ipp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- /*
- inline
- ExternalLockRefCounter::ExternalLockRefCounter (ACE_Lock* lock)
- : lock_ (lock),
- ref_count_ (1)
- {
- }
-
- inline
- void
- ExternalLockRefCounter::init (ACE_Lock* lock)
- {
- lock_ = lock;
- }
-
- inline
- ExternalLockRefCounter::~ExternalLockRefCounter ()
- {
- }
-
- inline
- ACE_Lock*
- ExternalLockRefCounter::lock_i ()
- {
- return lock_;
- }
-
- inline
- void
- ExternalLockRefCounter::_add_ref ()
- {
- if (lock_)
- {
- Guard_ guard (*lock_);
- _add_ref_i ();
- }
- else
- {
- _add_ref_i ();
- }
- }
-
- inline
- void
- ExternalLockRefCounter::_remove_ref ()
- {
- bool destroy = false;
- {
- if (lock_)
- {
- Guard_ guard (*lock_);
- destroy = _remove_ref_i ();
- }
- else
- {
- destroy = _remove_ref_i ();
- }
- }
- if (destroy) delete this;
- }
-
- inline
- unsigned long
- ExternalLockRefCounter::_refcount_value ()
- {
- if (lock_)
- {
- Guard_ guard (*lock_);
- return _refcount_value_i ();
- }
- else
- {
- return _refcount_value_i ();
- }
- }
-
- inline
- void
- ExternalLockRefCounter::_add_ref_i ()
- {
- ref_count_++;
- }
-
- inline
- bool
- ExternalLockRefCounter::_remove_ref_i ()
- {
- bool destroy = false;
- if (ref_count_ > 0)
- {
- if (--ref_count_ == 0) destroy = true;
- }
- else
- {
- ACE_ERROR ((LM_ERROR,
- "ExternalLockRefCounter::_remove_ref() "
- " _remove_ref() called while ref_coundt == 0\n"
- ));
- }
- return destroy;
- }
-
- inline
- unsigned long
- ExternalLockRefCounter::_refcount_value_i ()
- {
- return ref_count_;
- }
- */
- }
-}
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/Interface.hpp b/contrib/utility/Utility/ReferenceCounting/Interface.hpp
deleted file mode 100644
index 9231860b84a..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/Interface.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// file : Utility/ReferenceCounting/Interface.hpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-#ifndef UTILITY_REFERENCE_COUNTING_INTERFACE_HPP
-#define UTILITY_REFERENCE_COUNTING_INTERFACE_HPP
-
-#include "Utility/ExH/Compound.hpp"
-#include "Utility/ExH/System/Exception.hpp"
-#include "Utility/ExH/Logic/Exception.hpp"
-#include "Utility/ExH/Logic/DescriptiveException.hpp"
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- // Interface to a reference-countable object. Note that _remove_ref ()
- // member function has a no-throw semantic. Even though it can lead to
- // a diagnostic loss it was made no-throw because it has a destructor
- // semantic.
-
- class Interface
- {
- public:
- typedef
- unsigned long
- count_t;
-
- typedef
- ExH::System::Exception
- SystemException;
-
- class Exception_ {};
- typedef
- ExH::Compound<Exception_, ExH::Logic::DescriptiveException>
- Exception;
-
- public:
- virtual void
- add_ref () const throw (Exception, SystemException) = 0;
-
- virtual void
- remove_ref () const throw () = 0;
-
- virtual count_t
- refcount_value () const throw (Exception, SystemException) = 0;
-
- protected:
- Interface () throw ();
-
- virtual
- ~Interface () throw ();
-
- protected:
- virtual void
- add_ref_i () const throw (Exception, SystemException) = 0;
-
- virtual bool
- remove_ref_i () const throw (Exception, SystemException) = 0;
-
- virtual count_t
- refcount_value_i () const throw (Exception, SystemException) = 0;
-
- private:
- // Copy semanic is not supported.
- Interface (Interface const&) throw ();
- Interface&
- operator= (Interface const&) throw ();
- };
-
- template <typename Type>
- Type*
- add_ref (Type* ptr)
- throw (Interface::Exception, Interface::SystemException);
- }
-}
-
-#include "Utility/ReferenceCounting/Interface.tpp"
-#include "Utility/ReferenceCounting/Interface.ipp"
-
-#endif // UTILITY_REFERENCE_COUNTING_INTERFACE_HPP
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/Interface.ipp b/contrib/utility/Utility/ReferenceCounting/Interface.ipp
deleted file mode 100644
index f901db4b248..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/Interface.ipp
+++ /dev/null
@@ -1,22 +0,0 @@
-// file : Utility/ReferenceCounting/Interface.ipp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- inline Interface::
- ~Interface () throw ()
- {
- }
-
- inline Interface::
- Interface () throw ()
- {
- }
- }
-}
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/Interface.tpp b/contrib/utility/Utility/ReferenceCounting/Interface.tpp
deleted file mode 100644
index 6a6a1d2d263..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/Interface.tpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : Utility/ReferenceCounting/Interface.tpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- template <typename Type>
- inline Type*
- add_ref (Type* ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- if (ptr != 0) ptr->add_ref ();
- return ptr;
- }
- }
-}
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/ReferenceCounting.hpp b/contrib/utility/Utility/ReferenceCounting/ReferenceCounting.hpp
deleted file mode 100644
index a20fe0d888c..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/ReferenceCounting.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// file : Utility/ReferenceCounting/ReferenceCounting.hpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-#ifndef UTILITY_REFERENCE_COUNTING_REFERENCE_COUNTING_HPP
-#define UTILITY_REFERENCE_COUNTING_REFERENCE_COUNTING_HPP
-
-#include "Utility/ReferenceCounting/Interface.hpp"
-#include "Utility/ReferenceCounting/DefaultImpl.hpp"
-#include "Utility/ReferenceCounting/SmartPtr.hpp"
-#include "Utility/ReferenceCounting/StrictPtr.hpp"
-
-#endif // UTILITY_REFERENCE_COUNTING_REFERENCE_COUNTING_HPP
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/SmartPtr.hpp b/contrib/utility/Utility/ReferenceCounting/SmartPtr.hpp
deleted file mode 100644
index 682f0678ee1..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/SmartPtr.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// file : Utility/ReferenceCounting/SmartPtr.hpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-#ifndef UTILITY_REFERENCE_COUNTING_SMART_PTR_HPP
-#define UTILITY_REFERENCE_COUNTING_SMART_PTR_HPP
-
-#include "Utility/ExH/Compound.hpp"
-#include "Utility/ExH/Logic/DescriptiveException.hpp"
-
-#include "Utility/ReferenceCounting/Interface.hpp"
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- template <typename T>
- class SmartPtr
- {
- public:
- typedef
- T
- Type;
-
- class NotInitialized_ {};
- typedef
- ExH::Compound<NotInitialized_, ExH::Logic::DescriptiveException>
- NotInitialized;
-
- public:
- // c-tor's
-
- SmartPtr () throw ();
- SmartPtr (Type* ptr) throw ();
- SmartPtr (SmartPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- template <typename Other>
- SmartPtr (SmartPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- // d-tor
-
- ~SmartPtr () throw ();
-
- // assignment & copy-assignment operators
-
- SmartPtr<Type>&
- operator= (Type* ptr) throw ();
-
- SmartPtr<Type>&
- operator= (SmartPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- template <typename Other>
- SmartPtr<Type>&
- operator= (SmartPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- //conversions
-
- operator Type* () const throw ();
-
- // accessors
-
- Type*
- operator-> () const throw (NotInitialized);
-
- Type*
- in () const throw ();
-
- Type*
- retn() throw ();
-
- private:
- Type* ptr_;
- };
-
- // Specialization of add_ref function for SmartPtr<T>
- template <typename T>
- T*
- add_ref (SmartPtr<T> const& ptr)
- throw (Interface::Exception, Interface::SystemException);
-
-
- // Dynamic type conversion function for SmartPtr's
- template <typename D, typename S>
- D*
- smart_cast (SmartPtr<S> const& s)
- throw (Interface::Exception, Interface::SystemException);
-
- // Acquisition function
- template <typename T>
- SmartPtr<T>
- acquire (T* ptr) throw (Interface::Exception, Interface::SystemException);
- }
-}
-
-#include "Utility/ReferenceCounting/SmartPtr.tpp"
-
-#endif // UTILITY_REFERENCE_COUNTING_SMART_PTR_HPP
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/SmartPtr.tpp b/contrib/utility/Utility/ReferenceCounting/SmartPtr.tpp
deleted file mode 100644
index 6596c67f1b1..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/SmartPtr.tpp
+++ /dev/null
@@ -1,170 +0,0 @@
-// file : Utility/ReferenceCounting/SmartPtr.tpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- // c-tor's & d-tor
-
- template <typename T>
- SmartPtr<T>::
- SmartPtr () throw ()
- : ptr_ (0)
- {
- }
-
- template <typename T>
- SmartPtr<T>::
- SmartPtr (Type* ptr) throw ()
- : ptr_ (ptr)
- {
- }
-
- template <typename T>
- SmartPtr<T>::
- SmartPtr (SmartPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- : ptr_ (add_ref (s_ptr.in ()))
- {
- }
-
- template <typename T>
- template <typename Other>
- SmartPtr<T>::
- SmartPtr (SmartPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- : ptr_ (add_ref (s_ptr.in ()))
- {
- }
-
-
- template <typename T>
- SmartPtr<T>::
- ~SmartPtr () throw ()
- {
- // This is an additional catch-all layer to protect from
- // non-conformant Type.
- try
- {
- if (ptr_ != 0) ptr_->remove_ref ();
- }
- catch (...)
- {
- }
- }
-
- // operator=
-
- template <typename T>
- SmartPtr<T>& SmartPtr<T>::
- operator= (Type* ptr) throw ()
- {
- if (ptr_ != 0) ptr_->remove_ref ();
- ptr_ = ptr;
- return *this;
- }
-
-
- template <typename T>
- SmartPtr<T>& SmartPtr<T>::
- operator= (SmartPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- Type* old_ptr (ptr_);
- Type* new_ptr (add_ref (s_ptr.in ())); // this can throw
- if (old_ptr != 0) old_ptr->remove_ref ();
-
- ptr_ = new_ptr; // commit
-
- return *this;
- }
-
-
- template <typename T>
- template <typename Other>
- SmartPtr<T>& SmartPtr<T>::
- operator= (SmartPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- Type* old_ptr (ptr_);
- Other* new_ptr (add_ref (s_ptr.in ())); // this can throw
- if (old_ptr != 0) old_ptr->remove_ref ();
-
- ptr_ = new_ptr; // commit
-
- return *this;
- }
-
- // conversions
-
- template <typename T>
- SmartPtr<T>::
- operator T* () const throw ()
- {
- return ptr_;
- }
-
-
- // accessors
-
- template <typename T>
- T* SmartPtr<T>::
- operator-> () const throw (NotInitialized)
- {
- if (ptr_ == 0)
- {
- throw NotInitialized(
- "Utility::ReferenceCounting::SmartPtr::operator-> : "
- "unable to dereference NULL pointer.");
- }
- return ptr_;
- }
-
- template <typename T>
- T* SmartPtr<T>::
- in () const throw ()
- {
- return ptr_;
- }
-
- template <typename T>
- T* SmartPtr<T>::
- retn() throw ()
- {
- Type* ret (ptr_);
- ptr_ = 0;
- return ret;
- }
-
- // Specialization of add_ref function for SmartPtr<T>
- template <typename T>
- T*
- add_ref (SmartPtr<T> const& ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- // delegate to generic implementation
- return add_ref (ptr.in ());
- }
-
- // Dynamic type conversion function for SmartPtr's
- template <typename D, typename S>
- D*
- smart_cast (SmartPtr<S> const& s)
- throw (Interface::Exception, Interface::SystemException)
- {
- return add_ref (dynamic_cast<D*>(s.in ()));
- }
-
- // Acquisition function
- template <typename T>
- SmartPtr<T>
- acquire (T* ptr) throw (Interface::Exception, Interface::SystemException)
- {
- return SmartPtr<T> (ptr);
- }
- }
-}
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/StrictPtr.hpp b/contrib/utility/Utility/ReferenceCounting/StrictPtr.hpp
deleted file mode 100644
index c88c90d5e50..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/StrictPtr.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-// file : Utility/ReferenceCounting/StrictPtr.hpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-#ifndef UTILITY_REFERENCE_COUNTING_STRICT_PTR_HPP
-#define UTILITY_REFERENCE_COUNTING_STRICT_PTR_HPP
-
-#include "Utility/ExH/Compound.hpp"
-#include "Utility/ExH/Logic/DescriptiveException.hpp"
-
-#include "Utility/ReferenceCounting/Interface.hpp"
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- template <typename T>
- class StrictPtr
- {
- public:
- typedef
- T
- Type;
-
- class NotInitialized_ {};
- typedef
- ExH::Compound<NotInitialized_, ExH::Logic::DescriptiveException>
- NotInitialized;
-
- public:
- // c-tor's
-
- StrictPtr () throw ();
-
- explicit
- StrictPtr (Type* ptr) throw ();
-
- StrictPtr (StrictPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- template <typename Other>
- StrictPtr (StrictPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
- // d-tor
-
- ~StrictPtr () throw ();
-
- // assignment & copy-assignment operators
-
- StrictPtr<Type>&
- operator= (Type* ptr) throw ();
-
- StrictPtr<Type>&
- operator= (StrictPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- template <typename Other>
- StrictPtr<Type>&
- operator= (StrictPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- // conversions
-
- // Note: implicit conversion (operator Type* ()) is not supported.
-
- // comparison
-
- bool
- operator== (Type* other) const throw ();
-
- bool
- operator!= (Type* other) const throw ();
-
- // accessors
-
- Type*
- operator-> () const throw (NotInitialized);
-
- Type*
- in () const throw ();
-
- Type*
- retn() throw ();
-
- private:
- Type* ptr_;
- };
-
- // Specialization of add_ref function for StrictPtr<T>
- template <typename T>
- T*
- add_ref (StrictPtr<T> const& ptr)
- throw (Interface::Exception, Interface::SystemException);
-
- // Dynamic type conversion function for StrictPtr's
- template <typename D, typename S>
- StrictPtr<D>
- strict_cast (StrictPtr<S> const& s)
- throw (Interface::Exception, Interface::SystemException);
- }
-}
-
-#include "Utility/ReferenceCounting/StrictPtr.tpp"
-
-#endif // UTILITY_REFERENCE_COUNTING_STRICT_PTR_HPP
-
-//$Id$
diff --git a/contrib/utility/Utility/ReferenceCounting/StrictPtr.tpp b/contrib/utility/Utility/ReferenceCounting/StrictPtr.tpp
deleted file mode 100644
index 6a30188119c..00000000000
--- a/contrib/utility/Utility/ReferenceCounting/StrictPtr.tpp
+++ /dev/null
@@ -1,167 +0,0 @@
-// file : Utility/ReferenceCounting/StrictPtr.tpp
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2002-2003 Boris Kolpackov
-// license : http://kolpackov.net/license.html
-
-namespace Utility
-{
- namespace ReferenceCounting
- {
- // c-tor's & d-tor
-
- template <typename T>
- StrictPtr<T>::
- StrictPtr () throw ()
- : ptr_ (0)
- {
- }
-
- template <typename T>
- StrictPtr<T>::
- StrictPtr (Type* ptr) throw ()
- : ptr_ (ptr)
- {
- }
-
- template <typename T>
- StrictPtr<T>::
- StrictPtr (StrictPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- : ptr_ (add_ref (s_ptr.in ()))
- {
- }
-
- template <typename T>
- template <typename Other>
- StrictPtr<T>::
- StrictPtr (StrictPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- : ptr_ (add_ref (s_ptr.in ()))
- {
- }
-
-
- template <typename T>
- StrictPtr<T>::
- ~StrictPtr () throw ()
- {
- // This is an additional catch-all layer to protect from
- // non-conformant Type.
- try
- {
- if (ptr_ != 0) ptr_->remove_ref ();
- }
- catch (...)
- {
- }
- }
-
- // operator=
-
- template <typename T>
- StrictPtr<T>&
- StrictPtr<T>::operator= (Type* ptr) throw ()
- {
- if (ptr_ != 0) ptr_->remove_ref ();
- ptr_ = ptr;
- return *this;
- }
-
- template <typename T>
- StrictPtr<T>& StrictPtr<T>::
- operator= (StrictPtr<Type> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- Type* old_ptr (ptr_);
- Type* new_ptr (add_ref (s_ptr.in ())); // this can throw
- if (old_ptr != 0) old_ptr->remove_ref ();
-
- ptr_ = new_ptr; // commit
-
- return *this;
- }
-
-
- template <typename T>
- template <typename Other>
- StrictPtr<T>& StrictPtr<T>::
- operator= (StrictPtr<Other> const& s_ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- Type* old_ptr (ptr_);
- Other* new_ptr (add_ref (s_ptr.in ())); // this can throw
- if (old_ptr != 0) old_ptr->remove_ref ();
-
- ptr_ = new_ptr; // commit
-
- return *this;
- }
-
- // comparison
-
- template <typename T>
- bool StrictPtr<T>::
- operator== (Type* other) const throw ()
- {
- return ptr_ == other;
- }
-
- template <typename T>
- bool StrictPtr<T>::
- operator!= (Type* other) const throw ()
- {
- return ptr_ != other;
- }
-
- // accessors
-
- template <typename T>
- T* StrictPtr<T>::
- operator-> () const throw (NotInitialized)
- {
- if (ptr_ == 0)
- {
- throw NotInitialized(
- "Utility::ReferenceCounting::StrictPtr::operator-> : "
- "unable to dereference NULL pointer.");
- }
- return ptr_;
- }
-
- template <typename T>
- T* StrictPtr<T>::
- in () const throw ()
- {
- return ptr_;
- }
-
- template <typename T>
- T* StrictPtr<T>::
- retn() throw ()
- {
- Type* ret (ptr_);
- ptr_ = 0;
- return ret;
- }
-
- // Specialization of add_ref function for StrictPtr<T>
- template <typename T>
- T*
- add_ref (StrictPtr<T> const& ptr)
- throw (Interface::Exception, Interface::SystemException)
- {
- // delegate to generic implementation
- return add_ref (ptr.in ());
- }
-
- // Dynamic type conversion function for StrictPtr's
- template <typename D, typename S>
- StrictPtr<D>
- strict_cast (StrictPtr<S> const& s)
- throw (Interface::Exception, Interface::SystemException)
- {
- return StrictPtr<D>(add_ref (dynamic_cast<D*>(s.in ())));
- }
- }
-}
-//$Id$