diff options
Diffstat (limited to 'src/third_party/boost-1.60.0/boost/thread/detail/singleton.hpp')
-rw-r--r-- | src/third_party/boost-1.60.0/boost/thread/detail/singleton.hpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/third_party/boost-1.60.0/boost/thread/detail/singleton.hpp b/src/third_party/boost-1.60.0/boost/thread/detail/singleton.hpp new file mode 100644 index 00000000000..a20a42908d2 --- /dev/null +++ b/src/third_party/boost-1.60.0/boost/thread/detail/singleton.hpp @@ -0,0 +1,59 @@ +// Copyright (C) 2001-2003 +// Mac Murrett +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org for most recent version including documentation. + +#ifndef BOOST_SINGLETON_MJM012402_HPP +#define BOOST_SINGLETON_MJM012402_HPP + +#include <boost/thread/detail/config.hpp> + +namespace boost { +namespace detail { +namespace thread { + +// class singleton has the same goal as all singletons: create one instance of +// a class on demand, then dish it out as requested. + +template <class T> +class singleton : private T +{ +private: + singleton(); + ~singleton(); + +public: + static T &instance(); +}; + + +template <class T> +inline singleton<T>::singleton() +{ + /* no-op */ +} + +template <class T> +inline singleton<T>::~singleton() +{ + /* no-op */ +} + +template <class T> +/*static*/ T &singleton<T>::instance() +{ + // function-local static to force this to work correctly at static + // initialization time. + static singleton<T> s_oT; + return(s_oT); +} + +} // namespace thread +} // namespace detail +} // namespace boost + +#endif // BOOST_SINGLETON_MJM012402_HPP |