diff options
author | Kargatum <dowlandtop@yandex.com> | 2021-07-16 20:49:44 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-16 15:49:44 +0200 |
commit | 6e082e351393ab56993025e5cf0e12557e81fdf3 (patch) | |
tree | ab39913e771d12ab31d8cdecc51b116c5ef35898 /deps/acelite/ace/Singleton.cpp | |
parent | 96c51317f57ac038fd135ac6032592f9bc188d5a (diff) |
feat(Deps/ACE): remove ACE library (part 2/2) (#5679)
Diffstat (limited to 'deps/acelite/ace/Singleton.cpp')
-rw-r--r-- | deps/acelite/ace/Singleton.cpp | 587 |
1 files changed, 0 insertions, 587 deletions
diff --git a/deps/acelite/ace/Singleton.cpp b/deps/acelite/ace/Singleton.cpp deleted file mode 100644 index 52ca2b53d3..0000000000 --- a/deps/acelite/ace/Singleton.cpp +++ /dev/null @@ -1,587 +0,0 @@ -#ifndef ACE_SINGLETON_CPP -#define ACE_SINGLETON_CPP - -#include "ace/Singleton.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#if !defined (__ACE_INLINE__) -#include "ace/Singleton.inl" -#endif /* __ACE_INLINE__ */ - -#include "ace/Object_Manager.h" -#include "ace/Log_Category.h" -#include "ace/Framework_Component.h" -#include "ace/Guard_T.h" -#include "ace/os_include/os_typeinfo.h" - -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -ACE_ALLOC_HOOK_DEFINE_Tcc(ACE_Singleton) -ACE_ALLOC_HOOK_DEFINE_Tcc(ACE_Unmanaged_Singleton) -ACE_ALLOC_HOOK_DEFINE_Tcc(ACE_TSS_Singleton) -ACE_ALLOC_HOOK_DEFINE_Tcc(ACE_Unmanaged_TSS_Singleton) -ACE_ALLOC_HOOK_DEFINE_Tcc(ACE_DLL_Singleton_T) -ACE_ALLOC_HOOK_DEFINE_Tc(ACE_DLL_Singleton_Adapter_T) - -template <class TYPE, class ACE_LOCK> void -ACE_Singleton<TYPE, ACE_LOCK>::dump (void) -{ -#if defined (ACE_HAS_DUMP) - ACE_TRACE ("ACE_Singleton<TYPE, ACE_LOCK>::dump"); - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("instance_ = %x"), - ACE_Singleton<TYPE, ACE_LOCK>::instance_i ())); - ACELIB_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -#endif /* ACE_HAS_DUMP */ -} - -template <class TYPE, class ACE_LOCK> ACE_Singleton<TYPE, ACE_LOCK> *& -ACE_Singleton<TYPE, ACE_LOCK>::instance_i (void) -{ -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - // Pointer to the Singleton instance. This works around a bug with - // G++ and it's (mis-)handling of templates and statics... - static ACE_Singleton<TYPE, ACE_LOCK> *singleton_ = 0; - - return singleton_; -#else - return ACE_Singleton<TYPE, ACE_LOCK>::singleton_; -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -} - -template <class TYPE, class ACE_LOCK> TYPE * -ACE_Singleton<TYPE, ACE_LOCK>::instance (void) -{ - ACE_TRACE ("ACE_Singleton<TYPE, ACE_LOCK>::instance"); - - ACE_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_Singleton<TYPE, ACE_LOCK>::instance_i (); - - // Perform the Double-Check pattern... - if (singleton == 0) - { - if (ACE_Object_Manager::starting_up () || - ACE_Object_Manager::shutting_down ()) - { - // The program is still starting up, and therefore assumed - // to be single threaded. There's no need to double-check. - // Or, the ACE_Object_Manager instance has been destroyed, - // so the preallocated lock is not available. Either way, - // don't register for destruction with the - // ACE_Object_Manager: we'll have to leak this instance. - - ACE_NEW_RETURN (singleton, (ACE_Singleton<TYPE, ACE_LOCK>), 0); - } - else - { -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - // Obtain a lock from the ACE_Object_Manager. The pointer - // is static, so we only obtain one per ACE_Singleton - // instantiation. -#if defined(ACE_FACE_SAFETY_BASE) - static ACE_LOCK the_lock; - static ACE_LOCK *lock = &the_lock; -#else /* ACE_FACE_SAFETY_BASE */ - static ACE_LOCK *lock = 0; -#endif /* ACE_FACE_SAFETY_BASE */ - if (ACE_Object_Manager::get_singleton_lock (lock) != 0) - // Failed to acquire the lock! - return 0; - - ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0); - - if (singleton == 0) - { -#endif /* ACE_MT_SAFE */ - ACE_NEW_RETURN (singleton, (ACE_Singleton<TYPE, ACE_LOCK>), 0); - - // Register for destruction with ACE_Object_Manager. -#if !defined (ACE_MT_SAFE) || (ACE_MT_SAFE == 0) - ACE_Object_Manager::at_exit (singleton, 0, typeid (TYPE).name ()); -#else - ACE_Object_Manager::at_exit (singleton, &lock, - typeid (TYPE).name ()); - } -#endif /* ACE_MT_SAFE */ - } - } - - return &singleton->instance_; -} - -template <class TYPE, class ACE_LOCK> void -ACE_Singleton<TYPE, ACE_LOCK>::cleanup (void *param) -{ - ACE_Object_Manager::remove_at_exit (this); - delete this; - ACE_Singleton<TYPE, ACE_LOCK>::instance_i () = 0; - -#if !defined ACE_MT_SAFE || ACE_MT_SAFE == 0 || defined ACE_FACE_SAFETY_BASE - ACE_UNUSED_ARG (param); -#else - if (param) - { - ACE_LOCK **lock = static_cast<ACE_LOCK **> (param); - *lock = 0; - } -#endif -} - -template <class TYPE, class ACE_LOCK> void -ACE_Singleton<TYPE, ACE_LOCK>::close (void) -{ - ACE_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_Singleton<TYPE, ACE_LOCK>::instance_i (); - - if (singleton) - { - singleton->cleanup (); - ACE_Singleton<TYPE, ACE_LOCK>::instance_i () = 0; - } -} - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) -// Pointer to the Singleton instance. -template <class TYPE, class ACE_LOCK> ACE_Singleton<TYPE, ACE_LOCK> * -ACE_Singleton<TYPE, ACE_LOCK>::singleton_ = 0; - -template <class TYPE, class ACE_LOCK> ACE_Unmanaged_Singleton<TYPE, ACE_LOCK> * -ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::singleton_ = 0; -#endif /* !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */ - -template <class TYPE, class ACE_LOCK> void -ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::dump (void) -{ -#if defined (ACE_HAS_DUMP) - ACE_TRACE ("ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::dump"); - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("instance_ = %x"), - ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance_i ())); - ACELIB_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -#endif /* ACE_HAS_DUMP */ -} - -template <class TYPE, class ACE_LOCK> -ACE_Unmanaged_Singleton<TYPE, ACE_LOCK> *& -ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance_i (void) -{ -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - // Pointer to the Singleton instance. This works around a bug with - // G++ and it's (mis-)handling of templates and statics... - static ACE_Unmanaged_Singleton<TYPE, ACE_LOCK> *singleton_ = 0; - - return singleton_; -#else - return ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::singleton_; -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -} - -template <class TYPE, class ACE_LOCK> TYPE * -ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance (void) -{ - ACE_TRACE ("ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance"); - - ACE_Unmanaged_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance_i (); - - // Perform the Double-Check pattern... - if (singleton == 0) - { - if (ACE_Object_Manager::starting_up () || - ACE_Object_Manager::shutting_down ()) - { - // The program is still starting up, and therefore assumed - // to be single threaded. There's no need to double-check. - // Or, the ACE_Object_Manager instance has been destroyed, - // so the preallocated lock is not available. Either way, - // don't register for destruction with the - // ACE_Object_Manager: we'll have to leak this instance. - - ACE_NEW_RETURN (singleton, (ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>), - 0); - } - else - { -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - // Obtain a lock from the ACE_Object_Manager. The pointer - // is static, so we only obtain one per - // ACE_Unmanaged_Singleton instantiation. -#if defined(ACE_FACE_SAFETY_BASE) - static ACE_LOCK the_lock; - static ACE_LOCK *lock = &the_lock; -#else /* ACE_FACE_SAFETY_BASE */ - static ACE_LOCK *lock = 0; -#endif /* ACE_FACE_SAFETY_BASE */ - if (ACE_Object_Manager::get_singleton_lock (lock) != 0) - // Failed to acquire the lock! - return 0; - - ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0); -#endif /* ACE_MT_SAFE */ - - if (singleton == 0) - ACE_NEW_RETURN (singleton, - (ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>), - 0); - } - } - - return &singleton->instance_; -} - -template <class TYPE, class ACE_LOCK> void -ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::close (void) -{ - ACE_Unmanaged_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance_i (); - - if (singleton) - { - singleton->cleanup (); - ACE_Unmanaged_Singleton<TYPE, ACE_LOCK>::instance_i () = 0; - } -} - -template <class TYPE, class ACE_LOCK> void -ACE_TSS_Singleton<TYPE, ACE_LOCK>::dump (void) -{ -#if defined (ACE_HAS_DUMP) - ACE_TRACE ("ACE_TSS_Singleton<TYPE, ACE_LOCK>::dump"); - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("instance_ = %x"), - ACE_TSS_Singleton<TYPE, ACE_LOCK>::instance_i ())); - ACELIB_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -#endif /* ACE_HAS_DUMP */ -} - -template <class TYPE, class ACE_LOCK> ACE_TSS_Singleton<TYPE, ACE_LOCK> *& -ACE_TSS_Singleton<TYPE, ACE_LOCK>::instance_i (void) -{ -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - // Pointer to the Singleton instance. This works around a bug with - // G++ and it's (mis-)handling of templates and statics... - static ACE_TSS_Singleton<TYPE, ACE_LOCK> *singleton_ = 0; - - return singleton_; -#else - return ACE_TSS_Singleton<TYPE, ACE_LOCK>::singleton_; -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -} - -template <class TYPE, class ACE_LOCK> TYPE * -ACE_TSS_Singleton<TYPE, ACE_LOCK>::instance (void) -{ - ACE_TRACE ("ACE_TSS_Singleton<TYPE, ACE_LOCK>::instance"); - - ACE_TSS_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_TSS_Singleton<TYPE, ACE_LOCK>::instance_i (); - - // Perform the Double-Check pattern... - if (singleton == 0) - { - if (ACE_Object_Manager::starting_up () || - ACE_Object_Manager::shutting_down ()) - { - // The program is still starting up, and therefore assumed - // to be single threaded. There's no need to double-check. - // Or, the ACE_Object_Manager instance has been destroyed, - // so the preallocated lock is not available. Either way, - // don't register for destruction with the - // ACE_Object_Manager: we'll have to leak this instance. - - ACE_NEW_RETURN (singleton, (ACE_TSS_Singleton<TYPE, ACE_LOCK>), 0); - } - else - { -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - - // Obtain a lock from the ACE_Object_Manager. The pointer - // is static, so we only obtain one per ACE_Singleton instantiation. -#if defined(ACE_FACE_SAFETY_BASE) - static ACE_LOCK the_lock; - static ACE_LOCK *lock = &the_lock; -#else /* ACE_FACE_SAFETY_BASE */ - static ACE_LOCK *lock = 0; -#endif /* ACE_FACE_SAFETY_BASE */ - if (ACE_Object_Manager::get_singleton_lock (lock) != 0) - // Failed to acquire the lock! - return 0; - - ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0); - - if (singleton == 0) - { -#endif /* ACE_MT_SAFE */ - ACE_NEW_RETURN (singleton, (ACE_TSS_Singleton<TYPE, ACE_LOCK>), - 0); - - // Register for destruction with ACE_Object_Manager. - ACE_Object_Manager::at_exit (singleton, 0, typeid (TYPE).name ()); -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - } -#endif /* ACE_MT_SAFE */ - } - } - - return ACE_TSS_GET (&singleton->instance_, TYPE); -} - -template <class TYPE, class ACE_LOCK> void -ACE_TSS_Singleton<TYPE, ACE_LOCK>::cleanup (void *) -{ - delete this; - ACE_TSS_Singleton<TYPE, ACE_LOCK>::instance_i () = 0; -} - -template <class TYPE, class ACE_LOCK> void -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::dump (void) -{ -#if defined (ACE_HAS_DUMP) - ACE_TRACE ("ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::dump"); - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("instance_ = %x"), - ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::instance_i ())); - ACELIB_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -#endif /* ACE_HAS_DUMP */ -} - -template <class TYPE, class ACE_LOCK> -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK> *& -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::instance_i (void) -{ -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - // Pointer to the Singleton instance. This works around a bug with - // G++ and it's (mis-)handling of templates and statics... - static ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK> *singleton_ = 0; - - return singleton_; -#else - return ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::singleton_; -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -} - -template <class TYPE, class ACE_LOCK> TYPE * -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::instance (void) -{ - ACE_TRACE ("ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::instance"); - - ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::instance_i (); - - // Perform the Double-Check pattern... - if (singleton == 0) - { - if (ACE_Object_Manager::starting_up () || - ACE_Object_Manager::shutting_down ()) - { - // The program is still starting up, and therefore assumed - // to be single threaded. There's no need to double-check. - // Or, the ACE_Object_Manager instance has been destroyed, - // so the preallocated lock is not available. Either way, - // don't register for destruction with the - // ACE_Object_Manager: we'll have to leak this instance. - - ACE_NEW_RETURN (singleton, - (ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>), - 0); - } - else - { -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - // Obtain a lock from the ACE_Object_Manager. The pointer - // is static, so we only obtain one per - // ACE_Unmanaged_Singleton instantiation. -#if defined(ACE_FACE_SAFETY_BASE) - static ACE_LOCK the_lock; - static ACE_LOCK *lock = &the_lock; -#else /* ACE_FACE_SAFETY_BASE */ - static ACE_LOCK *lock = 0; -#endif /* ACE_FACE_SAFETY_BASE */ - if (ACE_Object_Manager::get_singleton_lock (lock) != 0) - // Failed to acquire the lock! - return 0; - - ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0); -#endif /* ACE_MT_SAFE */ - - if (singleton == 0) - ACE_NEW_RETURN (singleton, - (ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>), - 0); - } - } - - return ACE_TSS_GET (&singleton->instance_, TYPE); -} - -template <class TYPE, class ACE_LOCK> void -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::close (void) -{ - ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK> *&singleton = - ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::instance_i (); - - if (singleton) - singleton->cleanup (); -} - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) -// Pointer to the Singleton instance. -template <class TYPE, class ACE_LOCK> ACE_TSS_Singleton <TYPE, ACE_LOCK> * -ACE_TSS_Singleton<TYPE, ACE_LOCK>::singleton_ = 0; - -template <class TYPE, class ACE_LOCK> -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK> * -ACE_Unmanaged_TSS_Singleton<TYPE, ACE_LOCK>::singleton_ = 0; -#endif /* !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */ - -/*************************************************************************/ - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) -// Pointer to the Singleton instance. -template <class TYPE, class ACE_LOCK> ACE_DLL_Singleton_T<TYPE, ACE_LOCK> * -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::singleton_ = 0; -#endif /* !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) */ - -template <class TYPE, class ACE_LOCK> void -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::dump (void) -{ -#if defined (ACE_HAS_DUMP) - ACE_TRACE ("ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::dump"); - -#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - ACELIB_DEBUG ((LM_DEBUG, ACE_TEXT ("instance_ = %x"), - ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance_i ())); - ACELIB_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -#endif /* ACE_HAS_DUMP */ -} - -template <class TYPE, class ACE_LOCK> -ACE_DLL_Singleton_T<TYPE, ACE_LOCK> *& -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance_i (void) -{ - ACE_TRACE ("ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance_i"); - -#if defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES) - // Pointer to the Singleton instance. This works around a bug with - // G++ and it's (mis-)handling of templates and statics... - static ACE_DLL_Singleton_T<TYPE, ACE_LOCK> *singleton_ = 0; - - return singleton_; -#else - return ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::singleton_; -#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */ -} - -template <class TYPE, class ACE_LOCK> TYPE * -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance (void) -{ - ACE_TRACE ("ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance"); - - ACE_DLL_Singleton_T<TYPE, ACE_LOCK> *&singleton = - ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance_i (); - - // Perform the Double-Check pattern... - if (singleton == 0) - { - if (ACE_Object_Manager::starting_up () || - ACE_Object_Manager::shutting_down ()) - { - // The program is still starting up, and therefore assumed - // to be single threaded. There's no need to double-check. - // Or, the ACE_Object_Manager instance has been destroyed, - // so the preallocated lock is not available. Either way, - // don't register for destruction with the - // ACE_Object_Manager: we'll have to leak this instance. - - ACE_NEW_RETURN (singleton, (ACE_DLL_Singleton_T<TYPE, ACE_LOCK>), - 0); - } - else - { -#if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) - // Obtain a lock from the ACE_Object_Manager. The pointer - // is static, so we only obtain one per - // ACE_Unmanaged_Singleton instantiation. -#if defined(ACE_FACE_SAFETY_BASE) - static ACE_LOCK the_lock; - static ACE_LOCK *lock = &the_lock; -#else /* ACE_FACE_SAFETY_BASE */ - static ACE_LOCK *lock = 0; -#endif /* ACE_FACE_SAFETY_BASE */ - if (ACE_Object_Manager::get_singleton_lock (lock) != 0) - // Failed to acquire the lock! - return 0; - - ACE_GUARD_RETURN (ACE_LOCK, ace_mon, *lock, 0); -#endif /* ACE_MT_SAFE */ - - if (singleton == 0) - ACE_NEW_RETURN (singleton, - (ACE_DLL_Singleton_T<TYPE, ACE_LOCK>), - 0); - } - //ACE_REGISTER_FRAMEWORK_COMPONENT(ACE_DLL_Singleton<TYPE,ACE_LOCK>, singleton); - ACE_Framework_Repository::instance ()->register_component - (new ACE_Framework_Component_T<ACE_DLL_Singleton_T<TYPE, ACE_LOCK> > (singleton)); - } - - return &singleton->instance_; -} - -template <class TYPE, class ACE_LOCK> void -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::close (void) -{ - ACE_TRACE ("ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::close"); - - ACE_DLL_Singleton_T<TYPE, ACE_LOCK> *&singleton = - ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::instance_i (); - - delete singleton; - singleton = 0; -} - -template <class TYPE, class ACE_LOCK> void -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::close_singleton (void) -{ - ACE_TRACE ("ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::close_singleton"); - ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::close (); -} - -template <class TYPE, class ACE_LOCK> const ACE_TCHAR * -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::dll_name (void) -{ - return this->instance ()->dll_name (); -} - -template <class TYPE, class ACE_LOCK> const ACE_TCHAR * -ACE_DLL_Singleton_T<TYPE, ACE_LOCK>::name (void) -{ - return this->instance ()->name (); -} - - -/**********************************************************************/ - -template <class TYPE> const ACE_TCHAR* -ACE_DLL_Singleton_Adapter_T<TYPE>::dll_name (void) -{ - // @todo make this a constant somewhere (or it there already is one - // then use it. - return ACE_TEXT("ACE"); -} - -ACE_END_VERSIONED_NAMESPACE_DECL - -#endif /* ACE_SINGLETON_CPP */ |