32template <
class ObjectType>
37 JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE (
"-Wdeprecated-declarations")
38 JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996)
77 other.object =
nullptr;
82 reset (other.release());
87 inline operator ObjectType*()
const noexcept {
return object; }
88 inline ObjectType* get()
const noexcept {
return object; }
89 inline ObjectType& operator*()
const noexcept {
return *object; }
90 inline ObjectType* operator->()
const noexcept {
return object; }
120 ObjectType* release()
noexcept {
auto*
o = object;
object = {};
return o; }
127 jassert (
object != other.object ||
this == other.getAddress() ||
object ==
nullptr);
129 std::swap (
object, other.object);
132 inline ObjectType* createCopy()
const {
return createCopyIfNotNull (
object); }
138 const ScopedPointer* getAddress()
const noexcept {
return this; }
145 JUCE_END_IGNORE_WARNINGS_MSVC
146 JUCE_END_IGNORE_WARNINGS_GCC_LIKE
150JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE (
"-Wdeprecated-declarations")
151JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4996)
159template <
typename ObjectType1,
typename ObjectType2>
160bool operator!= (ObjectType1* pointer1,
const ScopedPointer<ObjectType2>& pointer2)
noexcept
162 return pointer1 != pointer2.get();
165template <
typename ObjectType1,
typename ObjectType2>
166bool operator== (
const ScopedPointer<ObjectType1>& pointer1, ObjectType2* pointer2)
noexcept
168 return pointer1.get() == pointer2;
171template <
typename ObjectType1,
typename ObjectType2>
172bool operator!= (
const ScopedPointer<ObjectType1>& pointer1, ObjectType2* pointer2)
noexcept
174 return pointer1.get() != pointer2;
177template <
typename ObjectType1,
typename ObjectType2>
178bool operator== (
const ScopedPointer<ObjectType1>& pointer1,
const ScopedPointer<ObjectType2>& pointer2)
noexcept
180 return pointer1.get() == pointer2.get();
183template <
typename ObjectType1,
typename ObjectType2>
184bool operator!= (
const ScopedPointer<ObjectType1>& pointer1,
const ScopedPointer<ObjectType2>& pointer2)
noexcept
186 return pointer1.get() != pointer2.get();
189template <
class ObjectType>
190bool operator== (
decltype (
nullptr),
const ScopedPointer<ObjectType>& pointer)
noexcept
192 return pointer.get() ==
nullptr;
195template <
class ObjectType>
196bool operator!= (
decltype (
nullptr),
const ScopedPointer<ObjectType>& pointer)
noexcept
198 return pointer.get() !=
nullptr;
201template <
class ObjectType>
202bool operator== (
const ScopedPointer<ObjectType>& pointer,
decltype (
nullptr)) noexcept
204 return pointer.get() ==
nullptr;
207template <
class ObjectType>
208bool operator!= (
const ScopedPointer<ObjectType>& pointer,
decltype (
nullptr)) noexcept
210 return pointer.get() !=
nullptr;
215template <
typename Type>
216void deleteAndZero (ScopedPointer<Type>&) {
static_assert (
sizeof (Type) == 12345,
217 "Attempt to call deleteAndZero() on a ScopedPointer"); }
219JUCE_END_IGNORE_WARNINGS_GCC_LIKE
220JUCE_END_IGNORE_WARNINGS_MSVC