aboutsummaryrefslogtreecommitdiff
path: root/include/EASTL/internal/enable_shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/EASTL/internal/enable_shared.h')
-rw-r--r--include/EASTL/internal/enable_shared.h83
1 files changed, 0 insertions, 83 deletions
diff --git a/include/EASTL/internal/enable_shared.h b/include/EASTL/internal/enable_shared.h
deleted file mode 100644
index ac5f072..0000000
--- a/include/EASTL/internal/enable_shared.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Copyright (c) Electronic Arts Inc. All rights reserved.
-/////////////////////////////////////////////////////////////////////////////
-
-
-#ifndef EASTL_INTERNAL_ENABLE_SHARED_H
-#define EASTL_INTERNAL_ENABLE_SHARED_H
-
-
-#include <EABase/eabase.h>
-#if defined(EA_PRAGMA_ONCE_SUPPORTED)
- #pragma once
-#endif
-
-namespace eastl
-{
-
- /// enable_shared_from_this
- ///
- /// This is a helper mixin class that allows you to make any class
- /// export a shared_ptr instance that is associated with the class
- /// instance. Any class that inherits from this class gets two functions:
- /// shared_ptr<T> shared_from_this();
- /// shared_ptr<T> shared_from_this() const;
- /// If you call shared_from_this, you get back a shared_ptr that
- /// refers to the class. A second call to shared_from_this returns
- /// another shared_ptr that is shared with the first one.
- ///
- /// The trick that happens which is not so obvious here (and which is
- /// not mentioned at all in the Boost documentation of their version
- /// of this) is that the shared_ptr constructor detects that the
- /// class has an enable_shared_from_this mixin and sets up this system
- /// automatically for the user. This is done with template tricks.
- ///
- /// For some additional explanation, see the Boost documentation for
- /// their description of their version of enable_shared_from_this.
- ///
- template <typename T>
- class enable_shared_from_this
- {
- public:
- shared_ptr<T> shared_from_this()
- { return shared_ptr<T>(mWeakPtr); }
-
- shared_ptr<const T> shared_from_this() const
- { return shared_ptr<const T>(mWeakPtr); }
-
- weak_ptr<T> weak_from_this()
- { return mWeakPtr; }
-
- weak_ptr<const T> weak_from_this() const
- { return mWeakPtr; }
-
- public: // This is public because the alternative fails on some compilers that we need to support.
- mutable weak_ptr<T> mWeakPtr;
-
- protected:
- template <typename U> friend class shared_ptr;
-
- EA_CONSTEXPR enable_shared_from_this() EA_NOEXCEPT
- { }
-
- enable_shared_from_this(const enable_shared_from_this&) EA_NOEXCEPT
- { }
-
- enable_shared_from_this& operator=(const enable_shared_from_this&) EA_NOEXCEPT
- { return *this; }
-
- ~enable_shared_from_this()
- { }
-
- }; // enable_shared_from_this
-
-} // namespace eastl
-
-
-#endif // Header include guard
-
-
-
-
-
-