forked from Xeeynamo/sonic-hybrid-rsdk
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
1,367 additions
and
0 deletions.
There are no files selected for viewing
90 changes: 90 additions & 0 deletions
90
...air/build/_xcode/boost.framework/Versions/A/Headers/smart_ptr/enable_shared_from_this.hpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
#ifndef BOOST_SMART_PTR_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED | ||
#define BOOST_SMART_PTR_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED | ||
|
||
// | ||
// enable_shared_from_this.hpp | ||
// | ||
// Copyright 2002, 2009 Peter Dimov | ||
// | ||
// 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/libs/smart_ptr/ for documentation. | ||
// | ||
|
||
#include <boost/smart_ptr/weak_ptr.hpp> | ||
#include <boost/smart_ptr/shared_ptr.hpp> | ||
#include <boost/smart_ptr/detail/sp_noexcept.hpp> | ||
#include <boost/assert.hpp> | ||
#include <boost/config.hpp> | ||
|
||
namespace boost | ||
{ | ||
|
||
template<class T> class enable_shared_from_this | ||
{ | ||
protected: | ||
|
||
BOOST_CONSTEXPR enable_shared_from_this() BOOST_SP_NOEXCEPT | ||
{ | ||
} | ||
|
||
BOOST_CONSTEXPR enable_shared_from_this(enable_shared_from_this const &) BOOST_SP_NOEXCEPT | ||
{ | ||
} | ||
|
||
enable_shared_from_this & operator=(enable_shared_from_this const &) BOOST_SP_NOEXCEPT | ||
{ | ||
return *this; | ||
} | ||
|
||
~enable_shared_from_this() BOOST_SP_NOEXCEPT // ~weak_ptr<T> newer throws, so this call also must not throw | ||
{ | ||
} | ||
|
||
public: | ||
|
||
shared_ptr<T> shared_from_this() | ||
{ | ||
shared_ptr<T> p( weak_this_ ); | ||
BOOST_ASSERT( p.get() == this ); | ||
return p; | ||
} | ||
|
||
shared_ptr<T const> shared_from_this() const | ||
{ | ||
shared_ptr<T const> p( weak_this_ ); | ||
BOOST_ASSERT( p.get() == this ); | ||
return p; | ||
} | ||
|
||
weak_ptr<T> weak_from_this() BOOST_SP_NOEXCEPT | ||
{ | ||
return weak_this_; | ||
} | ||
|
||
weak_ptr<T const> weak_from_this() const BOOST_SP_NOEXCEPT | ||
{ | ||
return weak_this_; | ||
} | ||
|
||
public: // actually private, but avoids compiler template friendship issues | ||
|
||
// Note: invoked automatically by shared_ptr; do not call | ||
template<class X, class Y> void _internal_accept_owner( shared_ptr<X> const * ppx, Y * py ) const BOOST_SP_NOEXCEPT | ||
{ | ||
if( weak_this_.expired() ) | ||
{ | ||
weak_this_ = shared_ptr<T>( *ppx, py ); | ||
} | ||
} | ||
|
||
private: | ||
|
||
mutable weak_ptr<T> weak_this_; | ||
}; | ||
|
||
} // namespace boost | ||
|
||
#endif // #ifndef BOOST_SMART_PTR_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED |
Oops, something went wrong.