diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
commit | 2d37894b1b037cf24231090eda8589bbb44fb6fc (patch) | |
tree | be835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h | |
parent | 718c552901d703c502ccbefdfc3c9028d608b947 (diff) | |
download | ydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h | 154 |
1 files changed, 77 insertions, 77 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h b/contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h index 828fa07745..8735f114b5 100644 --- a/contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h +++ b/contrib/libs/poco/Foundation/include/Poco/SingletonHolder.h @@ -1,77 +1,77 @@ -// -// SingletonHolder.h -// -// Library: Foundation -// Package: Core -// Module: SingletonHolder -// -// Definition of the SingletonHolder template. -// -// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_SingletonHolder_INCLUDED -#define Foundation_SingletonHolder_INCLUDED - - -#include "Poco/Foundation.h" -#include "Poco/Mutex.h" - - -namespace Poco { - - -template <class S> -class SingletonHolder - /// This is a helper template class for managing - /// singleton objects allocated on the heap. - /// The class ensures proper deletion (including - /// calling of the destructor) of singleton objects - /// when the application that created them terminates. -{ -public: - SingletonHolder(): - _pS(0) - /// Creates the SingletonHolder. - { - } - - ~SingletonHolder() - /// Destroys the SingletonHolder and the singleton - /// object that it holds. - { - delete _pS; - } - - S* get() - /// Returns a pointer to the singleton object - /// hold by the SingletonHolder. The first call - /// to get will create the singleton. - { - FastMutex::ScopedLock lock(_m); - if (!_pS) _pS = new S; - return _pS; - } - - void reset() - /// Deletes the singleton object. - { - FastMutex::ScopedLock lock(_m); - delete _pS; - _pS = 0; - } - -private: - S* _pS; - FastMutex _m; -}; - - -} // namespace Poco - - -#endif // Foundation_SingletonHolder_INCLUDED +// +// SingletonHolder.h +// +// Library: Foundation +// Package: Core +// Module: SingletonHolder +// +// Definition of the SingletonHolder template. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_SingletonHolder_INCLUDED +#define Foundation_SingletonHolder_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Mutex.h" + + +namespace Poco { + + +template <class S> +class SingletonHolder + /// This is a helper template class for managing + /// singleton objects allocated on the heap. + /// The class ensures proper deletion (including + /// calling of the destructor) of singleton objects + /// when the application that created them terminates. +{ +public: + SingletonHolder(): + _pS(0) + /// Creates the SingletonHolder. + { + } + + ~SingletonHolder() + /// Destroys the SingletonHolder and the singleton + /// object that it holds. + { + delete _pS; + } + + S* get() + /// Returns a pointer to the singleton object + /// hold by the SingletonHolder. The first call + /// to get will create the singleton. + { + FastMutex::ScopedLock lock(_m); + if (!_pS) _pS = new S; + return _pS; + } + + void reset() + /// Deletes the singleton object. + { + FastMutex::ScopedLock lock(_m); + delete _pS; + _pS = 0; + } + +private: + S* _pS; + FastMutex _m; +}; + + +} // namespace Poco + + +#endif // Foundation_SingletonHolder_INCLUDED |